PXE 启动内核崩溃

PXE 启动内核崩溃

我在设置 PXE 启动服务器时遇到了麻烦。我已开始isc-dhcp-server运行,tftp-hpa通过 tftp 提供文件(已验证有效),并apache2托管 rootfs 映像。PXE 客户端似乎可以正确下载内核和 initrd 文件,然后内核崩溃。

这是我的/tftpboot/pxelinux.cfg/default

default pxeboot

label pxeboot
kernel vmlinuz-3.16.0-4-amd64
append initrd=vmlinuz-3.16.0-4-amd64 ip=dhcp boot=live fetch=http://xxx.xxx.xxx.xxx/filesystem.squashfs

我的服务器是一个Ubuntu 15.04 mini安装。

我最初按照以下说明创建fimesystem.squashfs根文件系统映像:http://djlab.com/2014/10/debian-pxe-boot-image-from-scratch/

然后我按照以下说明安装 DHCP 和 TFTP:https://help.ubuntu.com/community/DisklessUbuntuHowto

但我必须修改/etc/default/tftpd-hpa以使 TFTP 提供文件如下:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="xxx.xxx.xxx.xxx:69"
TFTP_OPTIONS="--secure"
RUN_DAEMON="yes"

如果我TFTP_OPTIONS按照DisklessUbuntuHowTo说明进行更改,tftp 将不再启动。然后我启动了一个apache2服务器,它似乎按预期显示了我放入的文件/var/www/html/,我可以从中下载文件http://xxx.xxx.xxx.xx/filesystem.squashfs,但内核在启动时崩溃了。

我最初从我的主机目录中获取kernel和图像,因为我的目录是空的,但后来我使用以下说明在 chroot 上安装了一个内核:initrd/boot/chroot/boot/http://willhaley.com/willhaley/blog/create-a-custom-debian-live-environment/

chroot chroot
apt-get install --no-install-recommends --yes \
linux-image-3.16.0-4-amd64 live-boot

然后我从目录中复制了内核和 initrd 映像chroot/boot/,但内核仍然崩溃。如果我将我的修改/tftpboot/pxelinux.cfg/default为:

default pxeboot

label pxeboot
kernel vmlinuz-3.16.0-4-amd64
append initrd=vmlinuz-3.16.0-4-amd64

并使用主机中的内核和 initrd 映像/boot,客户端加载这两个映像,并将我转储到(initramfs)提示符中。如果我使用这些chroot/boot/映像,它仍然会出现内核崩溃。

我以前从未调试过内核崩溃,所以我甚至不知道要检查哪些日志文件。如能得到任何帮助,我将不胜感激。

米莎

编辑:这是 PXE 客户端启动和内核崩溃的视频:https://www.youtube.com/watch?v=WlhEmNx8J8M

答案1

您的内核崩溃,因为它不是 PXE 兼容的内核/initrd 设置。如果我是您,我不会重新发明轮子;采用经过验证的 PXE 兼容发行版并根据您的需要自定义 initrd 并添加所需的 squashfs。有关 PXE 兼容发行版及其相应参数的详细列表,请参阅塞瓦

相关内容