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 , mert ez egyszerűbb első körben. (A kifinomultabb ugye, amikor NFS-re megy a telepítő
.) 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ő...
) . (Elkészülés után lett a végére Debian is
)
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 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 spoiler : Grub alól ugyanazt tudják
) 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.
(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
)