como colocar a rede no boot no linux

5

Eu estou trabalhando em um sistema Linux embutido, meu objetivo é ativar a interface ethernet no momento da inicialização. Eu estou usando o u-boot como bootloader. Eu passei as variáveis de ambiente ip = e eth = u-boot para o kernel do linux como bootargs e configurei o kernel do linux como IP: autoconfiguração do nível do kernel, ativada. No entanto, isso não elevou a interface de rede, como "ifconfig eth0 up".

Então, eu estou querendo saber se é possível instruir o kernel do linux para ativar a interface eth0 sem recorrer a scripts de espaço do usuário (ifup e ifconfig)?

    
por Aymen Abdelhakim 08.11.2012 / 13:35

1 resposta

7

Sim, o kernel do Linux pode ativar a interface eth0 sem recorrer a scripts de espaço do usuário.
Você pode usar o parâmetro de inicialização do kernel ip= para inicializar a interface de rede com um endereço IP estático, por exemplo:

    ip=192.168.1.100:::255.255.255.0:myboard:eth0:on

É claro que a interface eth0 não pode ser habilitada até que os drivers tenham sido carregados (como indicado pela liberação da seção __init da memória).
Aqui está o log do sistema para mostrar quando a interface de rede se torna ativa:

eth0: link down
IP-Config: Complete:
      device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=255.255.255.255,
    host=myboard, domain=, nis-domain=(none),
    bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
Freeing init memory: 564K
remounting / read-write... done.
mounting /proc... done.
mounting /sys... done.
Creating device nodes manually, running /sbin/makenodes-2.6
eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
Done.
mounting /home... MTDSB: dev_name "/dev/mtdblock3"

Detalhes completos sobre a sintaxe do parâmetro ip= boot estão em Documentation / filesystems / nfs /nfsroot.txt . Ignore o fato de que o propósito original desse recurso era facilitar um sistema de arquivos raiz em rede.

I passed ip= and eth= u-boot environment variables to the linux kernel as bootargs

eth= não é um parâmetro de inicialização válido e provavelmente é ignorado pelo kernel.
BTW Se você estiver usando o driver macb.c do Atmel, certifique-se de que o U-Boot instale o endereço MAC do PHY para que isso funcione.

    
por 08.11.2012 / 22:07