No momento da inicialização do sistema, o código da Ethernet tentará localizar a placa e determinar seu tipo. Elas são analisadas para os seguintes endereços e na seguinte ordem:
Placa | Endereços testados |
WD/SMC | 0x300, 0x280, 0x380, 0x240 |
SMC 16 Ultra | 0x300, 0x280 |
3c501 | 0x280 |
3c503 | 0x300, 0x310, 0x330, 0x350, 0x250, |
0x280, 0x2a0, 0x2e0 | |
NEx000 | 0x300, 0x280, 0x320, 0x340, 0x360 |
HP | 0x300, 0x320, 0x340, 0x280, 0x2C0, |
0x200, 0x240 | |
DEPCA | 0x300, 0x320, 0x340, 0x360 |
Existem duas limitações para o código de teste automático de placas de rede. Primeiro, ele não pode reconhecer todas as placas corretamente. Isto é especialmente verdade para algumas das cópias mais baratas de placas comuns, mas também para algumas placas WD80x3. O segundo problema é que o kernel não executa o teste automático para mais de uma placa ao mesmo tempo. Isto é na verdade uma funcionalidade, pois ele supõe que se quer ter controle sobre qual interface é atribuída à determinada placa.
Caso se esteja usando mais de uma placa, ou se o teste automático falhar na detecção da placa, há que explicitar para o kernel, o endereço base da placa e o seu nome.
Na Net-3, podem ser utilizados dois esquemas diferentes para realizar isto. Uma forma é mudar ou adicionar informações ao arquivo drivers/net/Space.c que contém o código fonte do kernel, o qual contém todas as informações necessárias sobre os programas de controle de dispositivos. Isto é recomendado somente quando se está familiarizado com o código de rede. Um modo muito mais indicado é fornecer ao kernel esta informação no momento da inicialização do sistema. Caso se esteja utilizando o utilitário lilo para iniciar o sistema, é possível passar parâmetros para o kernel, utilizando-se a opção append no arquivo lilo.configuração. Para passar as informações para o kernel sobre um dispositivo Ethernet, devem ser informados os seguintes parâmetros:
Os primeiros quatro parâmetros são numéricos, enquanto o último é o nome do dispositivo. Todos os valores numéricos são opcionais. Caso eles sejam omitidos ou ajustados para zero, o kernel tentará detectar o valor através de testes automáticos ou utilizará um valor padrão.
O primeiro parâmetro configura o IRQ atribuído ao dispositivo. Por definição, o kernel tentará detectar automaticamente o canal IRQ. O driver 3c503 tem um recurso especial que seleciona um IRQ livre da lista 5, 9, 3, 4 e configura a placa para o uso nesta linha.
O parâmetro endereço_base fornece o endereço base de entrada e saída da placa. Um valor zero indica ao kernel a necessidade de execução de testes para obtenção destes valores.
Os dois parâmetros restantes devem ser usados de modo diferente por diferentes programas de controle de dispositivos. Para placas com memória compartilhada tal como a WD80x3, eles especificam os endereços de início e fim da área da memória compartilhada. Outras placas geralmente usam param1 para ajustar o nível de depuração de informação que está sendo indicado. Valores de 1 até 7 denotam aumentos nos níveis de apresentação de mensagens , enquanto que o valor 8 desliga-os completamente. O padrão é igual a 0 (zero). O driver 3c503 usa param2 para selecionar o transceptor interno (padrão) ou externo (de valor 1). O primeiro indica um conector de placa BNC, o último indica uma porta AUI.
Caso estejam presentes duas placas Ethernet, pode-se ter uma placa detectada automaticamente pelo e passar os parâmetros da segunda placa com lilo. No entanto, é necessário certificar-se que o programa de controle de dispositivos não tenha encontrado acidentalmente a segunda placa ao invés da primeira, pois neste caso a segunda não será configurada. Pode-se fazer isso configurando a opção lilo reserve, a qual indica ao kernel claramente que evite testar o espaço de Entrada e Saída utilizado pela segunda placa. Por exemplo , para fazer o instalar uma segunda placa Ethernet em 0x300 como eth1, deve-se informar os seguintes parâmetros para o kernel:
A opção reserve garante que nenhum programa de controle de dispositivo utilize o espaço de entrada e saída da placa em testes de detecção automática de dispositivos. Pode-se também usar parâmetros do kernel para que não seja executado o teste automático para eth0:
Para desabilitar o teste automático completamente, pode-se especificar um argumento endereço_base igual a -1: