-
Notifications
You must be signed in to change notification settings - Fork 108
feat: Investigate NFIT parsing for uki pxe booting #3427
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
somehow our side doesnt, becuase immucore is stuck on waiting for sysroot |
ok basically this works with a few modules added in dracut for good measure and with proper ISOs (no idea which Aurora version, but latest works as expected. Seems like before, our isos were a bit wrong in construction, as they had 2 gaps on them AND one of the gpas had the same COS_LIVE label, so dracut would crap out becuase it would try to mount the fist COS_LIVE label, which is the gap With an normal iso built with AuroraBoot 0.8.0 it works out of the box because the iso has a correct table. Wrong iso:
Good iso
As you can see we had 2 gaps in there. This seems to not affect anything when booting from iso, but on http netboot it indeed does. So EFI http non-uki support is in automatically working on our side :D For UKI we migth need to add a few modules to autoload the stuff from immucore but it migth also work? The idea now is to substitute the working efi iso from grub to systemd-boot and test if it also boots as expected or systemd-boot is doing something weird |
This adds the missing modules to all initramfs on non-uki: kairos-io/kairos-init#99 |
some modules are missing on immucore and unfortunately on ubuntu we need to bring the linux-modules-extra which brings about 100Mb which is too much for UKI. Im going to do a workaround in order to store the needed modules (2) and restore them after removing the package |
umm I pushed the immucore part directyl to main by mistake but the change to support and insert the modules on boot for uki paths is this: kairos-io/immucore@00d9e81 |
This adds the workaround tog et the modules under ubuntu in kairos-init for uki booting: kairos-io/kairos-init#100 |
so now basically it needs the uki-serve comand to be simpler. No efi booting of the enroller or anything like that. I tested this with direct http booting will test tomorrow with pxe booting to see if it behaves the same (it should) |
also test wiht fedora to see if they ship the modules by default or not |
ok so I reverted the agent changes and improved the Auroraboot uki pxe support:
This works beautifully, you just pass the iso to aurora and boot and select http boot. The dhcp pxe server gets the requests, sends the data about aurora and serves the http iso. |
Also reverted the changes to agetn as they are not needed anymore, nice: kairos-io/kairos-agent#795 will now test with Fedora to see if any changes are needed or it just works. |
Fedora seems to ship the modules out of the box in a normal init build so it will probably work out of the box:
|
Fedora doesnt seem to work and somehow it cant find the /sbin/init..... because its under /usr/sbin/init Seems like under /sbin there is only the suc-upgrade?? I though it was a link now to /usr/sbin??? |
umm seems like somehow we are overriding the /usr/sbin dir when dropping the suc-upgrade on it.... As Fedora is not really supported under UKI I will try to fix it on kairos-init main branch for the 0.5.0 release, no need to backport any fixes IMHO. |
ok everything is merged. Aurora in main So everything is in place for 3.5.0, the docs need updating though. |
tested with Fedora 42 + latest init from main and it works as expected and loads the proper modules, mounts stuff around and install works beautifully. Will write docs and close this? |
actually it fails to install due some deps... |
docs: kairos-io/kairos-docs#416 |
So in UEFI 2.5 there is this NFIT Ram disk feature:
So basically it exposes that in memory iso when you pxe boot into it so the OS can access it like if it was still attached.
I tested to http boot a kairos non uki iso and indeed, the device is available after boot and immucore finds it by label and mounts it under /run/initramfs/live and /run/rootfsbase automatically.
But I did the same with a uki iso and its now available. I tried several methods to be able to read the memory and mount it directly but /proc/mem is protected.
We should investigate if this is possible. Seems like the change is systemd-boot either cleaning up stuff or something like that. The one that worked was the normal efi iso which uses grub.
Testing:
What do we want from this?
Currently we have to store the pxe address with the iso into a efivar so the OS can see it and the agent can download and mount the remote iso when doing the install as when booting we dont have the iso available anymore
This would make things simpler as the iso would just appear theere and immucore would just mount it in the proper place. No efivar, no download, no nothing special needed from the installer side. Less things in the key enroller as well as it wont have to deal with creating the efivar and so on.
The text was updated successfully, but these errors were encountered: