PXElinux 6.04-pre1/iPXE 1.21.1 – Ubtuntu 20.04 und Mint 19.3 Live-Systeme starten

Anmerkung:
Dies ist eine weiterführende Anleitung zu meinem Grundgerüst, basierend auf dem nachfolgenden Artikel:

PXE&TFTP&DHCP Server einrichten

Bevor wir anfangen, sollten Sie sich die aktuellsten ISOs von Ubuntu und Mint aus dem Netz herunterladen.

Neueste Ubuntu Version herunterladen.

Neueste Mint Version herunterladen.

So schaut es nachher aus:

iPXE UEFI Menü Ubuntu und Mint

Ordnerstruktur erstellen

Erstellen Sie folgende Ordner in Ihrem TFTP Root Verzeichnis:

images/Mint/Mint19.3/x64
images/Mint/Mint19.3/x86
images/Ubuntu/Ubuntu20.04LTS/x64

Entpacken Sie die heruntergeladenen ISOs in die jeweiligen erstellten Verzeichnisse.

PXElinux Konfigurationsdateien erweitern

Suchen Sie in der pxelinux.cfg/default_BIOS nach:

KBDMAP german.kbd

Fügen Sie darunter folgendes ein:

##############################################################
#LINUX SECTION
##############################################################
LABEL LinuxSysteme

MENU LABEL Linux Installation:
MENU DISABLE

MENU BEGIN

MENU TITLE + Linux Systeme Auswahl

LABEL AllLinuxSystems
MENU LABEL Alle enthaltenen Linux Systeme:
MENU DISABLE

LABEL Ubuntu2004LTS
MENU LABEL 1. Ubuntu 20.04 x64 LTS - Live CD
MENU INDENT 3
KERNEL images/Ubuntu/Ubuntu20.04LTS/x64/casper/vmlinuz
APPEND root=/dev/nfs toram boot=casper vga=normal netboot=nfs nfsroot=192.168.1.2:/volume1/PXE-Umgebung/TFTP-Root/images/Ubuntu/Ubuntu20.04LTS/x64 ip=dhcp initrd=images/Ubuntu/Ubuntu20.04LTS/x64/casper/initrd locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet splash --
TEXT HELP
Ubuntu V20.04 x64 LTS (Long Term Support)
Systeme mit mehr als 2GB RAM.

Startet die Live CD.

Ubuntu mit 5 Jahren Garantie fuer Sicherheitsupdates und Patches.
ENDTEXT

LABEL AutoMint
MENU LABEL [[:Prozessor Architektur Erkennung (Mint):]]
MENU INDENT 2
KERNEL ifcpu64.c32
append Mint64 -- Mint32
TEXT HELP
Startet automatisch das passende Mint, das fuer Ihre Prozessor
Architektur ausgelegt ist.
ENDTEXT

LABEL Mint64
MENU LABEL 1. Mint 19.3 x64 Cinnamon - Live CD
MENU INDENT 3
COM32 linux.c32 images/Mint/Mint19.3/x64/casper/vmlinuz
APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.1.2:/volume1/PXE-Umgebung/TFTP-Root/images/Mint/Mint19.3/x64 ip=dhcp initrd=images/Mint/Mint19.3/x64/casper/initrd.lz locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de systemd.mask=tmp.mount quiet splash --
TEXT HELP
Mint 19 x64
Systeme mit mehr als 2GB RAM.
ENDTEXT

LABEL Mint32
MENU LABEL 2. Mint 19.3 x86 Cinnamon - Live CD
MENU INDENT 3
COM32 linux.c32 images/Mint/Mint19.3/x86/casper/vmlinuz
APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.1.2:/volume1/PXE-Umgebung/TFTP-Root/images/Mint/Mint19.3/x86 ip=dhcp initrd=images/Mint/Mint19.3/x86/casper/initrd.lz locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de systemd.mask=tmp.mount quiet splash --
TEXT HELP
Mint 19 x86
Systeme mit weniger als 2GB RAM.
ENDTEXT

MENU SEPARATOR

LABEL return_main

MENU LABEL - ^Zum Hauptmenu
MENU INDENT 1
MENU EXIT

MENU END

NFS-ROOT anpassen

