No Linux, a palavra " driver " é usada tanto quanto "módulos do kernel" que suportam determinado hardware.
O suporte a kernel é decidido quando as opções são selecionadas e o kernel é compilado a partir da fonte e vem em dois formulários, estático ou como um módulo carregado dinamicamente. (Monolítico versus micro-kernel)
Um módulo estático é uma parte fixa do kernel e a funcionalidade principal desse kernel e módulo dinâmico pode ser carregada sob demanda para estender a funcionalidade básica.
O nome dos dispositivos de bloco e caractere não é importante, pelo menos para o kernel. É o maior e menor número que instrui o kernel que módulo deve ser usado para acessá-lo. Uma série de números maiores e menores é atribuída estaticamente (verifique Documentation/devices.txt
na fonte do kernel para obter uma lista ), os módulos mais modernos do kernel usam números principais / secundários dinâmicos.
É puramente convencional chamar o primeiro disco SCSI /dev/sda
, mas é o principal e os números usados pelo kernel para selecionar o módulo correto para acessá-lo.
ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Apr 8 2014 /dev/sda
Por exemplo, eu posso acessar o mesmo disco configurando um novo dispositivo com os mesmos números mágicos 8,0 com mknod
mknod /dev/my-first-disk b 8 0
Isso nos aproxima da resposta da sua primeira pergunta: a presença da entrada do dispositivo significa que ela é suportada pelo seu kernel em execução? Não. Com o mknod você pode criar dispositivos com qualquer número e nome maior e menor, mesmo aqueles que não são usados / reservados por nenhum módulo do kernel.
A nuance é que a maioria das pessoas não cria seus próprios dispositivos, mas confiam em udev para fazê-lo dinamicamente eles. Em seguida, a presença de nomes de dispositivos é frequentemente uma indicação de que determinado hardware foi identificado corretamente.
Os módulos dinâmicos carregados atualmente são exibidos com lsmod
, mas o suporte estático requer conhecer as opções de tempo de compilação usadas para criar o kernel, geralmente armazenado em um arquivo chamado /boot/config-<kernel-version>
. O suporte estático está sempre disponível.
Um sistema de arquivos não é um dispositivo, mas uma camada de conversão dos bytes armazenados no dispositivo para os dados utilizáveis. Muito mais aqui