[lfs-support] Configuring and Installing GRUB for {,U}EFI

Bruce Dubbs bruce.dubbs at gmail.com
Wed Nov 6 19:15:10 PST 2013

Dan McGhee wrote:
> On 10/28/2013 10:55 AM, Bruce Dubbs wrote:
>> Dan McGhee wrote:
>> When all this is successful, I could write the procedure up and post
>> it.  Then, if anyone wanted to, it could be put in the book somewhere.
>> I could also write a hint if that were more practical.
>> For now, just let us know your results.
>>     -- Bruce
> So far my results are just learning. I really haven't done anything yet,
> but some people may be interested in what I have found to date. This is
> long.
> Booting Linux in general, or LFS specifically *can be* as
> straightforward as it always has been. But if someone wants to make use
> of their UEFI--formerly EFI--firmware, then it is not so straightforward
> and can be down right complex.
> The first thing to note, in the current milieu, is that if you want to
> use *secure boot*--which is an add-on to and not synonymous with
> UEFI--you can install GRUB like you always have, but you will never see
> it boot anything because, if you're doing it in a "pre-UEFI" fashion,
> it's irrelevant to secure boot and won't be seen. Secure boot is an
> option in Linux right now if and only if you are using Ubuntu>12.10,
> Fedora, OpenSuse--I don't know the version numbers--or if you have paid
> Microsoft $95 to let you write a key that you can use with your firmware
> and then figure out how to write a file that will check with the
> firmware to make sure all is OK and then check with the bootloader to
> make sure it's not vicious or malicious. (Sorry for the sarcasm). All of
> this means that you must turn off secure boot in your firmware setup.
> So far the only thing we have done in our preparation to boot LFS is
> turn off secure boot. Onward!
> The next option is to turn turn on "legacy mode" or "CMS" in the
> firmware. This is vendor specific so there are probably a number of
> things this is called. It just means "going back to the way things used
> to be."--a bootloader in the first sector of the disk. In days of yore
> this was the way all computers shipped. We are all familiar with it--one
> bootloader, chain-linking and four primary partitions. Except if you
> have a GPT partition table. To insure backwards compatibility GPT
> partition tables now have an area at the beginning of the disk called
> the "Protective MBR Layer." This is the place where GRUB would go on a
> GPT disk.
> This is also the place at which things start to muddy a bit. BIOS based
> firmware could handle only one bootloader, because it was "limited" to
> one physical spot on a fixed disk. UEFI overcomes that by using a "Boot
> Manager" to select the boot loader, and there can be, theoretically, any
> number of boot loaders, because these loaders now reside in a partition
> and not an actual physical spot on the disk. The following is the
> snipped results of my running <parted -l /dev/sda>
>> Number Start End Size File system Name Flags
>> 1 1049kB 420MB 419MB ntfs Basic data partition hidden, diag
>> 2 420MB 693MB 273MB fat32 EFI system partition boot
> If someone has this partition, chances are they've been booting in EFI
> Mode. What I've read so far is that the EFI partition is usually the
> first partition of the disk, but it's not on mine. Another vendor thing
> I think. This partition contains two directories: boot and EFI. I've
> discovered that it's standard in Linux to mount it at /boot/efi--that's
> the way it is in my Ubuntu system and it's listed in /etc/fstab. Here
> are the results of <ls /boot/efi/EFI> using Ubuntu on my HP-Envy:
>> Boot HP Microsoft ubuntu
> I've put this in here because the Boot Manager--whether written by HP or
> Microsoft I don't know--reads this directory and gives, as choices, the
> names of the directories--Boot comes across as Recovery for an option.
> You can access the Boot Manager by interrupting the boot process. On my
> machine it's done by holding the ESC key during boot and then selecting
> what I want. This is what I had to do to get to Ubuntu after I first
> installed it. The problem is in getting the Boot Manager to have a
> different default selection other than Microsoft. The solution to that
> is not trivial and I don't want to write about it until I study the
> process some more and, possibly, try it.
> But at this point let me show you the magic. Since version 3.3, the
> Linux kernel has had "efi hooks." So--and I think it's this simple--you
> could create a directory in /boot/efi/EFi--let's call it LFS-7.4--and
> put the kernel in it. Then "LFS-7.4" would appear as option in the EFI
> Boot Manager, you select it and "Holy shiny boots, Batman, there's my
> new LFS system and I didn't even use GRUB!"
> What I've tried to do is describe the "easy" ways to boot LFS now. If
> you want the computer to default to Grub2 with all the selections on it,
> then there's more.
> I've found two interesting articles on the "nuts and bolts" of all of this.
> "Managing EFI Bootloaders for Linux"
> <http://www.rodsbooks.com/efi-bootloaders/installation.html> gives a lot
> of good detail about EFI, elilo, Grub2 and the kernel. That document
> links to UEFI Booting <https://help.ubuntu.com/community/UEFIBooting>
> which has some good info also. It's slanted toward Ubuntu, but it's
> usable in general.
> I have some questions about specific GRUB2 options, but this is enough
> for tonight.

Nice writeup Dan.  I'll make a point that booting consists of copying 
the kernel image to memory and optionally also copying an initramfs file 
to memory.   You don't really need GRUB fro that.  Any program that does 
the basic copy will do.

   -- Bruce

More information about the lfs-support mailing list