nfsroot=192.168.1.2:/volume1/PXE-Umgebung/TFTP-Root/images/Ubuntu/Ubuntu20.04LTS/x64

Jetzt kommt der Mount-Pfad aus der vorherigen Anleitung zum Tragen. Dieser muss überall abgeändert werden. Ändern Sie also immer die IP (IP der DS!), den Mount-Pfad und den Pfad zu Ihrem Ubuntu und Mint Live Image.

Ich habe Ihnen ein Beispiel anhand eines Submenüs gemacht. Sie werden es lieben. Alles was Sie davon nicht brauchen, können Sie ohne Probleme heraus löschen.

iPXE Booteinträge erstellen

Suchen Sie nun in der pxeEFI32.ipxe.menu und pxeEFI64.ipxe.menu:

menu Live Umgebungen - Client: ${ip} ${platform}_${buildarch}

Fügen Sie darunter folgendes ein:

item --gap --             ----- Ubuntu Versionen -----------------------------------------------------------------------------
item ubuntu-live-newest          Ubuntu Live-CD ${ubuntu-version} LTS ${arch}
item ubuntu-live-graphics        Ubuntu Live-CD ${ubuntu-version} LTS ${arch} (Sicherer Grafikmodus)
item ubuntu-live-oem        	 Ubuntu Live-CD ${ubuntu-version} LTS ${arch} (OEM Installation)
item
item --gap --             ----- Mint Versionen -------------------------------------------------------------------------------
item mint-live-newest            Mint Live-CD ${mint-version} LTS ${arch} 
item mint-live-comp            	 Mint Live-CD ${mint-version} LTS ${arch} (Kompatibilitaetsmodus) 
item mint-live-oem            	 Mint Live-CD ${mint-version} LTS ${arch} (OEM Installation)

Suchen Sie weiter:

:menu-live-timed
choose --timeout ${submenu-timeout} --default ${submenu-default} selected && goto ${selected} || goto start

Fügen Sie darunter folgendes ein:

:ubuntu-live-newest
echo Starte Ubuntu Live ${ubuntu-version} LTS ${arch} für ${ip}
set base-url images/Ubuntu/Ubuntu${ubuntu-version}LTS/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd
imgargs vmlinuz initrd=initrd root=/dev/nfs file=${base-url}/preseed/ubuntu.seed toram boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de quiet splash --
boot || goto failed
goto start

:ubuntu-live-graphics
echo Starte Ubuntu Live ${ubuntu-version} LTS ${arch} (Sicherer Grafikmodus) für ${ip}
set base-url images/Ubuntu/Ubuntu${ubuntu-version}LTS/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd
imgargs vmlinuz initrd=initrd root=/dev/nfs file=${base-url}/preseed/ubuntu.seed toram boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de nomodeset quiet splash --
boot || goto failed
goto start

:ubuntu-live-oem
echo Starte Ubuntu Live ${ubuntu-version} LTS ${arch} (OEM Installation) für ${ip}
set base-url images/Ubuntu/Ubuntu${ubuntu-version}LTS/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd
imgargs vmlinuz initrd=initrd root=/dev/nfs file=${base-url}/preseed/ubuntu.seed toram boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de only-ubiquity oem-config/enable=true quiet splash --
boot || goto failed
goto start

:mint-live-newest
echo Starte Mint Live ${mint-version} LTS ${arch} für ${ip}
set base-url images/Mint/Mint${mint-version}/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd.lz
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de quiet splash --
boot || goto failed
goto start

:mint-live-comp
echo Starte Mint Live ${mint-version} LTS ${arch} (Kompatibilitaetsmodus) für ${ip}
set base-url images/Mint/Mint${mint-version}/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd.lz
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de xforcevesa nosplash --
boot || goto failed
goto start

:mint-live-oem
echo Starte Mint Live ${mint-version} LTS ${arch} (OEM Installation) für ${ip}
set base-url images/Mint/Mint${mint-version}/${arch}
kernel ${boot-url}${base-url}/casper/vmlinuz
initrd ${boot-url}${base-url}/casper/initrd.lz
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper vga=normal netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de only-ubiquity oem-config/enable=true quiet splash --
boot || goto failed
goto start

