在 Rootfs 之前启动网络

在 Rootfs 之前启动网络

我正尝试使用 iMX6UL evk 上的 USB 以太网加密狗来加载我的内核、dtb 并通过网络挂载我的 nfs。

我已经使用供应商的内核树让它工作,但我在尝试在我的主线构建上重现它时遇到了一个问题,我无法通过 NFS 挂载我的 rootfs。

如果我将 rootfs 放在 SD 卡上,内核将加载,我可以运行 dhcpcd 来初始化 USB 以太网加密狗,一切正常(所以看起来驱动程序已正确加载)。如果我启动 Freescale 内核,我会看到它在转到 USB0 之前尝试 eth0 和 eth1,然后在 eth2 上找到我的加密狗:

fec 20b4000.ethernet eth0: Freescale FEC PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet:01, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
fec 2188000.ethernet eth1: Freescale FEC PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet:02, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
asix 1-1:1.0 eth2: link down
IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready
asix 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0xC5E1
IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 192.168.0.10, my address is 192.168.0.128
IP-Config: Complete:
     device=eth2, hwaddr=5c:f7:e6:8b:00:1b, ipaddr=192.168.0.128, mask=255.255.255.0, gw=192.168.0.10
     host=192.168.0.128, domain=swiftlabs, nis-domain=(none)
     bootserver=0.0.0.0, rootserver=192.168.0.219, rootpath=
     nameserver0=192.168.0.10

然而,在我的主线内核构建中,它永远不会转移到 USB0,而只是等待 eth0/eth1:

[    2.807795] Micrel KSZ8081 or KSZ8091 20b4000.ethernet-1:01: attached PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet-1:0)
[    2.824569] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    2.937566] Micrel KSZ8081 or KSZ8091 20b4000.ethernet-1:02: attached PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet-1:0)
[    2.952977] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[   12.977200] Waiting up to 110 more seconds for network.
[   22.996955] Waiting up to 100 more seconds for network.

我对linux上的网络不是很熟悉,所以我对如何调试有点茫然。为什么我需要运行 dhcpcd 来启动网络接口,即使我使用 sd 卡上的 rootfs 启动也是如此 我应该从哪里开始寻找让我的内核在启动时尝试 USB0 接口?

最后,有人可以向我指出一些描述启动过程以及内核在启动时如何尝试设置网络的材料吗?

相关内容