Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Aug 2022 11:18:52 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Nuno Teixeira <eduardo@freebsd.org>
Cc:        Toomas Soome <tsoome@me.com>, FreeBSD CURRENT <freebsd-current@freebsd.org>
Subject:   Re: 24.3. Updating Bootcode
Message-ID:  <CANCZdfrUGxxXUrXPZ%2B9jHufQQaJdRQa2nVWviKOJzX%2B2mzJAvg@mail.gmail.com>
In-Reply-To: <CAFDf7UJrnL0RrPyto07-THmhPSBF%2BpbgqMmj%2BMmjUZpDotvjXQ@mail.gmail.com>
References:  <CAFDf7UJv9QCuD27XDs2ihLiN21Rn6PeZjbJtWVOAAfHb8HHnHw@mail.gmail.com> <62B26DE1-0E26-40BA-8647-E591E9ACEB7A@me.com> <CAFDf7UJrnL0RrPyto07-THmhPSBF%2BpbgqMmj%2BMmjUZpDotvjXQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000ecad7905e65ef160
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Aug 16, 2022 at 6:01 AM Nuno Teixeira <eduardo@freebsd.org> wrote:

> Hi Toomas,
>
> For better OS support, the UEFI specification (UEFI 2.8A Feb 14, page 499=
)
>> is suggesting to use structure like:
>>
>> <ESP>/efi/<OS>/=E2=80=A6
>>
>> And to use this suggestion, it means the UEFI Boot Manager needs to be
>> configured (see efibootmgr(8)).
>>
>> Therefore, once you have set up OS specific setup, there is no use for
>> default (<ESP>/efi/boot/=E2=80=A6) and you need to update one or another=
, but not
>> both.
>>
>
> FreeBSD have <ESP>/efi/freebsd/... but it's not configured in efibootmgr:
>

The current default installer will do this, but older upgraded systems
don't do this by default. Likely you are looking at an older
system and/or one of the 'bad actors' that reset this stuff between boots.


> efibootmgr -v:
> ---
> BootOrder  : 0004, 0000, 2002, 2003, 2001
> Boot0004* Windows Boot Manager
> HD(1,GPT,8c497825-1db2-41f8-8924-85dfd0bb7283,0x800,0x82000)/File(\EFI\Mi=
crosoft\Boot\bootmgfw.efi)
>                                    da0p1:/EFI/Microsoft/Boot/bootmgfw.efi
> (null)
> +Boot0000* EFI Hard Drive (SAMSUNG MZVLB1T0HBLR-000L2)
> PciRoot(0x0)/Pci(0x1d,0x0)/Pci(0x0,0x0)/NVMe(0x1,39-f9-b8-01-81-38-25-00)=
/HD(1,GPT,73acd1b2-de41-11eb-8156-002b67dfc673,0x28,0x82000)
>  Boot2002* EFI DVD/CDROM
>  Boot2003* EFI Network
>  Boot2001* EFI USB Device
> ---
> so boot is definitely using <ESP>/efi/boot/bootx64.efi @Boot0000
>

In your case, that's true. The "EFI Hard Drive" is a default entry the UEFI
BIOS created for you.


> I think I can create a new boot:
> ---
> efibootmgr -a -c -l /boot/efi/efi/freebsd/loader.efi -L FreeBSD-14
> (and make it active)
> efibootmgr -a -b NNNN
> ---
> and create other for loader.efi.old in case of problems.
>

Yes.


> In this case I will need only update <ESP>/efi/freebsd/loader.efi.
>
> Q: for what has been said in mailing, boot is compiled in /usr/src/stand,
> isn't a good idea that when it install new boot it backup old boot like
> /boot/kernel -> /boot/kernel.old?
>

Yes. In fact that's what's done, but only for the BIOS version. We should
do the same for efi but don't seem to do so currently. But that's likely
tied up behind issues of installing things automatically into the ESP on
'installworld'.

Warner

