Linux kernel PXE引导失败,内核死机:无法装载根fs

Linux kernel PXE引导失败,内核死机:无法装载根fs,linux-kernel,centos,kernel,redhat,ipxe,Linux Kernel,Centos,Kernel,Redhat,Ipxe,一段时间以来,我在某些服务器上遇到问题,但找不到问题。 这些是x86_64服务器,带有Intel Xeon,配置为通过iPXE rom通过网络在UEFI中引导。 Kernel和initramfs是Centos 8(尝试了8.0和8.2)中的内核和initramfs 但在启动时,我总是(在每台服务器上,因此不应与硬件故障相关): iPXE引导脚本是: #!ipxe kernel http://10.10.0.1/vmlinuz-4.18.0-193.6.3.el8_2.x86_64 initrd

一段时间以来,我在某些服务器上遇到问题,但找不到问题。 这些是x86_64服务器,带有Intel Xeon,配置为通过iPXE rom通过网络在UEFI中引导。 Kernel和initramfs是Centos 8(尝试了8.0和8.2)中的内核和initramfs

但在启动时,我总是(在每台服务器上,因此不应与硬件故障相关):

iPXE引导脚本是:

#!ipxe

kernel http://10.10.0.1/vmlinuz-4.18.0-193.6.3.el8_2.x86_64 initrd=initramfs-4.18.0-193.6.3.el8_2.x86_64.img selinux=0  rd.shell rd.debug root=live:http://10.10.0.1/squashfs.img rw console=tty0 console=ttyS1,115200
initrd http://10.10.0.1/initramfs-4.18.0-193.6.3.el8_2.x86_64.img

boot
这将在控制台中生成:

http://10.10.0.1/vmlinuz-4.18.0-193.6.3.el8_2.x86_64... ok
http://10.10.0.1/initramfs-4.18.0-193.6.3.el8_2.x86_64.img... ok
INTEL 0x6f080f70 MAC reset (081c0261/80280783 was 081c0261/80280783)
INTEL 0x6f080f70 MAC reset (081c0261/80280783 was 081c0261/80280783)
INTEL 0x6f081ab0 MAC reset (081c0261/80280787 was 081c0261/80280787)
[    0.000000] Linux version 4.18.0-193.6.3.el8_2.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Wed Jun 10 11:09:32 UTC 2020
[    0.000000] Command line: vmlinuz-4.18.0-193.6.3.el8_2.x86_64 initrd=initramfs-4.18.0-193.6.3.el8_2.x86_64.img selinux=0 rd.shell rd.debug root=live:http://10.10.0.1/squashfs.img rw console=tty0 console=ttyS1,115200
...
在服务器端,在apache日志上,我有:

10.10.2.1 - - [26/Jun/2020:19:55:42 +0200] "GET /vmlinuz-4.18.0-193.6.3.el8_2.x86_64 HTTP/1.1" 200 8913656 "-" "iPXE/1.0.0+"
10.10.2.1 - - [26/Jun/2020:19:55:42 +0200] "GET /initramfs-4.18.0-193.6.3.el8_2.x86_64.img HTTP/1.1" 200 53703611 "-" "iPXE/1.0.0+"
所以它似乎工作得很好

这里是无盘启动,但无论我尝试什么(kickstart diskfull安装,甚至是kernel+initrd单独安装),我总是以内核死机告终

我尝试重置BIOS设置,尝试用legacy/pcbios而不是UEFI引导,尝试取消sata磁盘的激活,等等。总是出现同样的错误。还尝试使用Centos ISO中的kernel+initrd(检查校验和),尝试使用我的管理节点中的。没有什么。我错过了什么明显的东西吗

你们有没有人有想法或者已经面对过这样的问题

提前多谢:-)

代我向你问好


Beuk

您是否尝试从内核命令行中删除
initrd=…
参数?我认为它试图查找文件,同时应该查找PXE准备文件的内存中的地址。您也可以尝试提供
rootfstype=ramfs
。感谢您的建议。我试过了,没有更好的结果。所以我尝试了内核/initramfs的其他发行版,同样。然后尝试恢复到“旧方式”,即使用基于syslinux的PXE,这一次是一个缓慢的tftp而不是http,它工作正常,但后来下载包时失败。这意味着我的http服务器可能已断开(奇怪的是,在正常的ssh/操作期间,链接是稳定的,但在高负载时,它会断开)。我尝试使用另一台服务器作为http服务器,它成功了。我仍然需要理解为什么iPXE说initrd是100%下载的,而我很确定它是一个空文件。对于PXE,你应该
附加initramfs.img,rootfs.img
,尽管我对iPXE也有同样的问题
10.10.2.1 - - [26/Jun/2020:19:55:42 +0200] "GET /vmlinuz-4.18.0-193.6.3.el8_2.x86_64 HTTP/1.1" 200 8913656 "-" "iPXE/1.0.0+"
10.10.2.1 - - [26/Jun/2020:19:55:42 +0200] "GET /initramfs-4.18.0-193.6.3.el8_2.x86_64.img HTTP/1.1" 200 53703611 "-" "iPXE/1.0.0+"