Responding to myself:

Some progress:
I put additional informational output between all commands in the suspect area in GRUBs util/setup.c and pinpointed the bug:

#ifdef GRUB_SETUP_SPARC64
  {
    grub_partition_t container = root_dev->disk->partition;

    if (grub_strstr (container->partmap->name, "gpt"))
      bl.gpt_offset = grub_partition_get_start (container);
  }
#endif

When installing on an md-device - or other special devices - it will never have a partition table, thus "container" is null. After that, access to struct members is tried without checking if it even exists, leading to the segfault.
if (container && grub_strstr (container->partmap->name, "gpt"))
actually works & installs on LVM if I put a hint for GRUB into the device.map pointing to the UUID of the MDRAID.

I'll try to get a patch for that submitted or discussed (I'm new to this and not exactly sure if the change has other implications).


It still won't boot, though. The first "stage" in the 2nd partition block is executed by OBP and something along the lines of "GRUB FAIL - trap: Illegal Instruction" and on a second attempt "Unaligned Memory Access" was encountered...


I'll post back,

Greetings,
Robin

Reply via email to