como ativar a rede no momento da inicialização no Linux

como ativar a rede no momento da inicialização no Linux

Estou trabalhando em um sistema Linux embarcado, meu objetivo é ativar a interface Ethernet no momento da inicialização. Estou usando o u-boot como bootloader. Passei as variáveis ​​de ambiente ip= e eth= u-boot para o kernel linux como bootargs e configurei o kernel linux como IP:kernel level autoconfiguration , habilitado. No entanto, isso não ativou a interface de rede, como faz "ifconfig eth0 up".

Então, estou me perguntando 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)?

Responder1

Sim, o kernel Linux pode ativar a interface eth0 sem recorrer a scripts de espaço do usuário.
Você pode usar o ip=parâmetro de inicialização do kernel 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, oeth0A interface não pode ser habilitada até que os drivers tenham sido inicializados/instalados (conforme indicado pela liberação da __initseção de 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 ip=parâmetro de inicialização estão emDocumentação/sistemas de arquivos/nfs/nfsroot.txt. Ignore o fato de que o propósito original desse recurso era facilitar um sistema de arquivos raiz em rede.

Passei as variáveis ​​de ambiente ip= e eth= u-boot para o kernel do Linux como bootargs

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

informação relacionada