Fix passing explicit stage files
authorkn <kn@openbsd.org>
Wed, 7 Sep 2022 10:21:03 +0000 (10:21 +0000)
committerkn <kn@openbsd.org>
Wed, 7 Sep 2022 10:21:03 +0000 (10:21 +0000)
commit22942c2ff50fedfe2890177aea2f5af781557ccb
tree8c750c1282200f7166c4e3c5b7b56983b4360003
parent7033594364ad31634264ac85ff4eef6ee22bede8
Fix passing explicit stage files

Every platform ought to set `stages', `stage1' and optionally `stage2'
in md_init(), otherwise passing explicit files results won't work as
`stages' is zero-initialised and no default path is set:

# installboot -v sd0 /root/BOOTAA64.EFI
usage: installboot [-npv] [-r root] disk [stage1]

This is correct synopsis and ought to work, but efi_installboot.c has an
empty md_init().  Set stage bits to fix this:

# ./obj/installboot -nv sd0 /root/BOOTAA64.EFI
Using / as root
would install bootstrap on /dev/rsd0c
using first-stage /root/BOOTAA64.EFI
would copy /root/BOOTAA64.EFI to /tmp/installboot.2bGhLGT1eF/efi/boot/bootaa64.efi
would write /tmp/installboot.2bGhLGT1eF/efi/boot/startup.nsh

This makes regress/usr.sbin/installboot pass on armv7, arm64 and riscv64
(while being lucky or carrying miod's fix for the kernel disklabel race
manifesting on vnd).
usr.sbin/installboot/efi_installboot.c