如何创建在启动时运行单个可执行文件的 PXE 启动映像?

如何创建在启动时运行单个可执行文件的 PXE 启动映像?

我正在设置一个计算集群,目的是用它进行一些并行计算实验。我有一个可执行文件,我想在这个集群上运行它。

由于上述集群的操作限制,我只能将此可执行文件部署为 PXE 启动映像。不幸的是,我能找到的唯一“现成”映像是用于安装特定发行版的安装映像。它们似乎并不容易修改。

有人可以提供一些指点,告诉我如何创建一个可以加载 Linux 内核并随后运行可执行文件的 pxelinux 映像吗?

答案1

使用 ubuntu-18-x86_64-initrd.gz:

wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
gzip -d initrd.gz
mkdir image
cd image
cpio -idmv < ../initrd

现在将你的可执行文件、所需的共享库以及可执行文件所需的其他文件复制到 中image/。编辑etc/inittab。你可能想要删除::sysinit:。更改::respawn:为可执行文件的调用。

find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initrd-bionic-foo.gz

复制initrd-bionic-foo.gz到您的 tftp 服务器。pxelinux.cfg 条目示例:

default foo
label foo
kernel boot/Ubuntu-18.04-x86_64-linux
append initrd=boot/initrd-bionic-foo.gz

相关内容