2016-12-01, 16:28
Hello,
our project (http://www.theforeman.org) provides functionality to generate bootdisk for individual hosts. These are either iPXE or SYSLINUX based without or with embedded linux kernel. The iPXE version does load the kernel/initramdisk directly via HTTP, users love this feature :-)
Now, we had no UEFI support, until now. I am able to implement SYSLINUX bootdisk type (we call it Full host image) with Grub2 and that was pretty simple. This should work even with SecureBoot.
I would like to add ipxe.efi into the image and be able to boot it, which is also doable either directly, or via chainbooting from Grub2. But the problem is, with SYSLINUX we've been able to provide the script via initramdisk:
This worked fine, but I am unable to do the same with chainloading from Grub:
Is there a way to tell iPXE where the script is located?
If I want to boot iPXE directly, is there any way (e.g. hardcoded path like /EFI_SCRIPT) that would work out-of-box? What I want to avoid is building iPXE from scratch (with embedded script).
Thanks for help!
our project (http://www.theforeman.org) provides functionality to generate bootdisk for individual hosts. These are either iPXE or SYSLINUX based without or with embedded linux kernel. The iPXE version does load the kernel/initramdisk directly via HTTP, users love this feature :-)
Now, we had no UEFI support, until now. I am able to implement SYSLINUX bootdisk type (we call it Full host image) with Grub2 and that was pretty simple. This should work even with SecureBoot.
I would like to add ipxe.efi into the image and be able to boot it, which is also doable either directly, or via chainbooting from Grub2. But the problem is, with SYSLINUX we've been able to provide the script via initramdisk:
Code:
default ipxe
label ipxe
kernel /ipxe
initrd /script
This worked fine, but I am unable to do the same with chainloading from Grub:
Code:
set default=0
set timeout=1
menuentry "Chainload iPXE - this does not work" {
linuxefi /ipxe.efi
initrdefi /script
}
menuentry "Chainload iPXE - this loads iPXE but no script" {
search --no-floppy --set=root -f /ipxe.efi
chainloader /ipxe.efi + 1
}
Is there a way to tell iPXE where the script is located?
If I want to boot iPXE directly, is there any way (e.g. hardcoded path like /EFI_SCRIPT) that would work out-of-box? What I want to avoid is building iPXE from scratch (with embedded script).
Thanks for help!