iPXE Konfigurationseinträge erstellen

Fügen Sie folgendes ganz am Ende der Dateien pxeEFI32.ipxe.cfg und pxeEFI64.ipxe.cfg ein:

# OPTIONAL: Neueste Ubuntu Version
set ubuntu-version 20.04

# OPTIONAL: Neueste Mint Version
set mint-version 19.3

Jedes Mal wenn Sie nun die neueste Ubuntu oder Mint Version aufspielen, dann editieren Sie stets die Versionsnummern in den Konfigurationsdateien. Die Einträge für Ubuntu und Mint sind in der iPXE Umgebung so geschrieben, dass Sie diese nicht editieren müssten, wenn Sie sich haargenau an meine Anleitung gehalten haben.

Aktualisierung

Sollte eine neue Version von Ubuntu oder Mint erhältlich sein als in der Anleitung angegeben ist, dann ändern Sie einfach die Versionsnummern der vorhandenen Ordner ab: Mint20 oder Ubuntu21.04 in dem Mint oder Ubuntu Ordner. Löschen Sie die alten Versionen in den x64 und x86 Ordnern und entpacken Sie dann die neuen ISOs in die jeweiligen Ordner. Danach müssen Sie nur noch die Versionsnummern in den Dateien: pxeEFI32.ipxe.cfg und pxeEFI64.ipxe.cfg ändern und sind fertig für die iPXE Umgebung.

Die pxelinux.cfg/default_BIOS Einträge müssen Sie immer selbst editieren!

Wenn Sie das alles geändert haben, können Sie das auch direkt live testen. Starten Sie entweder über eine VM über Netzwerk oder Sie benutzen einfach Ihren normalen Rechner zum Testen, ob die Linux Versionen auch ohne Probleme gestartet werden können.

iPXE Ubuntu 20.04
Ubuntu 20.04 Live-CD Desktop
Linux Mint 19.3 Live-CD Desktop
Linux Mint 19.3 Live-CD Desktop

Bei Fragen einfach einen Kommentar hinterlassen. 🙂

Zum Anfang!

