USB 드라이브가 연결되면 어떻게됩니까?


21

커널 공간에서 사용자 공간으로의 USB 이벤트 흐름은 무엇입니까? USB 드라이브를 꽂으면 데스크탑에 팝업이 나타납니다. 새 USB 드라이브를 감지하여 마운트하고 팝업을 표시하는 과정에서 발생하는 일련의 이벤트는 무엇입니까?

답변:


6

이것은 udev최신 Linux 시스템에서 제공됩니다. udev시스템 시작 데몬에서 검색합니다 /etc/udev/rules.d/lib/udev/rules.d커널 이벤트에 대한 일치 규칙을 실행합니다. USB 드라이브를 삽입하면 이벤트가 발생 udev하고 일치하는 규칙을 검색하여 실행합니다.

규칙 자체에 따라 시스템의 기능이 결정됩니다. 최근 udev에는 HUS와 통신하여 DBUS를 통해 응용 프로그램에 경고합니다. 이 접근법은 이제 통합 udev솔루션 을 선호하여 더 이상 사용되지 않으며 직접 또는 dbus-send 를 통한 udevd통신 이 필요 합니다 .dbus

당신의 활동을 모니터링 할 수 있습니다 udev통해를 udevadm monitor.


2

나는 아직 이것에 대해 완전히 확신하지 못하므로 소금 한알과 더 많은 연구로 가져 가십시오.

커널 핫 플러그 ​​서브 시스템으로 시작합니다. 장치를 설정 한 후 핫 플러그 ​​이벤트를 처리하도록 설정된 모든 사용자 공간 프로그램을 호출하거나 (로 설정된 경우 echo hotplug_handler > /proc/sys/kernel/hotplug) kobject_uevent 넷 링크 소켓을 통해 데이터 패킷을 보냅니다. 커널이 핫 플러그 ​​처리기를 시작할 때 일부 환경 변수를 설정합니다. 커널이 데이터 패킷을 보내면 key = value 쌍이 포함됩니다. 원하는 경우 환경을 기록하는 스크립트를 설정하고 처리기 (프로덕션 시스템이 아닌 테스트 설정)로 설정할 수 있습니다.

일반적으로 udev는 핸들러로 설정되며 이벤트 처리 방법에 대한 몇 가지 규칙이 설정됩니다. 여기에서 dbus 메시지 문제와 같은 다른 작업을 수행하는 다른 프로그램을 시작할 수 있습니다. 이 udev 규칙은 특정 관심 분포에 크게 의존합니다.

이 글타래 에는 누군가가 문서를 작성하려고 하는 많은 정보가 있습니다-첫 번째 메시지는 정확하지 않습니다; 계속 읽으세요.


2
옛날 옛적에 이것은 정확했지만 지금은 오래되지 않았습니다. 현대 udev는 netlink 소켓에서 uevents를 청취합니다. (구식은 직렬화 / 동시성 문제가있었습니다.)
ephemient

Linux 의이 부분 ( udev , hotplug )을 처음 사용하기 때문에 여기에서 설명한 모든 줄에 대해 알고 싶습니다. 따라서 커널 핫 플러그 ​​서브 시스템 으로 시작하는 과정을 자세히 설명해 주시겠습니까 ?
Sen

@ephemient : 답장을 보내 주셔서 감사합니다. 사건의 순서를 설명해 주시겠습니까?
Sen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.