grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Questions regarding bzr Install Branch


From: KESHAV P.R.
Subject: Questions regarding bzr Install Branch
Date: Sat, 4 Sep 2010 14:57:05 +0530

How to detect whether a system has booted using (U)EFI and if so what
is the efi processor arch? This is not only for the grub-install
script but also the configure script.

If configure is run in a non-Apple UEFI system (mostly x86_64-efi and
without bios compatibility) configure still sets up the makefiles as
i386-pc. My suggestion would be to test for existence of either
/proc/efi dir or /sys/firmware/efi dir to confirm that the kernel has
booted in efi. Even if the dir(s) exist(s), I do not know of any way
how to detect the booted efi arch (which can be independent of linux
kernel arch).  My question is if a linux system is booted using grub2
efi (arch unknown to the user) and he/she runs configure in that
system, is it possible for the configure system to detect the platform
(efi) and the efi arch (whatever it is) correctly.

If the user runs ./configure in a non-Apple Pure UEFI system it should
automatically setup

./configure --with-platform=efi --target=(detected efi arch)

instead of

./configure --with-platform=pc --target-i386

which is what happens currently. Another question would be detecting
efi boot when "noefi" kernel parameter is used (in which case the
/rpoc/efi or /sys/firmware/efi dirs will not exist). In such a cease
dmesg output may be useful.

Regarding grub-install in install branch, does it detect the efisys
partition by checking the partition guids of the device (in case of
GPT) or checking for 0xEF type code (in case of MBR) or does it use
parted to check for existence of "boot" flag on any partition of a GPT
disk and then checking for FAT16/32 FS? I suggest adding guid
detection functionality in grub-probe for this purpose as that would
be the most accurate way of detecting efisys part (atleast in a GPT
disk). Also UEFI spec does not enforce any  "only 1 efisys partition
per disk" rule. So if there are multiple FAT32 efisys partitions in a
disk, it is better to use the first such partition in the disk for
setting grub2 efi.

Finally since efi allows multiple bootloaders, apart from the
<EFISYS_PART>/EFI/BOOT or <EFISYS_PART>/EFI/GRUB or
<EFISYS_PART>/EFI/<VENDOR or DISTRIBUTOR>, I would like to setupgrub2
in the following way :-

 <EFISYS_PART>/EFI/GRUB2 and  <EFISYS_PART>/EFI/GRUB2_EXP and such.

I suggest a slight modification in grub-install script like below -

grub-install --modules="<My list of modules for grub2 efi app>"
--root-directory="<EFISYS_PART_MountPoint>"
--grub-prefix="/EFI/grub2_Keshav" /dev/sda

such that --grub-prefix overrides all grubprefix env variables in the
grub-install script and allow the user to specify in which folder in
the efisys should grub2 be installed. I may want to install grub2
mainline in <EFISYS_PART>/EFI/grub2 and grub2 experimental branch in
<EFISYS_PART>/EFI/grub2_exp and the install branch in
<EFISYS_PART>/EFI/grub2_ins etc.

The current grub-install script sets up grub2 in /boot/grub or
/boot/<program_transformed_name>. This --grub-prefix parameter in grub
install will enable the grub2 dir naming independent of the renaming
if the grub utils according to program_transform_name parameter passed
to configure.

Regards.

Keshav



reply via email to

[Prev in Thread] Current Thread [Next in Thread]