Hi All,
I've started to understand what needs to be done to support booting Hurd
from UEFI. I'm hoping to expand the hardware that I have available for
testing purposes. I've made a little progress in as far as getting
gnumach to boot and launch tasks. I'm using a serial console and Qemu to
avoid the issue of the graphical console for the moment. One thing at a
time...
So far, I've only hit 2 main issues:
1) There seems to be something amiss with the multiboot structure passed
from the bootloader since struct multiboot_raw_info.mem_upper has a
lower value (whilst using the same 2G VM) than when using BIOS. So much
lower that boot doesn't get past page table allocation before panicing.
This might perhaps be something simple but I've hacked a workaround for
now which allows progress.
2) The ACPI RSDP cannot be located using the same BIOS method as
currently. I believe other OS pass the root pointer from the bootloader
as a kernel parameter. I notice that multiboot2 supports supplying this
pointer in the multiboot structure which might be a simpler method
available to Hurd. Is there any possibility of moving to multiboot2 ?
Anyway, if not, there is perhaps a way of discovering the root pointer
from grub without resorting to a custom EFI program to do that
(Investigation required) which could then be passed as a kernel boot
parameter.
For the moment, I have instead scanned all memory regions of type
BIOSMEM_TYPE_ACPI in the biosmem_map to find the signature. This has
worked as a temporary measure.
These 2 changes allow gnumach to launch the pci-arbiter which fails
because of the same issue above. I've had a quick look at libacpica and
there's no obvious sign that it considers UEFI. Perhaps there is a more
recent version that might be used? Further investigation required.
Plenty for me to do....
Cheers,
Mike.