> Date: Sat, 29 Mar 2025 16:26:16 +0000
> From: Klemens Nanni <[email protected]>
>
> 29.03.2025 18:51, Mark Kettenis пишет:
> >> From: "Theo de Raadt" <[email protected]>
> >> Date: Sat, 29 Mar 2025 09:35:34 -0600
> >>
> >> Stuart Henderson <[email protected]> wrote:
> >>
> >>> On 2025/03/29 14:30, Klemens Nanni wrote:
> >>>> 23.03.2025 19:30, Sven Wolf пишет:
> >>>>> since some weeks, after I run 'sysupgrade -n -s -k' and installed the
> >>>>> current snapshot, the boot order in UEFI gets changed.
> >>>>
> >>>> This is intended, OpenBSD attempts to ensure that it is booted by
> >>>> default.
> >>>>
> >>>>> I there a way to disable this behavior?
> >>>>
> >>>> No.
> >>>
> >>> Probably makes sense for install but this seems a pretty bad idea after an
> >>> update.
> >>
> >> Yeah, that's possibly the right conclusion. A conditional in the
> >> script might be required.
> >
> > The solution I had in mind was to do the following:
> >
> > * If the OpenBSD Boot#### boot option doesn't exist, create it and
> > prepend it to the BootOrder list.
> >
> > * If the OpenBSD Boot#### boot option exists, do nothing (and leave
> > BootOrder alone).
>
> That would default to OpenBSD once and then leave it alone for users
> to reorder, which seems like a better approach for both sides.
Diff below implements that approach.
> > If we do this, we may want to set the BootNext variable such that a
> > reboot boots OpenBSD and finishes the install.
>
> On install OpenBSD's Boot#### is not expected to be there, but if it is, this
> would ensure we follow through without messing with existing order.
Right. So if you end up uninstalling OpenBSD and reinstall it later,
it might not boot into OpenBSD by default.
> Upgrades should do this either way... any reason not to always set BootNext?
Not sure what you're trying to say here. The only reason I see for
not setting BootNext is when someone runs installboot -c manually and
doesn't immediately reboot. Then booting into OpenBSD might come as a
surprise when the system gets rebooted eventually. I don't think this
would be a huge issue.
Index: usr.sbin/installboot/efi_bootmgr.c
===================================================================
RCS file: /cvs/src/usr.sbin/installboot/efi_bootmgr.c,v
diff -u -p -r1.4 efi_bootmgr.c
--- usr.sbin/installboot/efi_bootmgr.c 4 Mar 2025 20:40:48 -0000 1.4
+++ usr.sbin/installboot/efi_bootmgr.c 30 Mar 2025 15:28:46 -0000
@@ -297,10 +297,7 @@ write_efi_load_option(EFI_LOAD_OPTION *o
break;
}
}
- if (found) {
- memmove(&data[2], &data[0], i);
- *(uint16_t *)&data[0] = idx;
- } else {
+ if (!found) {
/*
* If there are more than 256 load options, simply
* give up.