Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 May 2020 19:45:40 +0300
From:      Daniel Braniss <danny@cs.huji.ac.il>
To:        Warner Losh <imp@bsdimp.com>
Cc:        =?utf-8?Q?Trond_Endrest=C3=B8l?= <trond.endrestol@ximalas.info>, "freebsd-hackers@freebsd.org" <hackers@freebsd.org>
Subject:   Re: efi boot question
Message-ID:  <C7EE759A-40FC-41D4-B363-FFDB645632AC@cs.huji.ac.il>
In-Reply-To: <CANCZdfr%2BXM0wF7MyzP5o%2BOSjNvCwrLgq0EjDusGe2%2BTFqdhUpQ@mail.gmail.com>
References:  <8B798F61-783C-4A1C-AEED-4B42E88E5010@cs.huji.ac.il> <alpine.BSF.2.22.395.2005011028470.91211@enterprise.ximalas.info> <9FAAF98B-77D1-4D39-8E8E-D20F2B4C2E5C@cs.huji.ac.il> <CANCZdfr%2BXM0wF7MyzP5o%2BOSjNvCwrLgq0EjDusGe2%2BTFqdhUpQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 1 May 2020, at 18:34, Warner Losh <imp@bsdimp.com> wrote:
>=20
>=20
>=20
> On Fri, May 1, 2020 at 3:54 AM Daniel Braniss <danny@cs.huji.ac.il =
<mailto:danny@cs.huji.ac.il>> wrote:
>=20
>=20
> > On 1 May 2020, at 11:42, Trond Endrest=C3=B8l =
<trond.endrestol@ximalas.info <mailto:trond.endrestol@ximalas.info>> =
wrote:
> >=20
> > On Fri, 1 May 2020 11:16+0300, Daniel Braniss wrote:
> >=20
> >> hi,
> >> I have none efi boot that:
> >>      - the bios is set to do network boot/pxe
> >>      - if the dhcpd.conf is configured with filename set to =
pxeboot, it loads as diskless,=20
> >>        or if set to =E2=80=9Cpmbr=E2=80=9D then goes and boots off =
the hard disk.
> >>      (this is faster than changing the bios boot order)
> >>=20
> >>=20
> >> so now i'm experimenting with efi boot,=20
> >> the GPT is:
> >>=20
> >> =3D>         40      5857345456  mfid0  GPT  (2.7T)
> >>              40      409600                1  efi (200M)
> >>      409640     8388608               2  freebsd-ufs  ( 4.0G)
> >>    8798248   100663296             3  freebsd-swap  (48G)
> >> 109461544  5747883952            4  freebsd-zfs     (2.7T)
> >>=20
> >> but am at loss figuring out what boot file to download.
> >> any insight is appreciated,
> >=20
> > You can try this:
> >=20
> > gpart bootcode -p /boot/boot1.efifat -i 1 mfid0
> >=20
> > This will populate /dev/mdid0p1 with a FAT filesystem containing=20
> > /boot/boot1.efi, saved as efi/boot/BOOTx64.efi. You may later =
replace=20
> > the latter file with /boot/loader.efi. You will also find=20
> > efi/boot/startup.nsh which simple instructs the boot firmware to =
load=20
> > and run BOOTx64.efi.
> >=20
> > I haven't worked out how you can grow the small 800K FAT filesystem =
to=20
> > take advantage of your 200M partition. And indeed, we will need an =
ESP=20
> > of more than 800K in the near future.
> >=20
> > This fstab entry might be handy:
> >=20
> > # Device      Mountpoint      FStype  Options                        =
 Dump    Pass#
> > /dev/mfid0p1  /esp            msdosfs rw,-l,-m=3D664,-M=3D775,noauto =
     0       0
> >=20
> > --=20
> > Trond.
>=20
>=20
> the fat partition is fine, has all that is needed, but
> I need the right bootblock instead of pmbr, and there are many  *efi* =
in /boot and I don=E2=80=99t
> know which one to use :-(
>=20
> You don't need boot blocks in UEFI.
>=20
> Create the FAT partition, use newfs_msdos to initialize it. mount it =
and create a top-level directory named EFI.
>=20
> There are several options from here:
>=20
> (1) use the 'old style' of putting boot1.efi or loader.efi into =
EFI/BOOT/BOOTX64.EFI. If you have a really simple setup, this is likely =
the easiest. It usually works (though there are exceptions for some =
crazy BIOSes). This works because the UEFI BIOS looks for removable =
devices with a ESP that has /EFI/BOOT/BOOTxxx.EFI (where xxx varies on =
architecture, for AMD64 its X64). It loads this. Both boot1.efi and =
loader.efi know what to do from here if your root filesystem is on the =
same disk as the ESP. boot1.efi searches a little harder for things, =
while loader.efi is more disciplined in what it searches for to allow =
for predictable behavior. This option works great for a FreeBSD only =
machine.
>=20
> (2) Use the new style. mount the esp somewhere, say /boot/efi. Put =
loader.efi into /boot/efi/EFI/FreeBSD and use the following command:
> efibootmgr --create --loader /boot/efi/efi/freebsd/loader.efi --kernel =
/boot/kernel/kernel --label "FreeBSD Rocks" --activate --verbose
>=20
> which creates and activates a UEFI boot variable, that tells it to =
load loader.efi first and have it load the default kernel and to label =
it "FreeBSD Rocks".
>=20
> This also works well for FreeBSD only machines and gives you more =
control if you are doing things like having redundant partitions and you =
want to nail down exactly the right one. This also works for people that =
want to have multiple versions of FreeBSD on the machine (though 11 and =
older works less well than 12 and newer).
>=20
> (3) There are a number of 3rd party chain loaders rEFInd is likely the =
most popular. I don't use those, so I can't comment on them further. =
These work well when you have multiple OSes that each have their own =
fussy notion of the proper early boot setup.
>=20
> Warner

my problem is that the bios is set to network boot/pxe. In such case
the dhcp responds with =E2=80=98filename=E2=80=99. With no efi =
partition, just freebsd-boot, setting file to pmbr - which get loaded =
via tftp , it works fine, it boots from the
disk =E2=80=99s freebd-ufs partition - if there are several, setting =
bootme does the trick.

my problem is that using pmbr it failed when the partition is efi (fat =
and all the files are there) with no boot found - or something similar.
so im wondering if there is some other file tat can be loaded via tftp =
that will load the right stuff from the efi/fat partition.

danny




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C7EE759A-40FC-41D4-B363-FFDB645632AC>