강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

mknod실무1편: 장치파일(device file)을 만들어 주는 mknod 개론

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

mknod실무1편: 장치파일(device file)을 만들어 주는 mknod 개론

 

 

 

 

 

리눅스에서 시스템에 장착된 여러가지의 장치들을 사용하기 위해서는 해당 장치를 콘트롤 할 수 있는 장치파일이 있어야 한다.

 

 

 

 예를들어 하드디스크의 각 파티션(또는 파일시스템)들을 사용하기 위해서는 /dev/sda1, /dev/sdb1등과 같은 장치파일명으로 이들을 사용한다.

 

 

 

 물론 장치파일들을 지정된 마운트포인트(디렉토리)에 마운트를 해야한다.

 

 

 

 어쨌든 리눅스에서 사용하는 모든 장치들을 장치파일명을 이용하여 핸들링한다.

 

 

 

 그리고 거의 모든 장치들은 시스템 설치당시에 모두 생성되어 마운트까지 되어있기 때문에 웬만해서는 별도의 장치파일을 만들 필요가 없다.

 

 

 

 드문 경우이기는 하지만 시스템관리자가 직접 장치파일을 생성해 주어야 할 때가 있다.

 

 

 

 이때 사용하는 방법이 mknod라는 것이다.

 

 

 

 따라서 우리는 이번 강좌에서 시스템관리자가 장치파일을 직접 만들어 사용할 수 있는 mknod에 대해서 배워보도록 할 것이다.

 

 

 

 

 

그렇다면 장치파일들은 도대체 왜 만들었고, 어디에서 사용하는가에 대한 mknod의 원초적인 질문을 가져보자.

 

 

 

리눅스커널이 시스템에 장착되어 있는 모든 장치를 조작할 때에는 반드시 장치파일을 통하여 조작한다.

 

 

 

 예를들어 새로운 하드디스크를 장착하였을 경우에 이 새로운 하드디스크를 사용하기 위해서는 새로운 하드디스크에 연결된 장치파일이 있어야 하고, 그 장치파일을 특정 위치(마운트포인트)에 마운트를 시켜야만 한다.

 

 

 

 이 때 사용되는 것이 우리가 지금 생성한 장치파일들이다.

 

 

 

 하지만 거의 대부분의 장치를 위하여 /dev디렉토리에는 이미 장치파일들을 생성해두고 있다.

 

 

 

 따라서 우리는 대부분의 경우 이미 /dev디렉토리에 생성되어 있는 장치를 사용하기만 하면 된다.

 

 

 

 하지만 존재하지 않는 장치파일 또는 나만의 장치파일을 새로 만들어서 사용하고자 할 경우에 mknod로 장치파일을 만들어서 새로운 장치와 연결하여 사용하는 것이다.

 

 

 

이제, mknod의 사용목적에 대해서 이해했으리라 생각한다.

 

 

 

 

 

간단하게 mknod에 대해서 정리하면 다음과 같다.

 

 

 

 mknod FIFO, Block 또는 Character 특수파일, 즉 장치파일(Device File)을 만들 때 사용하는 명령어이다.

 

 

 

 일반적으로 블록디바이스, 문자디바이스라고하는 파일을 생성할 때 사용하는 명령어로서 리눅스시스템에 새로 장착되는 하드웨어의 장치파일생성시에 주로 사용한다.

 

 

 

 

 

파일생성시의 초기 퍼미션은 0644이며, p FIFO파일, b Block 특수파일, c u Character 특수파일을 각각 의미한다.

 

 

 

 또한 장치파일에는 주번호(Major Number)와 부번호(Minor Number)가 필요하며 장치파일생성시에 지정해줘야 한다.

 

 

 

 

 

/dev디렉토리에 존재하는 장치파일들을 확인해보면 이미 존재하거나 사용중인 장치파일들은 약 300개이상된다.

 

 

 

 물론 배포판마다 개수가 다르고 동일한 배포판일지라도 설치방법에 따라서 그 개수는 차이가 많다.

 

 

 

 

 

 

대부분의 경우에는 mknod명령어를 이용하여 특수파일을 생성할 필요가 없지만, /dev에 생성되어 있지않은 특수파일이 필요할 경우에는 mknod를 사용하여 장치파일을 생성할 수 있다.

 

 

 

 그리고 mknod로 특수파일을 생성할 경우에는 그 위치를 /dev내에 하는 것이 좋다.

 

 

 

 물론, 다른 위치에서도 생성은 가능하지만 리눅스시스템에서 장치파일들은 모두 /dev내에 존재하기 때문이다.

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  143 명