Como os drivers do Linux funcionam e onde os encontro? (especialmente driver NIC)

11

Eu estou querendo saber como um driver funciona no Linux. Os drivers são um único arquivo que pode ser editado? Existe uma lista de drivers atuais em uso ou existe um local diferente para encontrá-los para cada dispositivo?

Estou especialmente interessado em aprender sobre o driver do meu adaptador de rede.

Se você souber onde está uma boa documentação, eu adoraria ler isso também.

Usagi
fonte

Respostas:

6

Os drivers são muito semelhantes a qualquer outro programa, podem ser compostos por vários arquivos de origem. Os drivers de dispositivos Linux podem ser compilados diretamente no kernel ou em um módulo do kernel. Os módulos do kernel têm o benefício de poder ser carregado dinamicamente (ou seja, você não precisa compilar um novo kernel para usá-los).

Obviamente, você sempre pode olhar para o código-fonte do Linux, mas isso pode ser uma tarefa assustadora a princípio. No entanto, como em qualquer coisa nos drivers do Linux, existem arquivos. Isso significa que outros programas os acessam via interface VFS. Por exemplo, você pode controlar o CDROM por meio de ioctl()chamadas usando seu arquivo de dispositivo.

Eu recomendo verificar os drivers de dispositivo Linux . Está disponível gratuitamente e responderá às suas perguntas. Em particular, você pode ler o capítulo 2, que mostra como criar um módulo simples "Olá, Kernel". Pode ser muito mais do que você está pedindo, mas você pode ler os trechos que lhe interessam. E é grátis. ; P

Mr. Shickadance
fonte
3

Os drivers do Linux são construídos com o kernel, compilados ou como um módulo. Como alternativa, os drivers podem ser criados nos cabeçalhos do kernel em uma árvore de origem. Você pode ver uma lista dos módulos do kernel atualmente instalados digitando lsmode, se instalado, dê uma olhada na maioria dos dispositivos conectados através do barramento usando lspci.

Se a versão atual do kernel não tiver suporte de driver para sua NIC, você precisará encontrar drivers no fornecedor e compilar um módulo de kernel a partir da fonte (nos cabeçalhos do seu kernel).

Sean C.
fonte
1

Na maioria das vezes, se algo como sua placa de rede não estiver aparecendo automaticamente, você precisa ir ao site do fabricante do hardware e verificar se eles têm uma versão linux.

Em termos mais gerais, os drivers Linux tendem a assumir a forma de bibliotecas ou módulos.

Rfelsburg
fonte