Date: Sat, 28 Mar 2020 11:07:38 +0200 From: Toomas Soome <tsoome@me.com> To: "bsd-lists@bsdforge.com" <bsd-lists@BSDforge.com> Cc: freebsd-current@freebsd.org Subject: Re: When will the FreeBSD (u)EFI work? Message-ID: <318FDBAF-448F-4C55-A9A8-69D71A73E43B@me.com> In-Reply-To: <4f8f3e359207b923a6a3e49a1405a832@udns.ultimatedns.net> References: <4f8f3e359207b923a6a3e49a1405a832@udns.ultimatedns.net>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 28. Mar 2020, at 05:28, Chris <bsd-lists@BSDforge.com> wrote: >=20 > On Fri, 27 Mar 2020 18:31:50 -0700 bsd-lists@BSDforge.com = <mailto:bsd-lists@BSDforge.com> said >=20 >> On Fri, 27 Mar 2020 17:27:27 -0600 Warner Losh imp@bsdimp.com said >> > On Fri, Mar 27, 2020 at 4:54 PM Chris <bsd-lists@bsdforge.com> = wrote: >> > > > On Sat, 28 Mar 2020 01:10:37 +0300 Andrey Fesenko = f0andrey@gmail.com said >> > > >> > > > On Sat, Mar 28, 2020 at 12:53 AM Chris <bsd-lists@bsdforge.com> = wrote: >> > > > > >> > > > > On an experiment of the FreeBSD EFI implementation. I = installed >> > > > > a copy of releng/12 from install media. Which left me with: >> > > > > # gpart show ada0 >> > > > > =3D> 40 312581728 ada0 GPT (149G) >> > > > > 40 409600 1 efi (200M) >> > > > > 409640 31047680 2 freebsd-ufs (15G) >> > > > > 31457320 7680000 3 freebsd-swap (3.7G) >> > > > > 74788904 237792864 - free - (141G) >> > > > > >> > > > > On this Intel based system, I can stab the F12 key to pick >> > > > > my UEFI bootable OS, or let it boot according to the order >> > > > > I setup in the BIOS. So far, so good. >> > > > > I needed a copy of releng/13 to also work with. Installed a = copy >> > > > > from install media. Which left me with: >> > > > > # gpart show ada0 >> > > > > =3D> 40 312581728 ada0 GPT (149G) >> > > > > 40 409600 1 efi (200M) >> > > > > 409640 31047680 2 freebsd-ufs (15G) >> > > > > 31457320 7680000 3 freebsd-swap (3.7G) >> > > > > 39137320 532480 4 efi (260M) >> > > > > 39669800 35119104 5 freebsd-ufs (17G) >> > > > > 74788904 237792864 - free - (113G) >> > > > > I *assumed* that the install would activate the new install, = and I >> > > > > would boot straight into it. But no. I am still on the = previous >> > > > > install, and worse, I can't get into the new install -- even = if >> > > > > picking it via stabbing the F12 key. I *still* end up in the = previous >> > > > > install. So looking at what might be causing it. I found the >> > following: >> > > > > # releng/12 >> > > > > # mount -t msdosfs /dev/ada0p1 /mnt/ >> > > > > >> > > > > # ls /mnt/efi/boot/ >> > > > > BOOTx64.efi >> > > > > startup.nsh >> > > > > >> > > > > # cat /mnt/efi/boot/startup.nsh >> > > > > BOOTx64.efi >> > > > > >> > > > > # umount /mnt/ >> > > > > >> > > > > releng/13 >> > > > > # mount -t msdosfs /dev/ada0p4 /mnt/ >> > > > > >> > > > > # ls /mnt/EFI/freebsd/ >> > > > > loader.efi >> > > > > >> > > > > Why the difference? When will FreeBSD (u)EFI work as = expected? >> > > > > >> > > > > Thanks in advance for any insights! >> > > > > >> > > > >> > > > Require only single efi part >> > > > >> > > > See >> > > > >> > > >> > = https://forums.freebsd.org/threads/two-freebsd-installations-and-efi.73968= / >> > > Thanks for they reply, and link, Andrey! >> > > Well that confirms it. FreeBSD, unlike other OS implementations, = will not >> > > permit booting your chosen "version" via EFI. >> > > Firstly, *huge* thanks for your informative reply, Warner! >> > It does today. If you use efibootmgr, you can boot exactly what you = want. I >> > do it all the time... Though your BIOS may overwrite the EFI vars = if you >> > set too many (I'm looking at you supermicro). When you use the efi = BootXXXX >> > variables, it's possible to boot one of many different things on = the >> > system... Though I've not done 11, just 12 and current. >> Well. That's the thing. I *am* on 12 && 13. Well *trying* to get into = 13. >> When I started this whole thing, I had some 15 entries returned by >> efibootmgr(8) -v. >> So I trimmed the list down to the 2 my BIOS presents as UEFI: >> Boot0015 UEFI: WDC WD1600JS-98MHB0 >> = PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x0,0xffff,0x0)/HD(4,GPT,6688c5af-6f93... >> Boot0011* UEFI: WDC WD1600JS-98MHB0 >> = PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x0,0xffff,0x0)/HD(1,GPT,260d2df2-6a10... >> another entry created when I installed releng/13: >> Boot0014 FreeBSD (ada0p4) >> = HD(4,GPT,6688c5af-6f93-11ea-adbb-4c72b9f5e07f,0x2553028,0x82000)/File(\EFI= \free... >> and a Windows reference (currently not installed). >> I activated *both* Boot0015 and Boot0011: >> efibootmgr -a 0015 0011. Output confirmed success. Bounced box, = choose >> Boot0015. Which booted >> initial releng/12 install. Fail. OK Try something different; >> efibootmgr -a 0014 -L FreeBSD-13. Output confirms the -L switch is = broken, >> but 00114 is active. >> Bounce box && choose 0014. Boots to initial releng/12 install. >> Conclusion; FreeBSD EFI/ESP is not ready for prime time. :( >> Thanks again for the reply, Warner! :) >> --Chris How loader is working is that it does search for *first* =E2=80=9Cusable=E2= =80=9D freebsd partition and will use it. Usable is defined as having = /boot/loader.efi. Therefore, you may have 2 or more freebsd instances on the disk, it = really does not matter, only first is used. If you have multiple disks, = you can have different order on second disk. Why it is so? We do build loader.efi and we do copy it to the ESP, and = currently there is no way to tell where is the root file system. How could we tell where from to load the OS? Well, there are few options = to think about: 1. record the hint into the loader.efi binary - this would need special = installer and would break signing. 2. record EFI variable - it should reflect OS instance version and that = version should be bound with specific loader binary. Coordination is = pain there. 3. record partition to loader.env file=20 The current loader code is reading "/efi/freebsd/loader.env=E2=80=9D = from ESP. IMO this sounds most promising, but would need support from = installer or manual setup. Would work as is with multiple ESP instances. = Would need versioned /efi/freebsdXX directories for single shared ESP = and installer update. 4. We still do have BE menu in loader, populated automatically from zfs = snapshots. It can be complemented with entries from file based index (I = wrote about that idea already). This would allow to create simple switch = to different instance or initiate chain load of third party boot loader. just few bits, toomas >> > > > > That is; not without dropping >> > > to the loader prompt, or changing the status of slices, or boot = entries >> > > prior to >> > > reboot. :( >> > > >> > > Not needed. >> > > > > Looks like I'll need to install a third party OS, or = bootmanager to use >> > > FreeBSD. >> > > Sigh... >> > > >> > > Again, not needed. Though there may be a few things that need to = be MFC'd >> > if you want 11 on that list... >> > > > > There *may* be hope in the future ( >> > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D207940) >> > > >> > > This would require you to stop to select on the way up... Or am I = not >> > understanding what you want? >> > > We should add that functionality to loader.efi, since boot1.efi = is in the >> > process of being deprecated... It should be a simple LUA script = there... > Isn't everything confined to stand/ ? > I'd like to try and write all this so that FreeBSD performs EFI/ESP = booting > in a more intuitive way. It seems odd to me, that I can install = Windows, and > it'll add FreeBSD to the (efi) boot menu, but not vis-a-vis. >=20 > --Chris >> > > > > Thanks again, Andrey. Greatly appreciated! :) >> > > >> _______________________________________________ >> freebsd-current@freebsd.org <mailto:freebsd-current@freebsd.org> = mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-current = <https://lists.freebsd.org/mailman/listinfo/freebsd-current> >> To unsubscribe, send any mail to = "freebsd-current-unsubscribe@freebsd.org = <mailto:freebsd-current-unsubscribe@freebsd.org>" >=20 >=20 > _______________________________________________ > freebsd-current@freebsd.org <mailto:freebsd-current@freebsd.org> = mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current = <https://lists.freebsd.org/mailman/listinfo/freebsd-current> > To unsubscribe, send any mail to = "freebsd-current-unsubscribe@freebsd.org = <mailto:freebsd-current-unsubscribe@freebsd.org>"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?318FDBAF-448F-4C55-A9A8-69D71A73E43B>