The current arm-uboot image type is hardcoded to run at address
0x08000000 which means that it cannot be used on ARM systems which do
not have RAM starting from address 0 (which is many of them). This is a
bit of a problem for distros.

The following series attempts to address this by only performing a
partial link of the arm-uboot kernel.img at build time and enhancing
grub-mkimage to finalise the link to a specific address while building
the core.img.

I have test this on a Midway system, which has RAM at address 0, linking
to a variety of addresses (0x{0,1,4}8000000) and on a cubieboard2 which
has RAM at 0x40000000-0x80000000 linked at 0x48000000. (there is an
unrelated issue on cubieboard2 relating to the scan for the uboot API
signature, which I'm still investigating, but I hacked around it here
and things worked fine otherwise).

I have done build only tests of arm64-efi, i386-pc and x86_64-efi. After
running grub-mkimage under faketime the resulting binaries are bit for
bit identical in every case (faketime due to the timestamp in the PE
header).

I haven't yet integrated this into grub-install, I need to think a bit
more about how to automagically determine the correct link address for a
given platform.

If no target address is given then the existing hardcoded address
(0x08000000) is used as the default.

Please CC on any replies since I'm not subscribed.

Ian.


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to