Bootování iPXE s aktivním Secure Bootem

Bootování iPXE s aktivním Secure Bootem
« kdy: 25. 10. 2025, 21:28:30 »
Dobry vecer,


donedavna jsem mel funkcni postarsi live Ubuntu, ktere slo bootovat z EFI a fungovalo mi to i z iPXE (za predpokladu vypnuteho Secure Bootu a iPXE zkompilovaneho s podporou NFS, aby slo nejak sahat na rootfs).

Par let jsem to nesledoval a koukam, ze najednou existuje iPXE i s podporou Secure Bootu - avsak, aby to MS podepsal, musela byt vyrazena podpora NFS.
https://knowledge.broadcom.com/external/article/280113/updated-64bit-ipxeefi-ipxe-v1211-binarie.html

V podstate staci jen dodat iPXE menu na adrese:
http://[Boot-Server-IP]:4433/Altiris/iPXE/GetPxeScript.aspx


A krasne to funguje treba s wimbootem pro boot do jakychkoliv winblowsich WIM, nebo treba pro memtest, potud super.


Kdyz uz se v tom babram, rad bych tam rozbehnul treba nejaky aktualni live distro (celkem jedno, jake - hlavne, at to umi sahat na aktualni zelezo... treba zivy Ubuntu nebo Debian jsou fpoho), pricemz rootfs bych natahoval pres http.
A idealne tak, aby to dokazalo schroustat i s tim slavnym Secure Bootem.


Zatim jsem ale nenatrefil na spolehlivej zpusob, jak toho docilit.



Tento postup je 9 let stary a jakkoliv mi fungoval s tim prehistorickym Ubuntu, na aktualnim live image to vzdy ztroskota na nemoznostni natahnout rootfs.
https://github.com/live-httpboot/ubuntu-live-httpboot



Plus jeste se vlastne nabizi tema... jak je to s tim Secure Bootem samotnym?

Bez problemu muzu udelat treba tohle:
kernel http://server.home.arpa:8081/debian/vmlinuz
initrd http://server.home.arpa:8081/debian/initrd.img
plus prislusne imgargs (nichz jsem jeste neodhalil spravnou kombinaci)

A kernel zacne bootovat, iPXE nevrati zadny "Exec file error" jako v pripade, kdy by kernel nebyl podepsany.



Nicmene, v ruznych clancich tykajicich se Secure Bootu a Linuxu jsem zahlednul ruzne zminky o bootovani ve smyslu:
EFI > shim (podepsany, vytahly z toho distra) > grub (totez) > kernel ...


Mozna na to jdu teda uplne spatne a z iPXE bych mel tahat toliko shim a grub a boot parametry pro natahnuti rootfs z http resit az pres grub?


Vim, ze existuje netboot.xyz, ale to stavi vsechno na nepodepsanem iPXE a k jejich (upravenym?) live imagum se mi nepodarilo dohledat...


Zkousel nekdo neco takovyho?



Diky.


Re:Bootování iPXE s aktivním Secure Bootem
« Odpověď #1 kdy: 25. 10. 2025, 23:32:43 »
eeeee... jako tahat kernel a initrd v ipxe pomocí NFS je fajn, protože TCP.
Ale jde to i postaru přes TFTP, jenom to déle trvá, protože UDP a potvrzuje se každej paket zvlášť.
Nebo pokud to jde přes HTTP, tak to asi bude podobně rychlé jako NFS.

Mountnout v diskless Linuxu rootfs z NFS... to už přece není záležitost bootloaderu (iPXE), ale distra. Může to udělat kernel rovnou, nebo to udělá něco v initrd. Mám v jednotlivých boot profilech mezi imgargs něco jako
nfsroot=192.168.222.123:/var/NFSboot/debian_diskless
Adresář udaný cestou se následně objeví mountnutý jako "/" v diskless počítači.
Přičemž obsah toho adresáře si předpřipravím na serveru utilitou debootstrap (plus nějaká omáčka okolo, mám na to takový skript). Tzn. není to "něco vykuchaného z live ISO". Je to Debian, nainstalovanej do adresáře, odkud se přes NFS podává diskless mašinkám :-)

