Linux 시스템이 정상적으로 실행되고 있는 시나리오를 가정해 보겠습니다. 사용자가 나타나고핫스왑USB 저장 장치.
이벤트 순서는 다음과 같습니다.
modprobe는 드라이버를 어디에서 로드합니까? 요청한 장치의 드라이버가 /sys/bus/drivers
modprobe 로드 후 또는 이전에 발견되었습니까?
/sys/
여기서 제가 설정하려는 것은 위 이미지의 항목과 발생한 이벤트 간의 관계입니다.
답변1
uevent 메시지에는 장치에 대한 정보가 포함되어 있습니다(예). 이 정보에는 PCI 및 USB와 같은 버스에 연결된 장치의 등록된 공급업체 및 모델 ID가 포함되어 있습니다. Udev는 이러한 이벤트를 구문 분석하고 고정 형식 모듈 이름을 구성하여 에 전달합니다 modprobe
. modprobe
아래에서 커널을 설치할 때 생성되고 고정 형식 모듈 이름을 실제 드라이버 프로그램 모듈 파일 이름에 매핑하는 /lib/modules/VERSION
이라는 파일을 찾으십시오. depmod.alias
바라보다드라이버 모듈은 자동으로 로드 및 언로드됩니까?프로세스에 대한 자세한 내용 - 이 답변은 modprobe
커널에서 직접 호출하는 초기 단계를 설명하지만 모듈 별칭이 작동하는 방식은 modprobe
변경되지 않았습니다.
당신은 또한 볼 수 있습니다Michael Opdenacker의 강연 "udev를 이용한 핫플러깅"더 많은 예제가 있고 udev를 사용한 장치 관리의 다른 측면을 설명합니다.처음부터 Linux 가이드고정 형식 모듈 이름을 정의하는 방법에 대한 섹션이 있습니다.
modprobe
호출하여 모듈 로드init_module
시스템 호출. 어떤 방식으로든 sysfs와 상호 작용하지 않습니다. 모듈이 로드되면 커널은 에 해당 모듈에 대한 항목을 생성합니다 /sys/module
. sysfs의 다른 곳에 나타나는 모든 항목은 모듈의 코드에 따라 다릅니다(예를 들어 USB 장치 유형 드라이버가 있는 모듈은 아래에 항목을 추가하는 일부 일반 USB 지원 코드를 호출합니다 /sys/bus/usb/drivers
).