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>