On Sun, Mar 6, 2016 at 10:33 PM, Andrei Borzenkov <[email protected]>
wrote:

> 06.03.2016 18:34, Arjun Krishnan пишет:
> > On Sat, Mar 5, 2016 at 10:35 PM, Andrei Borzenkov <[email protected]>
> wrote:
> >> 05.03.2016 20:27, Arjun Krishnan пишет:
> >>> I installed grub-efi using
> >>>
> >>>     grub-install --efi-directory=/mnt/efi --boot-directory=/boot
> >>> --target=x86_64-efi
> >>>
> >>> I did not specify a root partition anywhere (like you used to have to,
> >>> when installing it to the mbr), so how does grub set its $root and
> >>> $prefix?
> >>>
> >>
> >> grub-install configures image so that it will look for disk where
> >> /boot/grub is located at boot time and set $root and $prefix
> accordingly.
> >>
> >>> So I looked at a dual booting system that has two efi grub
> >>> installations, ubuntu and arch. It has a /efi/ubuntu directory that
> >>> has a grubx64.efi file and a grub.cfg. This grub.cfg simply sets the
> >>
> >> On EFI binary can query firmware for path it was loaded from. GRUB image
> >> can be configured so that it will use this information as value of
> $prefix.
> >
> > This explains how GRUB finds the path it was loaded from, and hence
> > the grub.cfg if it's in the path.
> > But it doesn't explain the archlinux setup, where there is no
> > grub.cfg.
>
> I answered this in previous sentence.
>
> In that case, let me clarify my question so I understand it better. The
grubx64.efi is in the EFI partition under (hd0,1)/EFI/grub for example. On
my hard disk there are several possible root partitions, say (hd0,2) and
(hd0,3) both of which have boot/grub/grub.cfg.

The efi binary is loaded from the EFI partition, and it queries the
firmware for the path it was loaded from. It was loaded from
(hd0,1)/EFI/grub. So it sets its prefix=(hd0,1)/EFI/grub. However, there is
no grub.cfg inside ${prefix}/grub/.

There is, however, a grub.cfg on (hd0,2)/boot/grub/grub.cfg and
(hd0,3)/boot/grub/grub.cfg . But only one of the two is the correct one,
and of course, grub knows where to look for this since it was installed
with --boot-directory=(hd0,2)/boot/grub. Where is this information stored?


> > Is it stored in the efi file?
> >
>
> No. It would make reconfiguring GRUB too difficult. When GRUB starts it
> reads $prefix/grub.cfg.
>
> >>> correct prefix and root. I suppose the --efi-directory is used as a
> >>> system root partition. However, inside /efi/arch I simply have a
> >>> grubx64.efi. The root and prefix are nowhere to be found. I even when
> >>> I tried to read the efi file in hex.
> >>>
> >>> How does the grubx64.efi on the arch side figure out the correct
> >>> system root partition?
> >>>
> >>>
> >>> Arjun
> >>>
> >>> _______________________________________________
> >>> Help-grub mailing list
> >>> [email protected]
> >>> https://lists.gnu.org/mailman/listinfo/help-grub
> >>>
> >>
>
>
_______________________________________________
Help-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-grub

Reply via email to