[lfs-dev] Missing option for grub-install?

Pierre Labastie pierre.labastie at neuf.fr
Mon Jan 21 07:05:02 PST 2019


On 21/01/2019 11:09, Xi Ruoyao via lfs-dev wrote:
> On 2019-01-21 10:44 +0100, Pierre Labastie via lfs-dev wrote:
>> Hi,
>>
>> My machine has an UEFI BIOS, so that I rarely run grub-install. But yesterday,
>> I built a new qemu VM, with a non-UEFI (virtual) BIOS. When running
>> grub-install, it failed with a message (sorry, I haven't saved it) telling
>> that it could not find /usr/lib/grub/x86_64-efi. Running "grub-install --help"
>> returned:
>> ---------
>> [...]
>> --target TARGET    install GRUB for TARGET platform [default=x86_64-efi]
>> [...]
>> ---------
>> so I had to run "grub-install --target i386-pc /dev/sda". But now that I have
>> done that, "grub-install --help" returns:
>> ---------
>> [...]
>> --target TARGET    install GRUB for TARGET platform [default=i386-pc]
>> [...]
>> ---------
>>
>> So the default seems to be what is already installed. Checking the source for
>> grub-install confirms that. I must have taken a virtual disk used for a former
>> VM with UEFI BIOS.
> 
> No.  Grub 2.02 is detecting the target dynamically at runtime by checking if
> /sys/firmware/efi is empty.  At first time your system was booted via UEFI so
> this is not empty.  But at the second time your system was booted via Legacy
> BIOS so this is empty.

You are right about the process, but what amazes me is that the first boot was
not particularly EFI. I had a DOS partitioning (not GPT), and no /boot/EFI
dir, and yet it must have found something in /sys/firmware/efi since it
proposed x86_64 as the default (I do have the EFI switches on in the kernel).
Well, looks like it will be hard to reproduce.

> 
>> Should we add this switch (--target i386-pc) to the grub-install command in
>> the book?
> 
> If the host is booted via UEFI we'll need that to install a non-UEFI Grub.
> But I think it's dangerous (may break the booting process of the host).  We
> should explain this option more seriously (maybe in a "NOTE" or even
> "CAUTION").
> 

Yes, that may break machines with only UEFI boot. I think the command should
be written without "--target", as it is now, but a note should be added to
explain that the --target option may be used if the wrong if the application
default is wrong

Pierre


More information about the lfs-dev mailing list