This is not a rant or "finger pointing" session, I have a statement and
some questions about GRUB2 options both in building it and installing it.
I have found no real useful information describing how to configure
GRUB2 or in using grub-install. Anything I've been able to try or
further research comes from <./configure --help>, <grub-install --help>
and <grub-mkimage --help>. I've also opened grub-install and read it to
find out some of what I want to know. The currently available "GRUB
Manual" goes only so far as grub-2.00-rc-1 and was written in Jun 2012.
I don't know how many rc's there were, but I know that there's more
capability in GRUB2 now than the manual covers.
Before I start into the specifics of my discoveries and questions, I
want to say that I have not found any, useful or not, descriptions of
the grub modules. Oh, I know that many are self-explanatory by their
name, like chainload, but what does efiemu do? Either I haven't
researched enough or there's nothing. If anyone knows a place where
this information exists, I would love to hear about it.
Configuring GRUB2 for an efi install means varying from "the Book."
Using This document <https://help.ubuntu.com/community/UEFIBooting> I
learned about the option "--with-platform=" and the only thing that
"./configure --help" indicated was
--with-platform=PLATFORM
select the host platform [[guessed]]
and I didn't know whether or not this was something that I should know
because I use Linux or whether it was something specific to the GRUB2
build. Anyway, the referenced article had this command for configuring
GRUB2 for a 64-bit {,U}EFI build.
export EFI_ARCH=x86_64
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""
Now, to backtrack a little, when I built GRUB2 during my LFS-7.4 build,
I used the configure options just as stated in the book. The message I
got at the end of configuring included the statement "Platform: i386"
and the installed directory in /usr/lib/grub was i386-pc.
I can't remember where I read this in my research, but something to the
effect that if grub installed its files as "*-pc" then it would have led
to a GRUB2 situation of writing to the MSDOS MBR of a non-GPT disk or
the MBR Protected Layer of a GPT disk. I didn't want that.
So, I did a "DESTDIR" install of GRUB2, with the same configure options
of the book with the addition of "--with-platform=efi" Then the
configure message said, "Platform: x86_64-efi" and "efiemu runtime: No
(not available on efi." And the directory in /usr/lib/grub was
x86_64-efi. I think this is significant to those who want to ultimately
get grub on the EFI partition.
I found it also interesting that efiemu was not available. Since I
couldn't find any description of that module, I have concluded that it
does something when grub is read from the MBR Protected Layer of a GPT
disk. I really don't know, though.
Now it comes to actually installing the grub files somewhere. I know
that "grub-install" utilizes "grub-mkimage" and "grub-setup" to
accomplish its task. I know what grub-mkimage does, but I don't know
exactly what "grub-setup" does. Does it just look at a disk to see
what's there? Or does it look to see what device a particular path
refers to?
I can try to use grub-install for all of this or I can do it manually as
in the article. This is the point at which the options for grub-install
become important. And this statement from "grub-install --help" has me
concerned.
grub-install copies GRUB images into /boot/grub, and uses grub-setup
to install grub into the boot sector.
I don't want to install grub to the boot sector because there is none on
my disk. Just the EFI partition. And I just discovered that grub-setup
doesn't exist on my LFS build now. I'm wondering if that didn't happen
because of the configure option --with-platform=efi. Based on this
info, I'm thinking of using
$ grub-install --bootloader-id=GRUB2-LFS-7.4 --efi-directory=$<my EFI
partition mount point>
The manual install involves this command:
cd <grub2_compiled_source_dir>/grub-core
../grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos
ntfs ntfscomp hfsplus fat ext2
normal chain boot configfile linux multiboot
Obviously the author didn't install the compiled grub binaries so I
would be working as root in some directory and using those binaries.
${EFI_ARCH} for me is x86_64. What I don't know is why those particular
modules and should there be any more or any less. Anybody?
This is much, much longer than I intended it to be, but I think the
detail was necessary so others can understand my questions, what I'm
trying to do and how I'm trying to accomplish my goal.
Thanks,
Dan
--
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page