Linux Live ISO bootolása PXE-ről, UEFI rendszereken

Ilyen dolog márpedig nincs; legalábbis nem úgy, ahogyan más esetben, pl. BIOS-os gépeken megszokhattuk a PXE-s bootolást (azaz : hogy töküres gépre hálózatról indítani lehessen OS telepítést), hogy akár favágó módon egy ISO-t be lehet rántani, ha gyorsan kell valami. Na UEFI-n ilyen nincs. Pár dolog elindul (többé-kevésbé) sanboot-tal, meg Debian 11-re van mókolt firmware file, amiben van egy rakás hardver driver, és az működik közvetlenül csak a kernelt+initrd-t berántva PXE-n, de az elég régi, 12-höz még nem láttam ilyet.

Egy Ubuntu pedig nehezebb eset.

Az itthoni környezeten ugye már van a BIOS-os PXE/iPXE mellett egy EFI-s iPXE, ami még a Windows telepítő tesztekhez lett kreálva. A jó hír az, hogy iPXE alól nekem semmi nem működött, csak a Debian direkt bootolása. Mivel részben itthonra is, de munkahelyre is jól jön néha Linux telepítés PXE-ről, meg kellett azt is oldani. (Feltételezem a bejegyzéshez, hogy már van egy működő PXE környezet, amiről megy legalábbis az iPXE indítása UEFI-s gépen.)

Természetesen ez is favágó megoldás lesz :DDD , mert ez egyszerűbb első körben. (A kifinomultabb ugye, amikor NFS-re megy a telepítő :K .) A példában Ubuntu és Mint lesz (nagyon nem mindegy, mert a favágás miatt az Ubuntu elég púpos , 6GB a telepítő... :D ) . (Elkészülés után lett a végére Debian is :D )

Szóval első körben iPXE alól kell indítani egy Grubx64-et. (Ha valakinek nem kell Windows install, vagy GRUB-ból akarja azt is indítani, mert ugye lehet, akkor persze egyből bootolhatja a Grubx64-et... nekem már ott volt az iPXE, tehát onnan GRUB-ozódik a dolog.) A grubx64.efi megtalálható a (mondjuk, hogy Ubuntu, de a Mint-en is) telepítő CD-n a /EFI/boot könyvtárban. (Létezik signed is, még nem próbáltam secure boot-hoz.) Ha már úgyis csatolva van a CD, akkor a /casper-ből is kell az initrd és a kernel (vmlinuz) (Mint-en az initrd neve initrd.lz) A kernelt és az initrd-t tegyük le az ISO-val együtt pl. a webszerverre, vagy ez a két file akár mehet a TFTP-re is, a lényeg, hogy a GRUB majd le tudja tölteni mindet.

A grubx64.efi mehet akár webszerverre, akár a TFTP szerver könyvtárába (utóbbi talán jobb eset). A GRUB a konfigfile-ját alapvetően a /grub/grub.cfg néven keresi. A / pedig ilyenkor az, ahonnan letöltődött a grubx64.efi. (Ha elindult a GRUB, akkor meg is lehet nézni a GRUB shellben az echo $prefix vagy a set paranccsal, hogy ő mit tekint a konfigfile alapértelmezett helyének.)

Az iPXE-ből így indul a GRUB :
chain ${boot-url}/grubx64.efi
#vagy kernel ${boot-url}/grubx64.efi
boot

(A ${boot-url} az iPXE -nek azt jelenti, hogy ahonnan ő indult, nálam pl. ugyanott van az iPXE és a grubx64.efi, így ez egyszerű. )
Ha van működő GRUB, amit a PXE boot során, vagy iPXE-ből elindítunk, akkor kapunk egy GRUB shellt. Azaz, ha van konfigfile a /grub/grub.cfg néven, azt be is akarja húzni.

A grub.cfg meg valami ilyesmi :
set default="0"
set timeout=10
set linux_gfx_mode=keep
menuentry 'Linux Mint Live CD 22 Cinnamon' {
linux (http)/linuxmint/vmlinuz ip=dhcp url=http://192.168.1.106/linuxmint/linuxmint22cinnamon.iso toram  netboot=url boot=casper initrd=initrd.lz
#ha OEM install a cél, akkor a kernel paramétereihez még : oem-config/enable=true only-ubiquity username=mint hostname=mint
initrd (http)/linuxmint/initrd.lz

}

