我正在尝试使用通过 NFS 服务的远程计算机上的文件系统从嵌入式 ARM 板上的 U-boot 启动 Linux。以太网连接似乎未正确连接,导致挂载 NFS 共享失败。不过,我知道以太网硬件可以工作,因为 U-boot 通过 TFTP 加载内核。
我该如何调试这个?我可以尝试调整内核,但这意味着每次迭代都要重新编译内核,这很慢。有没有一种方法可以让内核在无法挂载外部文件系统的情况下运行?
答案1
您可以将 initrd 映像编译到内核中 ( General Setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support -> Initramfs source file(s)
)。您以特殊格式指定文件,例如(my init for x86):
dir /bin 0755 0 0
file /bin/busybox /bin/busybox 0755 0 0
file /bin/lvm /sbin/lvm.static0755 0 0
dir /dev 0755 0 0
dir /dev/fb 0755 0 0
dir /dev/misc 0755 0 0
dir /dev/vc 0755 0 0
nod /dev/console 0600 0 0 c 5 1
nod /dev/null 0600 0 0 c 1 3
nod /dev/snapshot 0600 0 0 c 10 231
nod /dev/tty1 0600 0 0 c 4 0
dir /etc 0755 0 0
dir /etc/splash 0755 0 0
dir /etc/splash/natural_gentoo 0755 0 0
dir /etc/splash/natural_gentoo/images 0755 0 0
file /etc/splash/natural_gentoo/images/silent-1680x1050.jpg /etc/splash/natural_gentoo/images/silent-1680x1050.jpg 0644 0 0
file /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg 0644 0 0
file /etc/splash/natural_gentoo/1680x1050.cfg /etc/splash/natural_gentoo/1680x1050.cfg 0644 0 0
slink /etc/splash/tuxonice /etc/splash/natural_gentoo 0755 0 0
file /etc/splash/luxisri.ttf /etc/splash/luxisri.ttf 0644 0 0
dir /lib64 0755 0 0
dir /lib64/splash 0755 0 0
dir /lib64/splash/proc 0755 0 0
dir /lib64/splash/sys 0755 0 0
dir /proc 0755 0 0
dir /mnt 0755 0 0
dir /root 0770 0 0
dir /sbin 0755 0 0
file /sbin/fbcondecor_helper /sbin/fbcondecor_helper 0755 0 0
slink /sbin/splash_helper /sbin/fbcondecor_helper 0755 0 0
file /sbin/tuxoniceui_fbsplash /sbin/tuxoniceui_fbsplash 0755 0 0
file /sbin/tuxoniceui_text /sbin/tuxoniceui_text 0755 0 0
dir /sys 0755 0 0
file /init /usr/src/init 0755 0 0
我还没有在 ARM 上使用过它,但它应该可以工作。/init
是您可以放置启动命令的文件。其余的是所需的各种文件(如 busybox 等)。
答案2
答案3
这篇文章是关于问题中提出的网络问题,而不是关于内核调试。
如果您的交换机支持生成树协议 (STP),请记住,当 STP 工作时,STP 可能不会在 6 秒或更长时间内激活交换机上的以太网端口。每次主机重置主机上的以太网端口时,这种延迟可能会重新开始,这种情况可能会在加电、DHCP 请求、内核加载网络驱动程序等之间多次发生。这可能会干扰无盘系统的 NFS 引导、DHCP、kickstart 等,给许多系统管理员带来了很多麻烦。有关一些示例,请参阅 RedHatBug 189795 - Kickstart 期间 DHCP 超时, 和本 PXE 指南。
大多数高端交换机(例如 Cisco 交换机和 HP ProCurve 交换机)都支持 STP,并且所有端口均已启用该功能。