我在设置 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 兼容发行版及其相应参数的详细列表,请参阅塞瓦