(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

371. Usando Mais de uma Placa Ethernet por Máquina

ethernet,mais de uma placa por maquina@mais de uma placa por máquina O que precisa ser feito para que o Linux possa usar duas placas Ethernet?

Com o Programa de controle como um Módulo: A maioria das distribuições Linux usam o programa de controle modular agora (ao contrário de ter o programa de controle montado dentro do kernel). No caso de controle de programa PCI, o módulo tipicamente detectará todas as placas instaladas daquele modelo automaticamente. Porém, para as placas ISA, o teste de uma placa não é uma operação segura, e conseqüentemente você precisa fornecer o endereço base de I/O da placa para que o módulo saiba onde procurar. Esta informação fica armazenada no arquivo /etc/conf.modules.

Como exemplo a ser considerado, um usuário que tenha duas placas ISA NE2000, uma a 0x300 e outra 0x240, estas são as linha que deveriam estar em seu arquivo /etc/conf.modules:

alias eth0 ne
alias eth1 ne
options ne io=0x240,0x300

O que isto faz: isto diz que se o administrador (ou o kernel) faz um modprobe eth0 ou um modprobe eth1 então o programa de controle ne.o deve ser carregado tanto por eth0 ou eth1. Além disso, quando o módulo ne.o estiver carregado, ele deve estar carregado com as opções io=0x240,0x300 para que o programa de controle saiba onde procurar as placas. Note que o 0x é importante - coisas como 300h tão comumente usadas no mundo do DOS não funcionarão. Se mudar a ordem do 0x240 e o 0x300 mudará qual placa física termina como eth0 e eth1.

A maioria do programa de controle de módulo ISA pode levar vírgulas múltiplas separadas de valores i/o como deste exemplo para lidar com placas múltiplas. Porém, alguns programas de controle (mais velhos?), tais como o módulo 3c501.o são só capazes de lidar com uma placa por carga de módulo atualmente. Neste caso você pode carregar o módulo duas vezes para conseguir que as duas placas sejam detectadas. O arquivo /etc/conf.modules deste arquivo seria assim:

alias eth0 3c501
alias eth1 3c501
options eth0 -o 3c501-0 io=0x280 irq=5
options eth1 -o 3c501-1 io=0x300 irq=7

Neste exemplo a opção -o foi usada para dar a cada situação do módulo um único, visto que você não pode ter dois módulos carregados com o mesmo nome. A opção irq= também foi usada para especificar a montagem do hardware IRQ da placa (este método pode também ser usado com módulos que aceitam vírgula separadas dos valores i/o, mas é menos eficiente pois o módulo termina sendo carregado duas vezes quando isto não é necessário).

Como último exemplo, considere um usuário com uma placa 3c503 em 0x350e uma placa SMC Elite16 (wd8013) em 0x280. Elas teriam:

        alias eth0 wd
        alias eth1 3c503
        options wd io=0x280
        options 3c503 io=0x350

Para placas PCI, você só precisa das linhas alias para correlacionar as interfaces ethN com o nome do programa de controle apropriado pois as base I/O base de uma placa PCI pode ser seguramente detectada.

Os módulos disponíveis são tipicamente armazenados em /lib/modules/`uname -r`/net onde o comando uname -r dá a versão do kernel (ex. 2.0.34). Você pode dar uma olhada lá para ver qual combina com sua placa. Uma vez que você tenha a montagem correta em seu arquivo conf.modules você pode testar as coisas com:

modprobe ethN
dmesg | tail

onde o `N' é o número da interface Ethernet que você está testando.

Com o Programa de controle Compilado para dentro do Kernel: Se você tiver o programa de controle compilado para dentro do kernel, então os ganchos para as múltiplas placas Ethernet estão todas lá. Porém, note que no momento só uma placa Ethernet é auto-testável para o padrão. Isto ajuda a evitar possíveis travamentos durante a inicialização causados por tentativas de detecção em placas sensíveis.

Existem duas maneiras para capacitar o auto-teste para a segunda (terceira, quarta, etc.) placa. O método mais fácil é passar argumentos em tempo de inicialização para o kernel, o que é feito usualmente pelo LILO. Tentar detectar a segunda placa pode ser conseguido usando um argumento em tempo de inicialização tão simples como ether=0,0,eth1. Neste caso, eth0 e eth1 serão associados na ordem em que as placas forem encontradas na inicialização. Por exemplo, se você quer que a placa em 0x300 seja eth0 e a placa em 0x280 seja eth1 então você poderia usar:

LILO: Linux ether=5,0x300,eth0 ether=15,0x280,eth1

O comando ether= aceita mais que a forma IRQ + i/o + name mostrado acima. Por favor dê uma olhada e, Passando os Argumentos da Ethernet para o Kernel para a sintaxe completa, parâmetros específicos de placas e dicas sobre o LILO.

Estes parâmetros de tempo de inicialização podem ficar permanentes para que você não tenha que redigitá-los toda vez. Veja a opção de configuração `append' no manual do LILO.

A segunda maneira (não recomendada) é editar o arquivo Space.c e substituir a entrada 0xffe0 para o endereço de i/o por zero. A entrada 0xffe0 diz para não ser feita tentativa de detecção neste dispositivo, e substituindo-o por zero habilitará a tentativa de detecção naquele dispositivo.

Note que se você pretende usar o Linux como um roteador entre duas redes, você terá que recompilar o kernel com a opção IP forwarding habilitada. Geralmente um velho AT/286 com alguma coisa como o software kbridge é uma solução melhor.

Se você estiver lendo isto enquanto está conectado na Internet, você pode dar uma olhada no mini - Como Fazer que Donald tem em seu site WWW. Verifiquem Múltiplas Placas Ethernet.


Página seguinte Página anterior Índice