PXE-Boot von 18.04 ISO

12

Zuvor habe ich das PXE-Booten der Ubuntu LiveCDs eingerichtet, indem ich die ISO auf einen NFS-Mount extrahiert und mit iPXE-Skriptmagie vmlinuz.efi und initrd.gz von casper in das Verzeichnis tftpboot kopiert habe.

Dies funktionierte einwandfrei für 16.04, 16.10 und 17.10 (Artful).

Mit 18.04 stelle ich zuerst fest, dass vmlinuz.efi nicht mehr in casper existiert, aber vmlinuz. Also versuche ich es nochmal mit einer Namensänderung ...

Und jetzt wird das Booten immer noch nicht abgeschlossen. Ich bekomme den "Notfallmodus". Das Eingeben von 'journalctl -xb' (wie von der Eingabeaufforderung für den Notfallmodus vorgeschlagen) und das Durchsuchen führt zu folgenden Ergebnissen:

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.

Hilfe!

Hinzugefügt am 30.04.2018:

Skriptcode zum Extrahieren von ISO für PXE-Mount (TARGET auf Image-Namen gesetzt, z. B. bionisch):

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
quelle
War dies eine "saubere" Installation, was bedeutet, dass das Laufwerk, auf dem sich der Kernel befindet, frisch formatiert wurde? Oder ist es neben / über einem anderen Betriebssystem?
Jonathan
1
Die fraglichen Zielcomputer haben keine Festplatte und laden die 18.04-Desktop-LiveCD über einen Netzwerkstart. Es gibt keine vorherige Konfiguration. Stellen Sie sich eine Gruppe von Computern vor, die die Live-CD nicht über USB-Sticks oder CDs, sondern über iPXE über das Netzwerk booten.
Joe Marley

Antworten:

7

Ich habe dieses Problem in iPXE umgangen, indem ich dem Rat von "Woodrow Shen" beim Launchpad-Bug-Tracker gefolgt bin .

Grundsätzlich habe ich unseren alten Eintrag für Ubuntu 16.04.3 angepasst:

: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

So sieht es für Ubuntu 18.04 aus:

: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

Beachten Sie die folgenden Änderungen:

  • Umbenennen vmlinuz.efiin vmlinuxZeile 4 und 6
  • füge die toramOption zu Zeile 6 hinzu
  • offensichtlich ändern Sie die nfs_path, um den Speicherort des neuen ISO-Extrakts anzupassen

Beachten Sie, dass für diese toramOption , wie im Launchpad erwähnt, zusätzlicher RAM erforderlich ist. Bei meinen Tests musste ich sicherstellen, dass meinen virtuellen Maschinen 4 GB RAM zugewiesen wurden

Beachten Sie, dass dies auch für unsere EFI- und Legacy-BIOS-Systeme funktioniert.

DrGecko
quelle
1
Danke DrGecko - die toramOption hat bei mir mit Mint 19 funktioniert!
Brian Sidebotham
Dies funktioniert auch für Lubuntu 18.04.1 (LTS), was genau das ist, was ich brauchte. Vielen Dank!
Joe Marley
1
Es gibt eine andere Option, die keinen toramComputer mit viel weniger RAM erfordert und es erlaubt, ihn zu booten: Ändern Sie das Ende von Zeile 6 aufip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag
@Ricflomag Vielen Dank, ich habe einen Stapel Computer mit 2 GB RAM. Getestet und funktioniert unter Ubuntu MATE 18.04.1 und Linux Mint 19.1, das das gleiche Problem aufweist, da es auf Ubuntu 18.04 basiert.
Skylar Ittner
2

Nach dem Wochenende habe ich einen gemeldeten Fehler gefunden, der meine genauen Symptome beschreibt (und eine interaktive Problemumgehung bietet).

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

Anscheinend werde ich am 18.04.1 warten. Zumindest weiß ich jetzt, dass ich nicht (ganz) verrückt bin!

Joe Marley
quelle
Ich hätte vorher auf den Link klicken sollen - verbrachte ziemlich viel Zeit damit, herauszufinden. Ich habe AIO Boot verwendet. Vielen Dank.
Regmi
0

Update unten - verwende nicht die Live-ISO, sondern die traditionelle, mit der PXE genauso gebootet werden kann, wie ich es früher getan habe


Für Ubuntu 14.04 und 16.04 habe ich einfach die vollständige Server-DVD-ISO per Loopback gemountet, damit über einen Webserver darauf zugegriffen werden kann, und den PXE-Start auf die übliche Weise eingerichtet (Kernel und initrd wurden in den tftp-Daemon kopiert, DHCP-Next-Server-Option) , pxe menu etc).

Wir haben einen Kickstart-Prozess, um die Bereitstellung von Knoten vollständig zu automatisieren.

Dies funktioniert einfach nicht mit 18.04, es gab keinen Kernel im Installationsverzeichnis und kein Verzeichnis install / netboot / ubuntu-installer / amd64! Also habe ich den Kernel und initrd aus dem Casper-Verzeichnis ausprobiert, aber das ist auch nutzlos. Ich schnappte mir die Netinstall-DVD iso und benutzte den Kernel und die initrd davon. Tatsächlich wird das Textinstallationsprogramm gestartet, aber es wird darauf hingewiesen, dass dem Spiegel eine Datei fehlt, aber das Protokoll von meinem http-Server gibt keine 404s aus!

Insgesamt bin ich der Meinung, dass die ISO des Ubuntu 18.04-Servers ein rückläufiger Schritt für Leute ist, die automatisierte Installationen durchführen möchten.


Ich habe auch versucht, dies zum Kickstart hinzuzufügen

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

Das ist ungefähr das, was ich tun musste, um Ubuntu 14.04 PXE automatisierbar zu machen

Paul M
quelle