Inicialização PXE de 18.04 ISO

12

Anteriormente, configurei a inicialização PXE dos Ubuntu LiveCDs 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 descobri que o vmlinuz.efi não existe mais no casper, mas o vmlinuz existe. Então, eu tento novamente com alguma mudança de nome ...

E agora ainda não conclui a inicialização. Eu recebo o "modo de emergência". Digitar 'journalctl -xb' (conforme sugerido pelo prompt do modo de emergência) e navegar 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.

Socorro!

Adicionado 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.
Joe Marley
fonte
Esta foi uma instalação "limpa", ou seja, a unidade em que o kernal está foi formatada recentemente? Ou é ao lado / sobre outro sistema operacional?
Jonathan
1
As máquinas de destino em questão não têm disco rígido e estão carregando o LiveCD da área de trabalho 18.04 através da inicialização da rede. Não há configuração anterior. Imagine um grupo de máquinas que, em vez de usar chaves USB ou CDs para inicializar o liveCD, inicialize o live CD usando o iPXE pela rede.
31518 Joe Marley

Respostas:

7

Eu resolvi esse problema no iPXE seguindo os conselhos de "Woodrow Shen" no rastreador de erros do Launchpad .

Basicamente, eu adaptei nossa entrada antiga 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 no 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:

  • renomeie vmlinuz.efipara estar vmlinuxnas linhas 4 e 6
  • adicione a toramopção à linha 6
  • obviamente altere o nfs_pathpara coincidir com a localização do novo extrato ISO

Observe que, conforme indicado na Barra de Ativação, esta toramopção requer RAM adicional. Nos meus testes, eu precisava garantir que minhas máquinas virtuais tivessem 4 GB de RAM alocada

Observe que isso também funciona para os sistemas EFI e BIOS herdado.

DrGecko
fonte
1
Obrigado DrGecko - a toramopção funcionou para mim com hortelã 19!
Brian Sidebotham
Isso funciona também para o lubuntu 18.04.1 (LTS), que é exatamente o que eu estava precisando. Obrigado!
Joe Marley
1
Existe outra opção, que não requer torame permite inicializar um computador com muito menos RAM: altere o final da linha 6 paraip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag
@ Ricflomag Muito obrigado, tenho uma pilha de computadores com 2 GB de RAM. Testado e funciona no Ubuntu MATE 18.04.1 e Linux Mint 19.1, que tem o mesmo problema, pois é baseado no Ubuntu 18.04.
Skylar Ittner
2

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

https://bugs.launchpad.net/ubuntu/+source/casper/+bug/1755863

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

Joe Marley
fonte
Eu deveria ter clicado no link antes - gasto bastante tempo tentando descobrir. Eu estava usando o AIO Boot. Obrigado.
Regmi 23/02/19
0

atualização abaixo - não use o iso ao vivo, use o tradicional, que pode ser inicializado por PXE exatamente como eu costumava fazer


para o ubuntu 14.04 e 16.04, eu simplesmente montei o DVD ISO do servidor completo em loopback para que ele fosse acessível por um servidor da web e configurei a inicialização PXE da maneira usual (copiei o kernel e o initrd para o daemon tftp, opção do próximo servidor DHCP , menu pxe etc).

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

isso simplesmente não funciona com o 18.04, não havia kernel no diretório de instalação e nenhum diretório install / netboot / ubuntu-installer / amd64! Então, tentei o kernel e o initrd no diretório casper, mas isso também é inútil. Peguei o DVD netinstall iso e usei o kernel e o initrd. Na verdade, ele aciona 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 erro 404!

No geral, sinto que o ISO do servidor ubuntu 18.04 é um passo retrógrado para as pessoas que desejam fazer instalações automatizadas.


Eu também tentei adicionar isso ao kickstart

cadeia de instalação ao vivo / imagem da rede preseed http: //myreposerver/ubuntu-18.04-live-server-amd64/casper/filesystem.squashfs

que é algo parecido com o que eu tinha que fazer para tornar a inicialização do Ubuntu 14.04 PXE automatizável

Paul M
fonte