So aktivieren Sie das Netzwerk beim Booten in Linux

So aktivieren Sie das Netzwerk beim Booten in Linux

Ich arbeite an einem eingebetteten Linux-System. Mein Ziel ist es, die Ethernet-Schnittstelle beim Booten zu aktivieren. Als Bootloader verwende ich u-boot. Ich habe die u-boot-Umgebungsvariablen ip= und eth= als Bootargumente an den Linux-Kernel übergeben und den Linux-Kernel als IP: Autokonfiguration auf Kernelebene, aktiviert konfiguriert. Dadurch wurde die Netzwerkschnittstelle jedoch nicht aktiviert, wie dies bei „ifconfig eth0 up“ der Fall ist.

Daher frage ich mich, ob es möglich ist, den Linux-Kernel anzuweisen, die eth0-Schnittstelle zu aktivieren, ohne auf Benutzerbereichsskripte (ifup und ifconfig) zurückzugreifen?

Antwort1

Ja, der Linux-Kernel kann die eth0-Schnittstelle aktivieren, ohne auf Userspace-Skripte zurückgreifen zu müssen.
Sie können den ip=Kernel-Boot-Parameter verwenden, um die Netzwerkschnittstelle mit einer statischen IP-Adresse zu initialisieren, zum Beispiel:

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

Natürlich, dieeth0Die Schnittstelle kann erst aktiviert werden, wenn die Treiber initialisiert/installiert wurden (was durch die Freigabe des __initSpeicherabschnitts angezeigt wird).
Hier ist das Systemprotokoll, das zeigt, wann die Netzwerkschnittstelle aktiv wird:

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"

Ausführliche Informationen zur Syntax des ip=Boot-Parameters finden Sie inDokumentation/Dateisysteme/nfs/nfsroot.txtIgnorieren Sie die Tatsache, dass der ursprüngliche Zweck dieser Funktion darin bestand, ein vernetztes Root-Dateisystem zu ermöglichen.

Ich habe die u-boot-Umgebungsvariablen ip= und eth= als Bootargs an den Linux-Kernel übergeben

eth=ist kein gültiger Boot-Parameter und wird wahrscheinlich vom Kernel ignoriert.
Übrigens: Wenn Sie den Treiber von Atmel verwenden macb.c, stellen Sie sicher, dass U-Boot die MAC-Adresse für den PHY installiert, damit dies funktioniert.

verwandte Informationen