Bota PXE de 18.04 ISO

12

Anteriormente, configuré el arranque PXE de los LiveCD de Ubuntu extrayendo el ISO a un montaje NFS y copiando vmlinuz.efi e initrd.gz de casper al directorio tftpboot con algo de magia de secuencias de comandos iPXE.

Esto funcionó a la perfección para 16.04, 16.10 y 17.10 (Artful).

Con 18.04, primero encuentro que vmlinuz.efi ya no existe en casper, pero sí vmlinuz. Entonces, intento de nuevo con algún cambio de nombre ...

Y ahora todavía no completa el arranque. Me sale el "modo de emergencia". Al escribir 'journalctl -xb' (como sugiere el indicador del modo de emergencia) y navegar, se obtiene lo siguiente:

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.

¡Ayuda!

Añadido 2018-04-30:

Código de script utilizado para extraer ISO para el montaje PXE (OBJETIVO establecido en el nombre de la imagen, por ejemplo, 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
fuente
¿Fue esta una instalación "limpia", lo que significa que la unidad en la que está el kernel fue formateada recientemente? ¿O es junto / sobre otro sistema operativo?
Jonathan
1
Las máquinas de destino en cuestión no tienen disco duro y están cargando el LiveCD de escritorio 18.04 a través del arranque de red. No hay configuración previa. Imagine un grupo de máquinas que, en lugar de usar llaves USB o CD para arrancar el liveCD, arranque el CD en vivo usando iPXE a través de la red.
Joe Marley

Respuestas:

7

Trabajé para solucionar este problema en iPXE siguiendo los consejos de "Woodrow Shen" en el rastreador de errores de Launchpad .

Básicamente, adapté nuestra entrada anterior para 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 lucir así para 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

tenga en cuenta los siguientes cambios:

  • cambiar el nombre vmlinuz.efipara estar vmlinuxen las líneas 4 y 6
  • agregue la toramopción a la línea 6
  • obviamente, cambie el nfs_pathpara que coincida con la ubicación del nuevo extracto ISO

tenga en cuenta que, como se señaló en Launchpad, esta toramopción requiere RAM adicional. En mis pruebas, necesitaba asegurarme de que mis máquinas virtuales tenían 4 GB de RAM asignados

Tenga en cuenta que esto también funciona para nuestros sistemas EFI y BIOS heredados.

DrGecko
fuente
1
Gracias DrGecko: ¡la toramopción funcionó para mí con mint 19!
Brian Sidebotham el
Esto también funciona para lubuntu 18.04.1 (LTS), que es exactamente lo que necesitaba. ¡Gracias!
Joe Marley
1
Hay otra opción, que no requiere toramy permite iniciar una computadora con mucho menos RAM: cambie el final de la línea 6 aip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag
@ Ricflomag Muchas gracias, tengo un montón de computadoras con 2 GB de RAM. Probado y funciona en Ubuntu MATE 18.04.1 y Linux Mint 19.1, que tiene el mismo problema ya que está basado en Ubuntu 18.04.
Skylar Ittner
2

Después del fin de semana, encontré un error informado que describe mis síntomas exactos (y proporciona una solución interactiva).

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

Aparentemente estaré esperando el 18.04.1. ¡Al menos ahora sé que no estoy (completamente) loco!

Joe Marley
fuente
Debería haber hecho clic en el enlace antes; pasé mucho tiempo pensando. Estaba usando AIO Boot. Gracias.
Regmi
0

actualice a continuación: no use la iso en vivo, use la tradicional que se puede iniciar PXE exactamente como solía hacerlo


para ubuntu 14.04 y 16.04, simplemente monté en bucle el ISO del DVD del servidor completo para que fuera accesible a través de un servidor web, y configuré el arranque PXE de la manera habitual (copié el kernel y el initrd en tftp daemon, la opción de servidor siguiente de DHCP , menú pxe, etc.).

Tenemos un proceso kickstart para automatizar completamente la implementación de nodos.

¡Esto simplemente no funciona con 18.04, no había núcleo en el directorio de instalación, y no había directorio de instalación / netboot / ubuntu-installer / amd64! Así que probé el kernel y el initrd desde el directorio casper, pero eso también es inútil. Tomé el iso de DVD netinstall y usé el kernel y el initrd de eso. En realidad, activa el instalador de texto pero insiste en que al espejo le falta un archivo, ¡pero el registro de mi servidor http no da ningún 404!

En general, creo que el ISO del servidor ubuntu 18.04 es un paso retrógrado para las personas que desean realizar instalaciones automatizadas.


También intenté agregar esto al kickstart

cadena de imagen en vivo preinstalada / net-image http: //myreposerver/ubuntu-18.04-live-server-amd64/casper/filesystem.squashfs

que es algo parecido a lo que tuve que hacer para que Ubuntu 14.04 PXE boot sea automatizable

Paul M
fuente