Como Marius diz: o hardware é detectado pelo kernel no momento da inicialização, ou mais tarde, se é "plugável" (USB, etc.). Quando o hardware é reconhecido, o módulo do kernel relacionado (driver) será carregado e, na maioria dos casos, o espaço do usuário será notificado via dbus / udev para determinar o que fazer com esse hardware; O udev tem um conjunto de "regras" que especificam o que fazer com certos tipos de hardware. Por exemplo. "se o hardware detectado for uma impressora USB, adicione-o ao servidor de impressão (CUPS)" é um exemplo de tal regra, e seria algo como isto:
# Low-level USB device add trigger
ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", RUN+="udev-configure-printer add %p"
# usblp device add trigger (needed when usblp is already loaded)
ACTION=="add", KERNEL=="lp*", RUN+="udev-configure-printer add %p"
O acima é parte de /lib/udev/rules.d/70-printers.rules
(pelo menos, em 10.10), que também inclui uma regra para remover a impressora do CUPS se você a desconectar.
BTW: USB classe 7 são impressoras USB .
Em alguns casos, você pode ter que alterar alguns arquivos de configuração, mas isso seria considerado um bug ou uma solução alternativa necessária (alguns hardwares são impossíveis ou difíceis de detectar).