menuentry 'Ubuntu 24.04' {
linux (http)/ubuntu/vmlinuz ip=dhcp url=http://192.168.1.106/ubuntu/ubuntu2204.iso toram  netboot=url boot=casper initrd=initrd
initrd (http)/ubuntu/initrd
}

menuentry 'BIOS' {
fwsetup
}

menuentry 'EXIT' {
exit
}

Itt a (http) azt jelenti, hogy részemről a webszerverről (ami ugyanott van, mint a TFTP, sőt, még a könyvtár is ugyanaz) kellene letölteni az initrd-t, kernelt, ISO-t. Persze a GRUB nem fog panaszkodni, ha teljesen ki van írva a cím. A timeout=10 azt jelenti, hogy 10mp múlva elindul a default-ban megadott bejegyzés. A kernelnek átadott paraméterek elég beszédesek. IP-t kérjen (meg is lehet adni), a netboot módja url (lehetne NFS is), stb.

Ha minden jó, akkor valami ilyesmi történik :

A GRUB menü :

TőTTődik :

És ott a Mint Live CD (akkor az Ubuntu még nem volt hajlandó működni) :

Na most ugye itt az a gond, hogy a teljes ISO letöltődik a RAM-ba, majd ott még másolódik egy ramdiskre, szóval az ISO méreténél 2x nagyobb memória kell, ami a 6,2GB-os Ubuntu Live CD esetén... ciki :D A Mint telepítője pedig csak 2,8GB. A Canonical sajnos már nem ad netboot installert Ubuntura, csak a szerverre - ha hozzáértő az ember, akkor ez nem gond, azzal is lehet desktopot telepíteni. Nekem viszont olyasmi kellett (főleg, mivel munkahelyen is alkamazunk PXE-s telepítést) amivel első körben könnyen lehet a telepítőt cserélni (tehát új verzió esetén csak oda kell szórni pár file-t a megfelelő néven), valamint könnyen kialakítható hozzá a környezet. (8GB-nál kevesebb RAM-mal meg már itthon se gyakran fordul elő semmi, ami EFI-s, lehet barbárkodni ISO-kkal ;] .) Másik hátránya, hogy nyilván azt a 3-6GB-ot át kell rángatni a hálózaton, ami idő.

Lesz még ezen finomítva, pl. az itt, vagy itt látható NFS-es műsorral, vagy akár kipróbálom azt is, hogy a Debian netboot telepítői mit tudnak ISO-ként bebootolva GRUB-ból (mert iPXE-ből semmit :D spoiler : Grub alól ugyanazt tudják :D ) Mindenesetre már így is elég kényelmes itthon bármit (fizikait vagy virtuálist) telepíteni; automatizálni is lehetne, de hát itthon még kétszer ugyanaz nem kellett kb. :DDD

(Update : a végére azért sikerült összekaparni egy iPXE-ből is működő hálózati Debian 12 telepítőt. Ez ugye fullban Internetről megy, bár nyilván egy otthon webszerverre kirakva a file-okat meg otthonról fog. Bónusz : mindegy, hogy EFI vagy BIOS, megy mindenen, RAM-tól függetlenül.

#mukodo Bookworm current-hez iPXE alól
set inst-dir http://ftp.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/netboot/debian-installer/amd64/
kernel ${inst-dir}/linux initrd=initrd.magic auto=true priority=critical ip=dhcp
initrd ${inst-dir}/initrd.gz
initrd http://cdimage.debian.org/cdimage/firmware/bookworm/current/firmware.cpio.gz 
boot

)

Hirdetés

3 pénzügyi döntés, amit minden kisvállalkozónak érdemes átgondolnia az év végéig

PR Ahogy az év vége közeledik, itt az ideje, hogy egy pillanatra megálljunk és áttekintsük vállalkozásunk pénzügyi helyzetét. Ne hagyjuk, hogy az év utolsó hónapjai elússzanak a sürgető feladatok és elfeledett határidők között!

Tovább a fórumba.