Como posso criar uma imagem de inicialização PXE que execute um único executável na inicialização?

2

Estou no processo de configurar um cluster de computação com a intenção de usá-lo para alguns experimentos de computação paralela. Eu tenho um único executável que gostaria de executar neste cluster.

Devido a restrições operacionais no cluster, só posso implantar esse executável como uma imagem de inicialização do PXE. Infelizmente, as únicas imagens "prontas" que consegui encontrar são aquelas que pretendem instalar uma determinada distro. Eles não parecem particularmente fáceis de modificar.

Alguém pode, talvez, fornecer algumas indicações de como eu poderia criar uma imagem pxelinux que carregue o kernel do linux e subseqüentemente execute um executável?

    
por Bartvbl 13.07.2018 / 19:03

1 resposta

1

Usando o 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

Agora copie seu executável, as bibliotecas compartilhadas necessárias e outros arquivos necessários para o seu executável em image/ . Edite etc/inittab . Você provavelmente deseja remover ::sysinit: . Altere ::respawn: para ser uma invocação do seu executável.

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

Copie initrd-bionic-foo.gz para o seu servidor tftp. Exemplo de entrada pxelinux.cfg:

default foo
label foo
kernel boot/Ubuntu-18.04-x86_64-linux
append initrd=boot/initrd-bionic-foo.gz
    
por 14.07.2018 / 01:45