web-dev-qa-db-fra.com

Démarrage PXE de 18.04 ISO

Auparavant, j'avais configuré le démarrage PXE des LiveCD Ubuntu en extrayant l'ISO sur un montage NFS et en copiant vmlinuz.efi et initrd.gz de casper dans le répertoire tftpboot avec une certaine magie de script iPXE.

Cela a fonctionné parfaitement pour 16.04, 16.10 et 17.10 (Artful).

Avec 18.04, j’ai d’abord découvert que vmlinuz.efi n’existe plus dans casper, mais vmlinuz le fait. Alors, je réessaye avec un changement de nom ...

Et maintenant, le démarrage n'est toujours pas terminé. Je reçois le "mode d'urgence". La saisie de 'journalctl -xb' (comme suggéré par l'invite du mode d'urgence) et de la navigation conduit à ce qui suit:

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.

Aidez-moi!

Ajouté le 2018-04-30:

Code de script utilisé pour extraire ISO pour le montage PXE (TARGET défini sur le nom de l'image, par exemple, bionique):

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.
12
Joe Marley

J'ai résolu ce problème dans iPXE en suivant les conseils de "Woodrow Shen" à la outil de suivi des bogues du Launchpad .

Fondamentalement, j'ai adapté notre ancienne entrée pour 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

Pour ressembler à ceci pour 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

notez les modifications suivantes:

  • renommer vmlinuz.efi pour être vmlinux aux lignes 4 et 6
  • ajouter l'option toram à la ligne 6
  • évidemment, changez le nfs_path pour qu'il corresponde à l'emplacement du nouvel extrait ISO

notez que, comme indiqué dans le tableau de bord, cette option toram nécessite de la RAM supplémentaire. Lors de mes tests, je devais m'assurer que mes machines virtuelles avaient 4 Go de RAM alloué

Notez que cela fonctionne également pour nos systèmes BIOS EFI et anciens.

7
DrGecko

Après le week-end, j'ai trouvé un bogue signalé décrivant mes symptômes exacts (et fournissant une solution de contournement interactive).

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

Apparemment j'attendrai le 18.04.1. Au moins, je sais maintenant que je ne suis pas (totalement) fou!

2
Joe Marley

pour Ubuntu 14.04 et 16.04, j'ai simplement installé en boucle le fichier ISO du DVD du serveur complet de manière à ce qu'il soit accessible via un serveur Web et ai configuré le démarrage PXE de la manière habituelle (copie du noyau et initrd dans le démon tftp, option serveur suivant DHCP , menu pxe etc).

nous avons un processus kickstart pour automatiser complètement le déploiement des nœuds.

cela ne fonctionne tout simplement pas avec 18.04, il n'y avait pas de noyau dans le répertoire d'installation et pas de répertoire install/netboot/ubuntu-installer/AMD64! J'ai donc essayé le noyau et initrd à partir du répertoire casper mais c'est aussi inutile. J'ai attrapé le netinstall DVD iso et utilisé le noyau et initrd à partir de cela. En fait, il lance le programme d'installation de texte, mais insiste sur le fait qu'il manque un fichier au miroir, mais que le journal de mon serveur http ne fournit aucun fichier 404!

globalement, j'estime que l'ISO du serveur Ubuntu 18.04 est une étape rétrograde pour les personnes souhaitant effectuer des installations automatisées.


J'ai aussi essayé d'ajouter ceci au kickstart

preseed live-installer/net-image string http: //myreposerver/ubuntu-18.04-live-server-AMD64/casper/filesystem.squashfs

ce qui est un peu comme ce que je devais faire pour rendre Ubuntu 14.04 démarrage PXE automatisable

0
Paul M