Pravda je, že se zapnutým Secure Bootem jsem to ještě nezkoušel.
Ale v principu, jakmile se podaří loadnout a spustit linuxový kernel, tak by mělo být vystaráno, ne? Jakmile se rozběhne kernel, tak už mu ohledně použití NFS nemá UEFI co kázat...

Jose D

  • *****
  • 913
    • Zobrazit profil
Re:Bootování iPXE s aktivním Secure Bootem
« Odpověď #2 kdy: 26. 10. 2025, 01:37:04 »
no doufám že odpovídám na co se ptáš, ale měl jsem dojem že mi fungovalo něco takovýho pro gparted:

Kód: [Vybrat]
#!ipxe

set kernel_image_url http://repo.mojedomena.tld/gparted/live/vmlinuz
set ramdisk_url http://repo.mojedomena.tld/gparted/live/initrd.img

initrd ${ramdisk_url}
boot ${kernel_image_url} initrd=initrd.img boot=live config components union=overlay username=user noswap noeject vga=788 fetch=http://repo.mojedomena.tld/gparted/live/filesystem.squashfs

exit 1

boot pro live EL-like distra myslím šel obdobně, největší věc je pořádně nakonfit dracut, ale připouštím že secure boot jsem měl v nějakém defaultu,kterej může být dost tolerantní.

Ta pravá sranda přijde když budeš chtít rozjet IPXE s přiměřeně (CRL asi probovat nebudem, že...) funkčním https oproti třeba letsencrypt certům.

Re:Bootování iPXE s aktivním Secure Bootem
« Odpověď #3 kdy: 26. 10. 2025, 13:22:00 »
Pro natahnuti kernelu a initramdisku v iPXE funguje krasne HTTP, tak bych pouzil to. Samotny rootfs uz mountuje kernel, takze tam NFS klidne muze zustat.

Re:Bootování iPXE s aktivním Secure Bootem
« Odpověď #4 kdy: Dnes v 15:20:18 »
Mountnout v diskless Linuxu rootfs z NFS... to už přece není záležitost bootloaderu (iPXE), ale distra. Může to udělat kernel rovnou, nebo to udělá něco v initrd.

Pro natahnuti kernelu a initramdisku v iPXE funguje krasne HTTP, tak bych pouzil to. Samotny rootfs uz mountuje kernel, takze tam NFS klidne muze zustat.
Jeee... no jasne, tak moc jsem se soustredil na to, ze podepsany iPXE NFS neumi, takze s NFS "radsi nepocitat nikde" NFS sem, NFS tam, az mi v tom tenhleten fakt uplne zapadnul...


Samo, kernel a initrd taham pres http. Na problemy jsem narazel v pripade, kdy mel kernel dal natahnout rootfs z filesystem.squashfs pres http - tehdy ani nedochazelo k pokusum o natahnuti adresy z DHCP.
Coz, kdyz na to koukam, dava docela smysl, pac image, co jsem zkousel, sice umi squashfs a nfs, ale neumi httpfs...


Diky za nakopnuti!


Re:Bootování iPXE s aktivním Secure Bootem
« Odpověď #5 kdy: Dnes v 23:34:06 »
Aby si kernel vzal IP adresu přes DHCP (což potřebuje k nahození NFS), k tomu slouží cmdline argument
Kód: [Vybrat]
ip=dhcpA ještě bych zmínil proměnnou BOOTIF, kterou bootloader předá kernelu na jeho příkazovém řádku - obsahuje MAC adresu síťovky, ze které nastartoval síťový bootloader. Pxelinux to dělával tuším automaticky, iPXE je potřeba maličko pomoct (i tohle patří mezi imgargs):
Kód: [Vybrat]
BOOTIF=01-${mac:hexhyp}