Inicialização PXE de 18.04 ISO

9

Anteriormente, configurei a inicialização PXE dos LiveCDs do Ubuntu extraindo o ISO para uma montagem NFS e copiando vmlinuz.efi e initrd.gz do casper para o diretório tftpboot com alguma mágica de script do iPXE.

Isso funcionou perfeitamente para 16.04, 16.10 e 17.10 (Artful).

Com o 18.04, primeiro descubro que o vmlinuz.efi não existe mais no casper, mas o vmlinuz sim. Então, tento novamente com algum nome mudando ...

E agora ainda não conclui a inicialização. Eu recebo o "modo de emergência". Digitar "journalctl -xb" (como sugerido pelo prompt de modo de emergência) e navegação leva ao seguinte:

Unit sys-fs-fuse-connections has begun starting up.
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
sys-kernel-config.mount: Mount process finished, but there is no mount.
sys-kernel-config.mount: Failed with result 'protocol'.
Failed to mount Kernel Configuration File System.

Ajuda!

Adicionado em 2018-04-30:

Código de script usado para extrair ISO para montagem PXE (TARGET definido como nome da imagem, por exemplo, biônico):

set -e

# Look for bionic.iso as the ISO I am going to extract.
TARGET=invalid.iso
[ -f bionic.iso ] && TARGET=bionic
echo TARGET=$TARGET

# Mount the ISO to the /tmp directory
sudo rm -rf /var/nfs/$TARGET/*
sudo rm -rf /tmp/$TARGET
mkdir /tmp/$TARGET
sudo mount -o loop ~/$TARGET.iso /tmp/$TARGET

# Clear up the NFS directory where things will be copied (and copy them)
sudo rm -rf /var/nfs/$TARGET
sudo mkdir /var/nfs/$TARGET
sudo rsync -avH /tmp/$TARGET/ /var/nfs/$TARGET

# I've not had luck with iPXE changing filesystems to find
# vmlinuz, vmlinuz.efi, or initrd.gz... so I copy those files
# specifically to the tftp directory structure so the boot loader
# can load them.
sudo rm -rf /var/lib/tftpboot/$TARGET
sudo mkdir /var/lib/tftpboot/$TARGET
sudo cp /tmp/$TARGET/casper/vmlinuz* /var/lib/tftpboot/$TARGET/.
sudo cp /tmp/$TARGET/casper/initrd.lz /var/lib/tftpboot/$TARGET/.

# Cleanup: unmount the ISO and remove the temp directory
sudo umount /tmp/$TARGET/
sudo rm -rf /tmp/$TARGET/
echo Done.
    
por Joe Marley 28.04.2018 / 03:05

3 respostas

6

Eu trabalhei em torno desta questão no iPXE, seguindo o conselho de "Woodrow Shen" no Rastreador de bugs do Launchpad .

Basicamente eu adaptei nossa antiga entrada para o ubuntu 16.04.3:

:deployUbuntu-x64-16.04.3
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-16.04.3
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz.efi || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz.efi initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet -- || read void
boot || read void

Para ficar assim para o ubuntu 18.04:

:deployUbuntu-x64-18.04
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-18.04
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet toram -- || read void
boot || read void

observe as seguintes alterações:

  • renomeia vmlinuz.efi para ser vmlinux nas linhas 4 e 6
  • adicione a opção toram à linha 6
  • obviamente mude o nfs_path para corresponder ao local da nova extração ISO

observe que, como apontado no Launchpad, essa opção toram requer RAM adicional. Nos meus testes, eu precisava garantir que minhas máquinas virtuais tivessem 4 GB de RAM alocados

Observe que isso também funciona para nossos sistemas BIOS EFI e legado.

    
por DrGecko 30.05.2018 / 11:50
0

Após o fim de semana, encontrei um bug relatado descrevendo meus sintomas exatos (e fornece uma solução alternativa interativa).

link

Aparentemente, eu estarei esperando em 18.04.1. Pelo menos agora sei que não sou (totalmente) louco!

    
por Joe Marley 30.04.2018 / 16:10
0

para o ubuntu 14.04 e 16.04, eu simplesmente loop-back montava o ISO completo do DVD do servidor para ser acessado via servidor web, e configurava o boot PXE da forma usual (copiava o kernel e initrd para o daemon tftp, DHCP next opção -server, menu pxe etc).

temos um processo de kickstart para automatizar totalmente a implantação de nós.

isto simplesmente não funciona com o 18.04, não há kernel no diretório de instalação e não há diretório / netboot / ubuntu-installer / amd64! Então eu tentei o kernel e initrd do diretório casper, mas isso é inútil também. Eu peguei o netinstall DVD iso e usei o kernel e o initrd a partir disso. Ele realmente ativa o instalador de texto, mas insiste que o espelho está faltando um arquivo, mas o log do meu servidor http não está dando nenhum 404s!

no geral, eu sinto que o ISO do servidor do Ubuntu 18.04 é um passo retrógrado para pessoas que querem fazer instalações automatizadas.

Eu também tentei adicionar isso ao kickstart

preseed instalador ao vivo / net-image string link

que é um pouco como a coisa que eu tive que fazer para tornar o Ubuntu 14.04 PXE inicializável

    
por Paul M 02.05.2018 / 12:44