'usb'에 해당되는 글 1건

  1. 2008/01/29 udev 이용하기

udev 이용하기

Linux/Admin 2008/01/29 16:06
리눅스 커널 2.4까지는 등록된 문자 또는 블럭 디바이스에 대한 노드를 직접 만들어야 했다. 특히, 등록되는 디바이스가 임의의 번호를 할당 받는 경우에는 드라이버를 올린 후에 mknod 명령을 사용해서 노드를 만들어 줘야 하는 불편이 있었다.

이러한 불편을 없애기 위해 2.6에 등장한 것이 udev(userspace device)이다. 이것은 디바이스 드라이버와 연계해서 동작하며, 디바이스 드라이버에서 노드를 만드라는 요청을 받으면 적절한 위치에 화일을 만들게 된다.

간단한 경우에는 udev의 설정을 건드리지 않고 바로 사용해도 되지만, 원한다면 여러가지 설정을 통해 노드를 만드는 방식을 수정할 수있다.

udev를 사용하므로써 생기는 가장 큰 장점은 바로 해당 장치가 연결될 때에만 노드 파일을 생성하도록 만들 수 있다는 점이다. 장치를 제거하면 관련된 노드 파일도 같이 제거되기 때문에 /dev 디렉토리에 불필요한 파일들을 가지고 있지 않아도 된다는 큰 장점이 있다.

udev와 연관된 내용들은 /etc/udev 디렉토리 아래에 존재한다. /etc/udev 디렉토리를 보면 다음과 같이 구성되어 있다.

[root@localhost udev]# ls
makedev.d  rules.d  udev.conf


udev.conf는 기본적인 설정을 할 수 있는 파일이다.

makedev.d 디렉토리는 부팅된 다음에 바로 생성되어야 하는 디바이스 노드들을 나타낸다.

[root@localhost makedev.d]# ls -la
total 32
drwxr-xr-x 2 root root 4096 2007-11-23 17:39 .
drwxr-xr-x 4 root root 4096 2008-01-28 18:07 ..
-rw-r--r-- 1 root root                207 2007-10-19 04       :56 50-udev.nodes
-rw-r--r-- 1 root root    5 2006-01-15 19:16 99-fuse.nodes
[root@localhost makedev.d]# cat 50-udev.nodes
# These device have to be created manually
tty1
tty2
tty3
tty4
tty5
tty6
loop0
loop1
loop2
loop3
loop4
loop5
loop6
loop7
parport0
parport1
parport2
parport3
net/tun
ppp
console
null
zero
lp0
lp1
lp2
lp3
[root@localhost makedev.d]# cat 99-fuse.nodes
fuse


기본적인 콘솔과 루프백 장치, 병렬포트 등등에 대한 노드를 부팅되면서 만들도록 하고 있다. 그외의 장치들은 /etc/udev/rules.d/ 디렉토리에 설정하면 된다. 각 규칙은 숫자와 파일 이름 형태로 표현되면 생설될 노드 이름, 권한, 소유자 및 그룹 정보, 새 장치가 나타날 때 실행될 명령어등을 설정할 수 있다.

[root@localhost rules.d]# pwd
/etc/udev/rules.d
[root@localhost rules.d]# ls
05-udev-early.rules    60-openct.rules                    80-drivers.rules
10-libifp.rules        60-pcmcia.rules                    85-pcscd_ccid.rules
40-alsa.rules          60-persistent-input.rules          85-pcscd_egate.rules
40-multipath.rules     60-persistent-storage.rules        90-alsa.rules
40-redhat.rules        60-persistent-storage-tape.rules   90-hal.rules
50-udev-default.rules  60-wacom.rules                     91-cyberjack.rules
51-vdr.rules           61-persistent-storage-edd.rules    95-pam-console.rules
55-hpmud.rules         64-device-mapper.rules             95-udev-late.rules
60-cdrom_id.rules      64-md-raid.rules                   97-bluetooth.rules
60-libmtp.rules        70-persistent-cd.rules             99-fuse.rules
60-libnjb.rules        70-persistent-net.rules            xen-backend.rules
60-libsane.rules       75-cd-aliases-generator.rules
60-net.rules           75-persistent-net-generator.rules


만약 ruels.d 규칙을 사용해 새 파일을 추가하는 방법을 결정하고자 한다면 숫자와 파일 이름 형태로 되어 있는 파일을 만들고 적절한 내용을 구성하면 된다. 가장 간단히 해볼 수 있는 usb 장치를 예로 들어서 살펴보자.

usb 장치의 경우에는 sd로 장치명이 시작된다. 여기에서는 sdb로 연결되는 경우를 보겠다. 99-my_usb.rules 라는 파일을 만들고 다음과 같이 내용을 넣는다.

KERNEL=="sdb1",  NAME="memory_stick", SYMLINK="usb_stick"

이렇게 되면 sda1이라는 장치가 연결될 때, memory_stick 노드를 만들고 usb_stick 심볼릭 링크를 생성한다. 이 정보가 반영될 수 있도록 시스템을 리부팅한 후 usb 메모리 스틱을 연결한 후 /dev/ 디렉토리를 살펴보면 memory_stick 파일이 생긴걸 볼 수 있다. 만약 보이지 않는다면, 메모리 스틱이 sdb1인지 아니면, 다른 장치로 인식되고 있는지를 살펴본다.
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Linux > Admin' 카테고리의 다른 글

udev 이용하기  (0) 2008/01/29
Posted by 성주

트랙백 주소 :: http://kernelstudy.net/trackback/19

댓글을 달아 주세요