Como os drivers do Linux funcionam e onde posso encontrá-los? (especialmente driver da NIC)

10

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

Estou especialmente interessado em aprender sobre o driver da minha placa de rede.

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

    
por Usagi 12.04.2011 / 03:40

3 respostas

5

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

Você pode obviamente sempre olhar para o código-fonte do Linux, mas isso pode ser uma tarefa difícil no começo. No entanto, como acontece com qualquer coisa em drivers Linux são arquivos. Isso significa que outros programas os acessam por meio da 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 do 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 "Hello, Kernel". Pode ser muito mais do que você está pedindo, mas você pode ler os pedaços que lhe interessam. E é grátis. ; P

    
por 12.04.2011 / 04:46
2

Os drivers Linux são construídos com o kernel, compilados ou como um módulo. Como alternativa, os drivers podem ser construídos nos cabeçalhos do kernel em uma árvore de origem. Você pode ver uma lista de módulos do kernel atualmente instalados digitando lsmod e, 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 precisará compilar um módulo do kernel a partir do código-fonte (nos cabeçalhos do seu kernel).

    
por 12.04.2011 / 04:47
1

Na maioria das vezes, se algo como seu NIC não está 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 do Linux tendem a tomar a forma de bibliotecas ou módulos.

    
por 12.04.2011 / 04:21