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 |