Respostas:
Isso é entregue udev
em sistemas Linux modernos. O udev
daemon começou com o sistema irá procurar no /etc/udev/rules.d
e /lib/udev/rules.d
e será executado regras de correspondência para eventos do kernel. A inserção de uma unidade USB acionará um evento, udev
procurará uma regra correspondente e a executará.
As próprias regras determinarão o que seu sistema faz. Nos últimos anos, udev
comunicou-se à HAL, o que alertaria os aplicativos via DBUS. Essa abordagem agora está obsoleta em favor de uma udev
solução unificada , que eu presumo que envolverá a udevd
comunicação via dbus
diretamente ou via dbus-send .
Você pode monitorar as atividades de udev
via udevadm monitor
.
Ainda não estou completamente confiante com isso, então leve-o com um pouco de sal e mais pesquisas.
Começa com o subsistema de hotplug do kernel. Depois que um dispositivo é configurado, ele chama o programa de espaço do usuário configurado para manipular eventos de hotplug (se um tiver sido definido por echo hotplug_handler > /proc/sys/kernel/hotplug
) ou envia um pacote de dados pelo soquete netlink kobject_uevent. Quando o kernel inicia o manipulador de hotplug, ele configura algumas variáveis de ambiente. Quando o kernel envia um pacote de dados, ele inclui pares chave = valor. Se desejar, você pode configurar um script que apenas registre o ambiente e configurá-lo como manipulador (não no seu sistema de produção, é claro - uma configuração de teste).
Normalmente, o udev é configurado como manipulador e terá várias regras de configuração sobre como lidar com eventos. A partir daí, ele pode iniciar outros programas que fazem outras coisas (como emitir mensagens dbus). Essas regras do udev são altamente dependentes da distribuição específica de interesse.
Há muitas informações neste tópico em que alguém está tentando escrever alguma documentação - observe que a primeira mensagem não é precisa; continue lendo.
udev
ouvem eventos em um soquete de netlink. (A maneira antiga tinha problemas de serialização / simultaneidade.)