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 udev  (1) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux cp  (0) 2018.08.08
Linux kdump  (0) 2018.08.08
  1. 이재봉 2021.04.01 12:46

    혹시 파일명의 제일 앞 숫자는 무엇을 의미하는 건가요???

+ Recent posts