728x90
반응형
udev


◆ 장치 드라이버와 연계해서 동작하며 노드를 만들라는 요청을 받으면 적절한 위치에 파일을 만든다 (하드디스크의 파일시스템들은 고유 ID로 식별)

◆ udev를 사용하므로써 가장 큰 장점은 해당 장치가 연결될 때에만 노드 파일을 생성하도록 만들 수 있다는 점 (동적으로 지원)

◆ 장치를 제거하면 관련된 노드 파일도 같이 제거되기 때문에 /dev 디렉터리에 불필요한 파일들을 가지고 있지 않아도 된다

◆ 시스템 리소스를 파일로 표현하여 제공하며 H/W는 물론 논리적인 시스템 리소스 전반을 파일로 표현한다

◆ /proc, /dev/, /sys 내에 디바이스 파일이나 프로세스와 관련된 파일, 시스템 리소스를 표현하는 파일의 위치이다

◆ 리눅스는 사용자 공간과 커널 공간이 가상주소를 기반으로 분리된 시스템 구조이다. 이에 Application이나 커널은 서로 직접적인 접근이 불가능하다. udev는 Application을 위한 인터페이스 도구이기도 하다

◆ Application이 커널의 리소스를 사용하기 위해서는 S/W 인터럽트인 System Call로 커널의 작업 수행을 요청하는 구조를 제공한다

◆ udevd (데몬) : 사용자공간에서 동작하는 가상 /dev 관리

◆ udevadm (관리명령어) : 진단 정보 출력을 위해 사용

◆ libudev (라이브러리) : 장치 정보 접근시 사용





udev의 특징 및 구동원리


◆ hotplug

- udev 는 hotplug 서브시스템의 일부로 장치가 시스템에 추가되거나 제거되면 hotplug가 udev를 호출

- udev 는 hotplug 이벤트를 받아 sysfs 에서 필요한 정보를 얻어 /dev 아래에 장치 파일 생성



1. 리눅스 부팅 시 init 의 실행 시 /sbin/init 프로세스가 /etc/inittab 로딩 후 각 스크립트 등을 실행

2. 이 때 sysfs 를 /sys 로 마운트하여 udev(udevd) 데몬이 동작 (각 rules 파일들을 읽고 메모리에 규치사항들을 저장)

3. udev 데몬이 실행 된 후 시스템에서 디바이스 노드 생성

4. 실제 디바이스가 detect(발견)되면 sysfs 에 등록되고 해당 디바이스는 사용자 공간에서 /sys에 등록

5. udev 데몬으로 netlink socket 을 이용하여 새로운 디바이스가 생성되었다는 메시지를 전송

6. udev 데몬은 /sys의 디바이스 내용 (Major, Minor 번호 및 생성할 디바이스 파일의 이름 등) 을 이용해서 /dev 에 디바이스 노드를 생성

※ 등록된 장치에서 변화(연결/해제 등)가 발생되면 kernel에서 event(uevent)를 보내주게 되며, udevd 데몬이 메모리상의 규칙사항을 실행





udev 구성


◆ udev와 연관된 내용들은 /etc/udev 디렉터리 아래에 존재하며 아래와 같이 구성




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


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



- 기본적인 콘솔과 루프백 장치, 병렬포트 등등에 대한 노드를 부팅되면서 만들도록 하고 있다.  

- 각 규칙은 숫자와 파일 이름 형태로 표현되면 생설될 노드 이름, 권한, 소유자 및 그룹 정보, 새 장치가 나타날 때 실행될 명령어등을 설정할 수 있다.


◆ 그외의 장치들은 /etc/udev/rules.d/ 디렉토리에 설정



-  ruels.d 규칙을 사용해 새 파일을 추가하는 방법을 결정하고자 한다면 숫자와 파일 이름 형태로 되어 있는 파일을 만들고 적절한 내용을 구성하면 된다





udev 장치 맵퍼의 규칙 (RHEL 6 Version)








udev 활용 예제 (USB 연결)


◆ USB 자동인식

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




2. 이렇게 되면 sda1이라는 장치가 연결될 때, memory_stick 노드를 만들고 usb_stick 심볼릭 링크를 생성한다
 

3. 이 정보가 반영될 수 있도록 시스템을 리부팅한 후 usb 메모리 스틱을 연결한 후 /dev/ 디렉토리를 살펴보면 memory_stick 파일이 생긴걸 볼 수 있다

(만약 보이지 않는다면, 메모리 스틱이 sdb1인지 아니면, 다른 장치로 인식되고 있는지를 살펴본다)



◆ USB 연결시 특정파일이 자동 실행



- ACTION : 이벤트가 발생 했을 때

- KERNEL,SUBSYSTEM... : udevadm info를 이용하여 해당 usb를 삽입 한 후 정보를 확인 해보고 알맞는 정보를 사용 하면 된다

- RUN : 해당 상태가 맞으면 실행되는 스크립트

(Action은 해당 이벤트가 발생하였을때 KERNEL이 sdxx이면 /tmp/usb_start.sh를 실행하라는 의미)





부팅 중 Start udev 에서 Hang이 걸릴때


◆ grub 명령어 입력 또는 /etc/grub.conf 파일 수정

clocksource=acpi_pm


◆ 복구모드 

1. boot rescue CD (부팅 CD로 복구모드)

2. cd mnt/sysimage/etc/udev/rules.d/

3. mkdir notworking

4. mv *.rules notworking/

5. reboot 
반응형

'Linux' 카테고리의 다른 글

Linux vmstat  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux cp  (0) 2018.08.08
Linux kdump  (0) 2018.08.08

+ Recent posts