通过 Serva 通过 PXE 启动自定义 Ubuntu 映像遇到内核恐慌

通过 Serva 通过 PXE 启动自定义 Ubuntu 映像遇到内核恐慌

背景

dd我通过USB 磁盘驱动器的命令制作了 Ubuntu 20.04“自定义”img 。我使用Serva以下作为 PXE 服务器Serva教程。

官方 Ubuntu 20.04.4 ISO PXE 启动成功。当我 PXE 启动我的“自定义”映像时,它会正确下载vmlinuzinitrdinitrd会触发内核恐慌。

问题

通过将图像文件(根分区文件夹)中的所有文件复制到 来将 Linux 资产添加到 Serva 的存储库是否正确NWA_PXE/{my customized image name}

如果这种方法正确,是否会initrd因为启动时缺少某些内核模块(如 SMB 或 CIFS)而触发内核恐慌?

这是受到这篇文章的启发:使用 PXE 启动自定义 Linux 映像


错误代码是:

[ 1.437739]  ---[ end Kernel panic - not syncing: Attempted to kill init! exit code=0x00000200 ]---

ServaAsset.inf 设置是:

[PXESERVA_MENU_ENTRY]
asset    = customized img beta
platform = amd64

kernel_bios    = /NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append_bios    = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/casper/initrd boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,sec=ntlmv2,vers=2.0,ro ip=dhcp ro ipv6.disable=1

kernel_efi64   = /NWA_PXE/$HEAD_DIR$/boot/vmlinuz-5.11.0-40-generic
append_efi64   = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/boot/initrd.img-5.11.0-40-generic boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,sec=ntlm,vers=1.0,ro ip=dhcp ro ipv6.disable=1



答案1

能够进行 PXE 引导的 Linux 发行版INITRD在其脚本中提供了特殊代码init,允许它们处理 PXE 引导相关的内容,例如获取 IP、设置 DNS 客户端、安装 CIFS 或 NFS(如果发行版是 Live 版本,则安装如果此代码不存在,则将init在没有正确“chroot”到相应的启动映像的情况下结束,但它init是一个永远不应该将控制权返回到命令解释器(ash)的脚本,这就是为什么你会得到:

[ end Kernel panic - not syncing: Attempted to kill init! exit code=0x00000200 ]---

在您的情况下,如果您需要 PXE 启动功能,最好从具有 PXE 功能的发行版开始,然后添加您的特定功能。例如,使用实时发行版并将所需的功能添加到包含的 squashfs 映像中。

请记住,Serva 很多次创建补充的 INITRD,修复某些发行版 PXE 错误或只是缺乏所需协议的支持(即启动 INITRD 级别的 CIFS 支持)等。

相关内容