[Bug 1229738] Re: grub doesn't boot with efi and md raid root
Charles Hill
cphill at altaeng.com
Wed Jan 15 16:27:42 UTC 2014
I also found this bug. I installed 12.04.3 LTS Server using md raid1
for root partition on x86-64 box using EFI boot. The Ubuntu installer
(alternate_amd.iso) sets up partitions /boot/efi and / and swap.
I also found grub installs its EFI app correctly, and it launches at
boot. However, grub can't find the root partition.
I found a different answer on how to patch around this from:
http://askubuntu.com/questions/355727/how-to-install-ubuntu-server-with-
uefi-and-raid1-lvm. Manually edit /boot/efi/EFI/ubuntu/grub.cfg and
substitute the correct UUID for the sw raid for the bad UUID in this
file. The system will now reboot, but I haven't tested booting from a
HW off.
What I'm concerned about is "how does this work?" The bootloader GRUB2
is reading /boot/efi/EFI/ubuntu/grub.cfg from the /boot/efi FAT32 UEFI
partition and executes a command "search_fs_uuid uuid root" which finds
the uuid for the RAID1 md device. But how does GRUB2 know about sw raid
devices? The / filesystem is on a RAID1. GRUB2 needs to load
/boot/grub/grub.cfg and run it.
My hypothesis is GRUB2 goes to the md superblock and finds the uuids for
the devices in the raid, goes to one of those, and since it is mirrored
(RAID1), can fetch from /boot/grub. Is that right?
Perhaps this bug is easily fixed by the installer making the UEFI FAT32
partition be at /boot instead of /boot/efi. In that case,
/boot/grub/grub.cfg will be in the UEFI partition and GRUB2 will always
know how to access it even if / is RAID5.
Can anyone confirm this line of thinking?
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1229738
Title:
grub doesn't boot with efi and md raid root
Status in “grub2” package in Ubuntu:
Confirmed
Bug description:
dick at reordberend:/tmp$ lsb_release -rd
Description: Ubuntu 12.04.3 LTS
Release: 12.04
dick at reordberend:/tmp$ apt-cache policy grub-efi-amd64
grub-efi-amd64:
Installed: 1.99-21ubuntu3.10
Candidate: 1.99-21ubuntu3.10
Installed 12.04.3 LTS Server using md raid1 for root partition on x86-64 box using EFI boot.
Grub installs its EFI app correctly, and it launches at boot. However, grub can't find the root partition. Inspecting grub's config shows that it has prefix and root set to the EFI boot partition. Manually setting those to the raid1 root partition at the grub prompt and running normal allows booting to proceed correctly (ie following the instructions at http://www.gnu.org/software/grub/manual/html_node/GRUB-only-offers-a-rescue-shell.html works).
In EFI mode, grub seems to expect its grub.cfg and modules to be in the EFI partition. However, they are all installed in the root filesystem. The problem can be solved in the grub-install script by giving an embedded config to grub-mkimage (http://www.gnu.org/software/grub/manual/html_node/Embedded-configuration.html). grub-install already has support for this, but it fails if the root partition is raided.
Inside grub-install, if devabstraction_module is set (and with md as
the root partition it will be) then config_opt_file is never set. The
attached patch solves the bug for me but will doubtless require
refining to be generally applicable.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229738/+subscriptions
More information about the foundations-bugs
mailing list