Risposte:
Questo è gestito da udevmoderni sistemi Linux. Il udevdemone di iniziare con il sistema cercherà in /etc/udev/rules.de /lib/udev/rules.d, e si svolgerà regole di corrispondenza per gli eventi del kernel. L'inserimento di un'unità USB attiverà un evento, udevcercherà una regola corrispondente e la eseguirà.
Le regole stesse determineranno ciò che fa il tuo sistema. Negli ultimi anni, udevha comunicato ad HAL, che avvisa applicazioni tramite DBUS. Questo approccio è ormai obsoleto a favore di una udevsoluzione unificata , che presumo implicherà la udevdcomunicazione dbusdiretta o tramite dbus-send .
È possibile monitorare le attività di udevvia udevadm monitor.
Non sono ancora completamente sicuro di questo, quindi prendilo con un granello di sale e più ricerca.
Inizia con il sottosistema hotplug del kernel. Dopo aver configurato un dispositivo, chiama qualsiasi programma di userspace sia configurato per gestire gli eventi hotplug (se ne è stato impostato uno echo hotplug_handler > /proc/sys/kernel/hotplug) o invia un pacchetto di dati sul socket netlink kobject_uevent. Quando il kernel avvia il gestore hotplug, imposta alcune variabili di ambiente. Quando il kernel invia un datapacket, include coppie chiave = valore. Se lo desideri, puoi impostare uno script che registra semplicemente l'ambiente e configurarlo come gestore (non sul tuo sistema di produzione, ovviamente - un'installazione di prova).
Di solito, udev è impostato come gestore e disporrà di diverse regole su come gestire gli eventi. Da lì, può avviare altri programmi che fanno altre cose (come emettere messaggi dbus). Queste regole udev dipendono fortemente dalla particolare distribuzione degli interessi.
Ci sono molte informazioni in questo thread in cui qualcuno sta cercando di scrivere della documentazione - nota che il primo messaggio non è accurato; continua a leggere.
udevascolta gli eventi su un socket netlink. (Il vecchio modo aveva problemi di serializzazione / concorrenza.)