Como os drivers para hardware periférico são instalados no Linux?

5

Adquiri um novo teclado sem fio e testei em uma caixa do Windows e do Linux.

Funcionou em ambos, mas com uma diferença inicial - o Windows demorou um ou dois minutos para procurar os drivers do teclado (Logitech) na Internet e instalá-los. Ele avisou visualmente meu de fazer isso e exibiu seu progresso.

No entanto, quando eu o conectei ao meu computador Debian - eu não percebi esse progresso. Além disso, quase imediatamente consegui usá-lo, e não sei como isso funcionou tão rápido.

O Linux está usando uma combinação de um driver genérico de dongle Bluetooth e um driver de teclado genérico?

    
por jcora 09.07.2013 / 22:49

1 resposta

8

Os drivers de hardware do Linux são módulos do kernel. Por causa do modelo de código aberto e licenciamento do kernel, muito poucos deles são escritos por fabricantes de hardware; a maioria deles é engenharia reversa ou baseada em protocolos públicos padronizados. Tenho certeza que o bluetooth está no reino posterior, e também que coisas como mouses e teclados são, na maioria dos casos, totalmente genéricas.

Os módulos são parte integrante da árvore de origem do kernel; Ou seja, se você baixar o código-fonte do kernel do Linux, ele vem com o código para todos os módulos disponíveis. Você não precisa incluir todos eles quando você os construir, é claro.

Linux distros (geralmente) são uma coleção de binários pré-construídos, e isso inclui o kernel. O kernel em si é um binário; módulos podem ser construídos ou binários separados que o kernel pode carregar e descarregar. Uma vez que a construção de todos os módulos disponíveis no único binário resultaria em um kernel enorme e ridículo, e as distribuições querem cobrir o máximo de hardware possível, os pacotes distro do kernel incluem uma ampla variedade de módulos binários individuais.

Você pode ver isso em /lib/modules . Módulos de drivers são registrados com o kernel e construídos ao mesmo tempo; o kernel está ciente do que está disponível no sistema. Quando você conecta um novo hardware, ele se identifica ao sistema e o kernel escolhe um driver apropriado de /lib/modules para carregar.

Você pode ver todos os seus módulos atualmente carregados com lsmod .

    
por 09.07.2013 / 23:09