Os drivers de dispositivos estão integrados no Kernel?

1

Eu sei que o kernel usa drivers de dispositivos para interagir com o hardware. Mas os laptops, por exemplo, vêm com todos os tipos de configurações de hardware. No entanto, depois de instalar o Linux, de alguma forma, o kernel consegue funcionar corretamente. Eu não instalei nenhum driver de dispositivo, mas o SO não tem nenhum problema em interagir com o hardware no meu computador. Isto sugere que os drivers de dispositivos usados são embutidos no kernel.

Mas já que os computadores vêm em todos os tipos de configurações, como o kernel tem os drivers de dispositivos para todos eles.

Alguns são integrados e alguns têm que ser instalados posteriormente?
Algum hardware funciona exatamente da mesma maneira, independentemente da compilação? [Eu suponho que todos os teclados possam funcionar da mesma maneira.] Quais são embutidos e quais não são?
Se o kernel pode trabalhar com a minha GPU sem que eu instale nenhum driver de dispositivo, já que obviamente vejo coisas no monitor, então para que serve o driver da nVidia? Adiciona alguma coisa?

    
por RatkinHHK 11.06.2015 / 17:52

1 resposta

1

A maioria dos drivers de hardware está embutida no kernel do linux. É sempre melhor quando eles são. Mas, em alguns casos, você pode ou precisa instalá-los separadamente:

1. O fornecedor de hardware não divulga o protocolo para interagir com o hardware e libera drivers proprietários de código fechado. Neste caso, não há como instalá-los separadamente.

Mas freqüentemente há também drivers alternativos de código aberto criados por engenharia reversa. Esses drivers são integrados ao kernel, mas podem não ser tão bons quanto proprietários.

Exemplo: drivers de vídeo AMD e Nvidia, impressoras Epson e drivers de scanner, etc.

2. O driver de código aberto existe, mas ainda não está integrado ao kernel da linha principal. Ou está integrado a versões instáveis ou não suportado pelas versões do kernel do Ubuntu.

Neste caso, os drivers podem ser obtidos de PPAs ou como código-fonte do github ou de outros lugares.

Exemplo: driver do touchpad Focaltech, driver bluetooth Realtek, etc.

3. Às vezes, existem drivers de código-fonte aberto no kernel da linha principal, mas não funcionam tão bem quanto alguns drivers de código-fonte aberto desenvolvidos pelo fornecedor de hardware ou pela comunidade.

Neste caso, é uma opção para instalar drivers alternativos.

Exemplo: drivers sem fio Realtek.

Se algum de seu hardware não for suportado, é sempre bom denunciá-lo ao launchpad. Alguém cuidará disso e adicionará suporte ao kernel do Linux. Também a cooperação com testes é útil.

Gostaria de adicionar uma nota importante sobre a instalação de drivers autônomos.

Na maioria dos casos, os drivers de hardware são criados e instalados como módulos do kernel.

Se você construir um módulo do kernel a partir do código-fonte, depois que o kernel for atualizado, o módulo não funcionará. Ele é construído para uma versão específica do kernel. Você terá que reinstalá-lo após cada atualização do kernel.

É por isso que é sempre preferível instalar drivers de PPAs com pacotes DKMS ou instalá-los usando DKMS manualmente.

Neste caso, após cada atualização do kernel, o módulo será automaticamente reconstruído e instalado para um novo kernel.

Um exemplo ruim é a instalação de drivers da Nvidia a partir de arquivos .run baixados do site da Nvidia. Neste caso, o driver não está registrado corretamente no DKMS e, após a primeira atualização do kernel, você terá uma tela preta.

Mas você sempre pode colocar todos os drivers da Nvidia como DKMS dos PPAs.

    
por Pilot6 11.06.2015 / 18:12