web-dev-qa-db-ja.com

起動時に単一の実行可能ファイルを実行するPXEブートイメージを作成するにはどうすればよいですか?

いくつかの並列計算実験に使用することを目的として、計算クラスタをセットアップしている最中です。このクラスターで実行したい実行可能ファイルが1つあります。

上記のクラスターの運用上の制約により、この実行可能ファイルはPXEブートイメージとしてのみ展開できます。残念ながら、私が見つけた唯一の「既製」のイメージは、特定のディストリビューションをインストールすることを目的としたインストールのものです。それらは特に簡単に変更できるようには見えません。

誰かがLinuxカーネルをロードして実行可能ファイルを実行するpxelinuxイメージを作成する方法についていくつかのポインタを提供できますか?

2
Bartvbl

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
1
Mark Wagner