23 Antworten auf „PXElinux 6.04-pre1/iPXE 1.21.1 – Ubtuntu 20.04 und Mint 19.3 Live-Systeme starten“

  1. Hallo,

    der NFS-Mountpfad ist falsch. Deshalb schlägt auch das Mounten fehl, weil das Verzeichnis nicht gefunden wird.
    Wie sieht der denn bei dir aus? Wie hast du die Zeilen editiert? Wie lautet der genau TFTP-ROOT Pfad bei dir?

    1. so siehts bei mir aus:

      LABEL Ubuntu2004LTS
      MENU LABEL 1. Ubuntu 20.04 x64 LTS – Live CD
      MENU INDENT 3
      KERNEL images/Ubuntu/Ubuntu20.04LTS/x64/casper/vmlinuz
      APPEND root=/dev/nfs toram boot=casper vga=normal netboot=nfs nfsroot=192.168.252.101:/volume1/pxe-boot/TFTP-Root/images/Ubuntu/Ubuntu20.04LTS/x64 ip=dhcp initrd=images/Ubuntu/Ubuntu20.04LTS/x64/casper/initrd locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet splash —

      1. Dieser TFTP-Root Ordner ist auch in dem gemeinsamen Ordner “pxe-boot”? Wenn darin direkt der images Ordner liegt, musst du die Angabe einfach löschen.

        Du bist aber der einzige, der wirklich nachschauen kann, wie die Ordner bei dir heißen. Ich habe dir ja bereits gesagt, warum der Boot nicht funktioniert. Der Pfad ist schlicht falsch. Also guck doch einfach selbst nach wie das alles bei dir aussieht 🙂 Anhand dieser Zeilen weiß ich ja trotzdem nicht ob das bei dir die Realität widerspiegelt. Anscheinend ja nicht, denn sonst würde es ja funktionieren.

        Genau deshalb habe ich dich ja auch zusätzlich noch nach dem genauen TFTP-Root Pfad gefragt gehabt. Darauf hast du mir mir aber keine Antwort gegeben. Aber wie gesagt, schau es dir genau an. Irgendwas stimmt an dem Pfad nicht. Was genau, kannst nur du alleine herausfinden.

        1. Danke für deine Antwort. Das Problem sitzt vor dem Bildschrim… 😉

          Jetzt habe ich den Teil “/TFTP-Root/ ” aus dem Pfad rausgenommen. Sieht jetzt so aus:

          APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.252.101:/volume1/pxe-boot/images/Mint/Mint19.3/x64 ip=dhcp initrd=images/Mint/Mint19.3/x64/casper/initrd.lz locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de systemd.mask=tmp.mount quiet splash —

          Damit booten beide Mint-Versionen. Wunderbar!

          Ubuntu tut aber nicht…

          Kommt diese Fehlermeldung:
          Check finished: errors found in 3 files! You might encounter errors.

          Weißt du zufällig was ich in der Firewall der Diskstation aufmachen muss? Wenn ich die einschalte mountet der nicht.

          VG Matze

      2. Prüfe mal bitte, ob das toram in der Zeile vorkommt. Wenn das fehlt bekomme ich die gleiche Fehlermeldung wie du.

        Du müsstest in der Firewall eine neue Regel für Alle Schnittstellen erstellen und dort bei Ports die Anwendung Mac/Linux Dateiserver anhaken.

        Bei Quell-IP wählst du dann noch Alle aus.
        Bei Aktion natürlich zulassen.

        Du kannst natürlich die Bedingungen präzisieren. Wenn du nur bestimmte IP Bereiche erlauben willst oder Orte, dann kannst du das da auch einstellen. Zum Testen würde ich das allerdings erst einmal auf Alle (Quell-IP) stellen.

  2. Hallo,

    ich habe das Problem, dass bei während dem Bootvorgang von Ubuntu.
    Genau beim nfs Mount der cdrom, das Netzwerk ausfällt.
    Dann bekomme ich die Fehlermeldung, unable to find a live cd on filesystem.

    Im initramfs kann ich ein ifstat machen und habe anschließen wieder Netzwerk, dann ist es auch möglich den nfs export auf /cdrom zu mounten.

    Hätten Sie hier eine mögliche Erklärung oder vielleicht einen Lösungsansatz für das Problem?

    Grüße

    1. In dem iPXE Skript, worüber du den Ubuntu Eintrag startest, kommt folgendes in der Zeile vor: ip=dhcp?

      Wenn es das nicht ist, dann müsstest du mal deine Zeilen, die du zum starten verwendest, posten.

  3. Hallo Stefan,

    danke für die schnelle Antwort, die Option benutze ich.

    set server_ip 1.2.3.4
    set nfs_path /export/ISOs/UbuntuDesktop
    kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz
    initrd nfs:///${server_ip}${nfs_path}casper/initrd
    imgargs vmlinuz initrd=initrd root=/dev/nfs file=${nfs_path}/preseed/ubuntu.seed toram boot=casper vga=normal netboot=nfs nfsroot=${server_ip}${nfs_path} ip=dhcp locale=de_DE keyboard-configuration/layoutcode=de console-setup/layoutcode=de quiet splash --
    boot || goto failed
    goto start

    Vielen Dank schon im Voraus für die Mühe!

    1. Ja das stimmt! aber auch mit dem Doppelpunkt funktioniert es leider nicht.

      Ich lande an der selben Stelle in initramfs mit der Meldung:
      Unable to find a live file system on the Network

      Bei der Abfrage ifconfig bekomme ich dann die richtige IP und kann per nfsmount das Verzeichnis auf /cdrom mounten.

      Das funktioniert aber leider nicht automatisch.

      1. Was genau verstehst du unter: “bekomme ich dann die richtige IP”. Welche “unechte” hattest du denn vorher? Oder was genau stimmt daran nicht? Das müsstest du mir mal genauer erklären.

        1. Damit meine ich nur das ich eine IP Adresse vom DHCP Server bekomme.

          Ich habe nur die Vermutung, das die Netzwerkverbindung vor dem nfsmount abbricht und sobald ich in initramfs lande aber wieder eine IP zugewiesen bekomme.

          1. Eigentlich kann das nicht sein, denn wenn er keine IP vom DHCP Server beziehen könnte, dann würdest du überhaupt nicht zu dem nfsmount Punkt kommen, da dieser erst danach gestartet wird. Eine IP hast du also definitiv bezogen, wenn du bis zu deiner Fehlermeldung kommst. Ich persönlich denke eher, das an dem Pfad noch irgendwas nicht stimmt. Wenn es das nicht ist, du hast auch wirklich den ganzen Inhalt der ISO nach /export/ISOs/UbuntuDesktop kopiert?

            Ich vermute ja eher, das du das nicht gemacht hast und er wichtige Dateien deshalb nicht finden kann. Das würde dann auch die Meldung erklären.

  4. Das ist der Inhalt des Ordners:

    /export/ISOs/UbuntuDesktop# dir
    insgesamt 96
    drwxr-xr-x 11 root root 4096 Jul 14 13:45 ./
    drwxr-xr-x 8 root root 4096 Jul 14 14:00 ../
    dr-xr-xr-x 3 root root 4096 Apr 23 09:51 boot/
    dr-xr-xr-x 2 root root 4096 Jul 15 11:58 casper/
    dr-xr-xr-x 3 root root 4096 Apr 23 09:50 dists/
    dr-xr-xr-x 3 root root 4096 Apr 23 09:51 EFI/
    dr-xr-xr-x 2 root root 4096 Apr 23 09:51 install/
    dr-xr-xr-x 2 root root 12288 Apr 23 09:51 isolinux/
    -r–r–r– 1 root root 40786 Apr 23 09:51 md5sum.txt
    dr-xr-xr-x 2 root root 4096 Apr 23 09:50 pics/
    dr-xr-xr-x 4 root root 4096 Apr 23 09:50 pool/
    dr-xr-xr-x 2 root root 4096 Apr 23 09:50 preseed/
    -r–r–r– 1 root root 229 Apr 23 09:50 README.diskdefines
    lrwxrwxrwx 1 root root 1 Apr 23 09:50 ubuntu -> ./

    1. Ich muss jetzt nochmal ganz blöd nachfragen. Bist du meine Anleitung durchgegangen oder hattest du das alles selbst aufgebaut? Benutzt du die Synology als NFS Server? Oder hast du gar keine Synology und hast das auf irgendeinem Linux Rechner/Server eingerichtet? Wenn du das auf einer Synology eingerichtet hast, dann wäre der nfsroot jedenfalls nicht korrekt, da bei den Synologys auch immer das volume mit angegeben werden muss.

      Ansonsten gehen mir langsam die Ideen aus…

      1. Sry, ja ich hab das auf einem Linux Rechner installiert, allerdings sollte das kein großen Unterschied machen oder?
        Die Konfiguration basiert auf deiner Anleitung

  5. Hallo,

    Wahnsinn was für eine umfangreiche Anleitung dies geworden ist. ICh scheitere jedoch schon seit Tagen an einer viel kleineren Sache. Ich möchte Ubuntu 20.04 Live booten. Ich erhalte immer die Meldung “mount call failed – server replied: permission denied”

    mein nfs /etc/exports:
    /srv/nfsv4 192.168.178.0/24(rw,sync,no_root_squash,no_subtree_check,fsid=0)
    /srv/nfsv4/netboot 192.168.178.0/24(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure)

    meine ipxe Anweisung
    kernel http://192.168.178.8/netboot/live/ubuntu2004/casper/vmlinuz root=/dev/nfs toram boot=casper vga=normal netboot=nfs nfsroot=192.168.178.8:/netboot/live/ubuntu2004 ip=dhcp initrd=initrd locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet splash —

    initrd http://192.168.178.8/netboot/live/ubuntu2004/casper/initrd

    Ich bin nach Tagen echt am Ende meiner Ideen. Hat eventuell jemand einen Tipp für mich?

    1. Hallo z.e.R,

      ja ja, es wächst und gedeiht 😀

      Setz den nfsroot-Pfad einfach mal auf: 192.168.178.8:/srv/nfsv4/netboot/live/ubuntu2004

      Gruß

  6. Hallo Stefan,

    danke für die schnelle Antwort! Habs getestet und erhalte nun die Meldung:
    “unable to find a live file system on the network”

Schreibe einen Kommentar zu Patrick Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert