Linux, 장치파일 직접 생성하기(mknod)

Posted by 알거없어요
2014. 12. 8. 19:58 Programming/ubuntu

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

하드디스크의 경우 /dev/sda, /dev/sda1등과 같은 장치명을 사용한다.

리눅스에서는 시스템에 설치된 장치들을 이 장치파일을 이용하여 핸들링한다거의 모든 장치들은 시스템 설치당시에 모두 생성되어 마운트까지 되어있기 때문에 왠만해서는 별도의 장치파일을 만들 필요가 없다.

하지만 드문 경우로 시스템관리자가 직접 장치파일을 생성해줘야 할경우가 있는데 이때 사용하는 명령어가 mknod라는 명령어이다.

/dev 디렉토리내에 있는 파일들은 거의 장치파일이라고 보면 된다.

 

mknod라는 명령어는 장치파일(FIFO, Block, Character)을 만들때 사용하는 명령어이다.

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

 

-. 장치파일생성시 유의사항

파일생성시 초기 퍼미션 = 0644

p = FIFO파일

b = Block특수파일

c,u = Character특수파일

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

 

-. mknod를 이용한 장치파일 직접생성하기

형식 : mknod ([옵션]) [장치명] [타입] ([주번호 부번호])

[타입]에는 "b", "c" 또는 "u"가 설정되며블록장치파일 또는 문자장치파일을 생성할때 반드시 주번호와 부번호를 지정한다.

하지만 [타입] "p"를 지정하여 FIFO파일을 생성할때에는 주번호와 부번호를 생략할수 있다.

 

ex)

[root@os2 ~]# mknod /dev/testdevice01 c 3 10

[root@os2 ~]# ls -l /dev/testdevice01

crw-r--r-- 1 root root 3, 10 2013-01-12 08:19 /dev/testdevice01

퍼미션이 0644임을 알수 있으며명령어를 자세히 보면

mknod : 장치파일명령어

/dev/testdevice01 : 생성할 장치파일의 위치와 장치파일명

c : charcter특수파일

3 : Major Number

10 : Minor Number

위와 같이 지정한것을 알수 있다.

 

-. 퍼미션을 지정하여 장치파일생성(-m옵션)

[root@os2 ~]# mknod -m 0755 /dev/testdevice02 b 6 12

[root@os2 ~]# ls -l /dev/testdevice02

brwxr-xr-x 1 root root 6, 12 2013-01-12 08:22 /dev/testdevice02

-m옵션을 이용하여 기본퍼미션이 아닌 직접 퍼미션지정을 하여 장치파일을 생성하였다.

mknod : 장치파일명령어

-m 0755 : 생성되는 장치파일의 퍼미션지정(0755)

/dev/testdevice02 : 생성할 장치파일의 위치와 장치파일명

b : Block특수파일

6 : Major Number

12 : Minor Number

'Programming > ubuntu' 카테고리의 다른 글

repo 명령어  (0) 2014.12.11
ubuntu - 추가 사용자 계정에 root권한 주는 방법  (0) 2014.12.11
grep에서 원치 않는 결과 빼고 보기  (0) 2014.12.08
grep 의 간단한 사용법  (0) 2014.12.08
루트 권한 사용하기  (0) 2014.12.08