Démarrage PXE de 18,04 ISO

12

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

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

Avec 18.04, je trouve d'abord que vmlinuz.efi n'existe plus dans casper, mais vmlinuz existe. Donc, j'essaye encore avec un changement de nom ...

Et maintenant, il ne termine toujours pas le démarrage. J'obtiens le "mode d'urgence". La saisie de 'journalctl -xb' (comme suggéré par l'invite du mode d'urgence) et la navigation conduisent à 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 30-04-2018:

Code de script utilisé pour extraire l'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.
Joe Marley
la source
S'agit-il d'une installation "propre", ce qui signifie que le lecteur sur lequel se trouve le kernal a été fraîchement formaté? Ou est-ce à côté / au-dessus d'un autre système d'exploitation?
Jonathan
1
Les machines cibles en question n'ont pas de disque dur et chargent le LiveCD de bureau 18.04 via un démarrage réseau. Il n'y a pas de configuration précédente. Imaginez un groupe de machines qui, au lieu d'utiliser des clés USB ou des CD pour démarrer le liveCD, démarrent plutôt le live CD en utilisant iPXE sur le réseau.
Joe Marley

Réponses:

7

J'ai travaillé autour de ce problème dans iPXE en suivant les conseils de "Woodrow Shen" sur le tracker de bogue 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 changements suivants:

  • renommer vmlinuz.efipour être vmlinuxsur les lignes 4 et 6
  • ajouter l' toramoption à la ligne 6
  • évidemment changer le nfs_pathpour correspondre à l'emplacement du nouvel extrait ISO

notez que comme indiqué sur Launchpad, cette toramoption 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és

Notez que cela fonctionne également pour nos systèmes BIOS EFI et hérités.

DrGecko
la source
1
Merci DrGecko - l' toramoption a fonctionné pour moi avec la menthe 19!
Brian Sidebotham
Cela fonctionne également pour lubuntu 18.04.1 (LTS), qui est exactement ce dont j'avais besoin. Je vous remercie!
Joe Marley
1
Il existe une autre option, qui ne nécessite pas toramet permet de démarrer un ordinateur avec beaucoup moins de RAM: changez la fin de la ligne 6 enip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag
@Ricflomag Merci beaucoup, j'ai une pile d'ordinateurs avec 2 Go de RAM. Testé et fonctionne sur Ubuntu MATE 18.04.1 et Linux Mint 19.1, qui a le même problème car il est basé sur Ubuntu 18.04.
Skylar Ittner
2

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

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

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

Joe Marley
la source
J'aurais dû cliquer sur le lien avant - j'ai passé pas mal de temps à réfléchir. J'utilisais AIO Boot. Merci.
Regmi
0

mise à jour ci-dessous - n'utilisez pas l'iso en direct, utilisez celui traditionnel qui peut être démarré PXE exactement comme je le faisais


pour ubuntu 14.04 et 16.04, j'ai simplement monté en boucle le ISO complet du DVD du serveur afin qu'il soit accessible via un serveur Web, et configuré le démarrage PXE de la manière habituelle (copié le noyau et initrd dans le démon tftp, option DHCP next-server , menu pxe, etc.).

nous avons un processus de démarrage pour automatiser entièrement 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 depuis le répertoire casper mais c'est inutile aussi. J'ai attrapé l'iso du DVD netinstall et utilisé le noyau et initrd à partir de cela. Il lance en fait l'installateur de texte mais insiste sur le fait qu'il manque un fichier au miroir, mais le journal de mon serveur http ne donne aucun 404!

Dans l'ensemble, je pense que l'ISO du serveur ubuntu 18.04 est une étape rétrograde pour les personnes souhaitant effectuer des installations automatisées.


J'ai également 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 PXE boot automatisable

Paul M
la source