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
