Isso é realmente duas perguntas:
1) dd
é um aplicativo de usuário normal, assim como cp
. Assim como cp
, ele copia emitindo chamadas de sistema de "leitura", obtendo o resultado e emitindo chamadas de sistema de "gravação". Ao contrário de cp
, você pode definir o tamanho do bloco para dd
, e é por isso que dd
sempre foi usado tradicionalmente para copiar dispositivos de bloco. Mas hoje em dia, cp /dev/sdb /dev/sdc
fará exatamente a mesma coisa que dd
, e igualmente rápido, já que versões modernas de cp
(diferentemente de versões antigas) também sempre lerão e escreverão blocos completos.
Nem o cp
nem o dd
fazem algo especial para obter um "layout de disco" ou algo do tipo, apenas lêem até o sistema operacional sinalizar que estão no final.
2)
once an external drive is attached, the kernel "intercept" this event
O kernel realmente não intercepta esse evento, já que todas as ações no nível do driver já estão acontecendo no kernel. Portanto, quando você conecta um dispositivo USB, o hardware do controlador de host USB percebe isso, gera uma interrupção e o driver do host USB reage a isso e as várias partes da pilha USB começam a enumerar o novo dispositivo, identificam o tipo, identificar potenciais drivers, anexar novos dispositivos de bloco criados por esses drivers, etc.
udev
é apenas um mecanismo para o kernel comunicar esses eventos ao espaço do usuário, de modo que o espaço do usuário pode reagir a eles, por exemplo, criando links simbólicos.
and informs the udev system that is always listening thanks to the udevd daemon.
Udisks is the instance for collecting information about block devices.
udisks
é um demônio da área de trabalho que a área de trabalho usa para obter informações sobre dispositivos de bloco, porque a área de trabalho gosta de fazer tudo no D-Bus. Você realmente não precisa de udisks
se não estiver executando um desktop D-Bus (e, na verdade, ele não roda em algumas de minhas máquinas).
Via d-bus, anyone can connect to udisks and ask what's the current list of devices.
Você pode fazer isso igualmente bem por outros meios, por exemplo, olhando para /dev
ou as informações em /sys
.
Toda a cadeia udev-udisk-Desktop é necessária apenas para que a área de trabalho seja informada quando novos dispositivos de bloco aparecerem ou o estado de alteração de dispositivo de bloco existente, para que a Área de Trabalho possa aparecer janelas extravagantes ou tanto faz. Se você usa o Linux da maneira tradicional e não precisa de uma janela sofisticada quando coloca um pendrive, não precisa disso.