--000000000000ecad7905e65ef160
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Tue, Aug 16, 2022 at 6:01 AM Nuno =
Teixeira &lt;<a href=3D"mailto:eduardo@freebsd.org">eduardo@freebsd.org</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr"><div class=3D"gmail_quote"><div>Hi Toomas,</div><div><br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex">
For better OS support, the UEFI specification (UEFI 2.8A Feb 14, page 499) =
is suggesting to use structure like:<br>
<br>
&lt;ESP&gt;/efi/&lt;OS&gt;/=E2=80=A6<br>
<br>
And to use this suggestion, it means the UEFI Boot Manager needs to be conf=
igured (see efibootmgr(8)).<br>
<br>
Therefore, once you have set up OS specific setup, there is no use for defa=
ult (&lt;ESP&gt;/efi/boot/=E2=80=A6) and you need to update one or another,=
 but not both.<br></blockquote></div><div><br></div><div>FreeBSD have &lt;E=
SP&gt;/efi/freebsd/... but it&#39;s not configured in efibootmgr:</div></di=
v></blockquote><div><br></div><div>The current default installer will do th=
is, but older upgraded systems don&#39;t do this by default. Likely you are=
 looking at an older</div><div>system and/or one of the &#39;bad actors&#39=
; that reset this stuff between boots.</div><div>=C2=A0</div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
 rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>efibootmgr -v:</d=
iv><div>---</div><div>BootOrder =C2=A0: 0004, 0000, 2002, 2003, 2001</div><=
div>Boot0004* Windows Boot Manager HD(1,GPT,8c497825-1db2-41f8-8924-85dfd0b=
b7283,0x800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0da0p1:/EFI/Microsoft/Boot/bootmgfw=
.efi (null)<br>+Boot0000* EFI Hard Drive (SAMSUNG MZVLB1T0HBLR-000L2) PciRo=
ot(0x0)/Pci(0x1d,0x0)/Pci(0x0,0x0)/NVMe(0x1,39-f9-b8-01-81-38-25-00)/HD(1,G=
PT,73acd1b2-de41-11eb-8156-002b67dfc673,0x28,0x82000)</div><div>=C2=A0Boot2=
002* EFI DVD/CDROM<br>=C2=A0Boot2003* EFI Network<br>=C2=A0Boot2001* EFI US=
B Device</div><div>---</div><div>so boot is definitely using &lt;ESP&gt;/ef=
i/boot/bootx64.efi <a class=3D"gmail_plusreply" id=3D"gmail-m_2408750265426=
939096plusReplyChip-0">@Boot0000</a></div></div></blockquote><div><br></div=
><div>In your case, that&#39;s true. The &quot;EFI Hard Drive&quot; is a de=
fault entry the UEFI BIOS created for you.</div><div>=C2=A0</div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div></div><div>I =
think I can create a new boot:</div><div>---</div><div>efibootmgr -a -c -l =
/boot/efi/efi/freebsd/loader.efi -L FreeBSD-14</div><div>(and make it activ=
e)</div><div>efibootmgr -a -b NNNN</div><div>---</div><div>and create other=
 for loader.efi.old in case of problems.</div></div></blockquote><div><br><=
/div><div>Yes.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr"><div>In this case I will need only update &lt;=
ESP&gt;/efi/freebsd/loader.efi.<br></div><div><br></div><div>Q: for what ha=
s been said in mailing, boot is compiled in /usr/src/stand, isn&#39;t a goo=
d idea that when it install new boot it backup old boot like /boot/kernel -=
&gt; /boot/kernel.old?</div></div></blockquote><div><br></div><div>Yes. In =
fact that&#39;s what&#39;s done, but only for the BIOS version. We should d=
o the same for efi but don&#39;t seem to do so currently. But that&#39;s li=
kely tied up behind issues of installing things automatically into the ESP =
on &#39;installworld&#39;.</div><div><br></div><div>Warner=C2=A0</div></div=
></div>

--000000000000ecad7905e65ef160--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfrUGxxXUrXPZ%2B9jHufQQaJdRQa2nVWviKOJzX%2B2mzJAvg>