modprobe는 udev가 요청한 드라이버를 어디에서 로드합니까?

modprobe는 udev가 요청한 드라이버를 어디에서 로드합니까?

Linux 시스템이 정상적으로 실행되고 있는 시나리오를 가정해 보겠습니다. 사용자가 나타나고핫스왑USB 저장 장치.

이벤트 순서는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

modprobe는 드라이버를 어디에서 로드합니까? 요청한 장치의 드라이버가 /sys/bus/driversmodprobe 로드 후 또는 이전에 발견되었습니까?

/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).

관련 정보