Назад | Перейти на главную страницу

Как я могу создать загрузочный образ PXE, который запускает один исполняемый файл при запуске?

Я настраиваю вычислительный кластер с намерением использовать его для некоторых параллельных вычислительных экспериментов. У меня есть единственный исполняемый файл, который я хотел бы запустить в этом кластере.

Из-за операционных ограничений указанного кластера я могу развернуть этот исполняемый файл только как загрузочный образ PXE. К сожалению, единственные «готовые» образы, которые мне удалось найти, - это установочные, предназначенные для установки определенного дистрибутива. Их нелегко изменить.

Может кто-нибудь, возможно, подскажет, как я могу создать образ pxelinux, который загружает ядро ​​Linux и впоследствии запускает исполняемый файл?

Используя 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