Udev/ko

udev는 리눅스 커널용 장치 관리자입니다. 의 장치 노드를 관리하며 장치를 추가하고 제거할 때 모든 사용자 공간 처리 동작을 관리합니다. 이 글의 독자 여러분은 udev의 포크 버전인 eudev도 살펴보셔야 합니다.

The package is used as the default device manager for Gentoo systems using the OpenRC init system, independently of systemd.

커널
에서는 다음 커널 옵션이 필요합니다:

USE 플래그
포티지는 다른 꾸러미에서 udev 기능을 지원하는  전역 USE 플래그를 인지합니다. 이 USE 플래그 값을 USE 플래그 목록에 추가(모든 리눅스 프로파일 기본값)하면 꾸러미를 자동으로 끌어옵니다:

Emerge
USE 변수를 설정한 후, 시스템을 업데이트하여 바뀐 설정을 적용하십시오:

서비스
부팅 시간에 udev를 시작하려면 sysinit 런레벨에 추가하십시오. 다음 명령을 루트 권한으로 실행하면 처리할 수 있습니다:

규칙
udev에서는 uevents(커널에서 보낸 이벤트)에서 내보낸 값과 발견한 장치의 속성에 일치하는 규칙 모음을 제공합니다. 일치하는 규칙은 아마도 이름일 것이며, 장치 노드를 만들고, 장치를 설치하고 설정할, 조건을 미리 갖춰놓은 프로그램을 실행합니다.

정의 규칙은 다음 두군데에 저장합니다:


 * 1)  - 이 디렉터리의 규칙은 각각의 꾸러미가 설치하며, 보통 사용자가 바꾸어선 안됩니다.
 * 2)  - 이 폴더에는 최종 사용자가 설정한 규칙이 있습니다. 어떤 새로운 규칙이든 이 디렉터리에 추가해야합니다.

이 디렉터리에서 (로 끝나는) 여러 규칙 파일은 알파벳 및 숫자 순서대로 확인합니다. 규칙 파일 안에서 udev는 uevent와 상태가 일치(장치를 추가하거나 제거하기 때문에 uevent가 됩니다)하는 조건 설정과 실행할 명령을 찾습니다.

이벤트 비교는 다음과 같은 정보를 기반으로 합니다:


 * uevent SUBSYSTEM (uevent의 어떤 형식의 장치를 실행했는가)
 * 취한 ACTION (추가, 변경, 제거)
 * 장치 클래스, 제조사, 다른 장치 정보 등의 하나 이상의 속성(ATTR 또는 ATTRS)
 * sd* (SCSI/SATA 디스크) 또는 input* (마우스, 키보드 같은 입력 장치)과 같은 커널 제공 이름 (KERNEL),
 * 여러 규칙에 정보를 보낼 때 활용할 하나 이상의 환경 변수 설정(ENV)

이 정보를 기반으로 다음의 조건에 따라, 규칙을 세울 수 있습니다:


 * 1) 일부 정보는 (환경 변수로)최종 이벤트와 공유해야 합니다
 * 2) 에 링크를 만들어야 합니다
 * 3) 명령을 실행해야 합니다

udev는 유연한 장치 관리 방식을 허용하는 모든 규칙(첫번째 일치 요소가 있다고 해서 멈추진 않음)에 대해 이러한 동작을 수행합니다.

영속 장치 이름
커널은 장치를 순차적으로 발견하고 udev는 커널의 sysfs 파일 시스템을 미러링하며, 장치에 이름과 숫자를 발견한 순서대로 부여합니다. 따라서 기본적으로 udev에서는 비영속적 장치 이름을 제공합니다. 허나 일부 장치 클래스에 대한 기법에는 다음과 같은 특징이 있습니다:


 * udev는 장치 ID, label, UUID, 경로를 기반으로 저장장치 추가 심볼릭 링크를 만듭니다. 디렉터리를 살펴보십시오. 따라서, 장치 파일  을 사용하는 대신  파일을 활용합니다.


 * 디렉터리의 입력 장치는 동일합니다.


 * 사용자 규칙을 활용은 사용자로 하여금 자체 장치 파일을 만들 수 있습니다.

Use new predictable network interface naming
The new network interface naming convention is not the same. So the symlinks used by netifrc will need to be re-linked. Use as a link target for whatever interface names need to be added. Be sure to replace   in the commands below with the Ethernet interface names present on the system. It is possible to discover which interfaces exist by running the command:

Create a symbolic link for the existing interfaces in the directory:

Edit with any necessary configuration for all interfaces.

Add the script(s) to the default runlevel to have the interface(s) start automatically:

Optional: Disable or override predictable network interface naming
Network device names such as  or   as provided by the kernel are normally changed on system boot (see ) by the  udev rule and the NamePolicy in.

This behavior may be disabled in several ways:


 * 1) Symlink  to :.
 * 2) Create a lower-numbered .link file in  which assigns a different name to the interface.
 * 3) Pass   on the kernel command line.

Reference: https://systemd.io/PREDICTABLE_INTERFACE_NAMES/

사용법
몇가지 쓸모있는 명령이 있습니다.


 * udev 활동을 감시합니다:




 * 주어진 장치에 대한 모든 메시지를 보여줍니다;




 * Show udev info about a given sys path device file (might be obtained via ):




 * 이더넷 장치에 영속 명칭을 할당하십시오:




 * After changing a rules file in, either reboot or make udev reload them with:




 * For already added devices (plugged USB, etc.), the reloaded rules take effect either after changing the device (replugging USB, etc.) or by making udev request kernel events again via . Various event actions can be triggered. By default, the change event action is triggered:



더 많은 정보는 udevadm 맨 페이지en 를 참고하십시오

감시 메시지 기록
를 실행할 때 모든 메시지를 기록하려면 다음 설정 파일을 수정하십시오:

에 새 로그 파일을 만듭니다

디버깅 모드
디버깅 모드를 활성화하면 더 많은 기록 메시지를 출력합니다:

기록 우선순위를 설정하십시오:

기록 파일을 만들겠지만 어떤 메시지도 기록하지 않습니다. 최근의 udev 버전에서는 에 모든 메시지를 기록합니다.

과 장치가 빠졌다고 합니다
일부 udev 버전에서는 udev가 제대로 동작하려면 과 이 필요합니다. 그러나 자체적으로 만들 수는 없습니다. 이 파일을 직접 만들려면 루트 권한으로 다음 명령을 실행하십시오:

NIC에 eth0을 할당했는데 eth1으로 바뀌네요
메인 보드에 네트워크 카드가 둘 있는 상황은 에서 eth0 또는 eth1을 보여주지 못하는 상호아에 갈 수도 있습니다. 는 eth0으로 발견한 NIC 카드를 보여주고 그 다음 eth1으로 옮깁니다. 를 실행하면 NIC를 eth1으로 보여줍니다. 이러한 현상은 처음에 커널에서 부여한 이름 때문에 일어납니다. 사용자는 lan0 또는 wireless0 처럼 자유로운 이름을 사용하거나 (udev 197 버전부터 기본값으로 활성화한) 유추 가능 인터페이스 이름을 사용하도록 와 같은 개별 설정 규칙 파일을 작성해야 합니다.

또한 이전 버전의 udev에 있던 오래된 파일의 제거를 잊지 마십시오.

또는 커널 명령행에  키 값을 전달했는지 확인하십시오. 이 설정은 udev의 추정 가능한 장치 명칭을 설정하는 기능을 끕니다.

추가 참조
eudev - 젠투에서 관리하는 udev 포크 버전.

외부 자료
- 기본 virtual/udev 제공 대상을 sys-fs/eudev로 바꿈