我正在開發一個嵌入式Linux系統,我的目標是在啟動時啟動乙太網路介面。我使用 u-boot 作為引導程式。我將 ip= 和 eth= u-boot 環境變數作為 bootargs 傳遞給 Linux 內核,並將 Linux 內核配置為 IP:kernel level autoconfiguration ,啟用。但是,這並沒有像「ifconfig eth0 up」那樣啟動網路介面。
所以,我想知道是否可以指示 linux 核心啟動 eth0 接口,而不需要求助於用戶空間腳本(ifup 和 ifconfig)?
答案1
是的,Linux 核心可以啟動 eth0 接口,而無需求助於使用者空間腳本。
您可以使用ip=
核心啟動參數來初始化具有靜態IP位址的網路接口,例如:
ip=192.168.1.100:::255.255.255.0:myboard:eth0:on
當然,乙太網路0在驅動程式初始化/安裝(如__init
記憶體部分的釋放所示)之前,無法啟用介面。
以下是網路介面啟動時顯示的系統日誌:
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"
有關ip=
引導參數語法的完整詳細信息,請參見文件/文件系統/nfs/nfsroot.txt。忽略這個功能的最初目的是促進網路根檔案系統。
我將 ip= 和 eth= u-boot 環境變數作為 bootargs 傳遞給 Linux 內核
eth=
不是有效的引導參數,並且可能被核心忽略。
順便說一句,如果您使用 Atmel 的macb.c
驅動程序,請確保 U-Boot 安裝 PHY 的 MAC 位址才能使其正常工作。