Add initial piece for softraid(4) support on arm64
authorkn <kn@openbsd.org>
Mon, 15 Aug 2022 17:06:43 +0000 (17:06 +0000)
committerkn <kn@openbsd.org>
Mon, 15 Aug 2022 17:06:43 +0000 (17:06 +0000)
commitbf16236fbf39511e6141ae8d086df4983f405e73
tree99da5a247122fc19ea5a7fd8b1e82e67eb1ffd79
parent0b448d840ed3c3573bbfc2437300f0f5e6fb68c4
Add initial piece for softraid(4) support on arm64

arm64 is the only currently supported OpenBSD platform which both
a) supports booting off root on softraid(4) (kernel and bootloader) and
b) is an EFI platform (as far as installboot(8) is concerned).

Currently, installboot treats softraid root volumes as regular devices,
ignoring ignores chunk devices completely.

Teach installboot the first bits of softraid support for EFI:
installing the single-stage boot loader on chunks rather than the volume.

Copy over sparc64's softraid stage-1 code as-is and make its stage-2 a NOOP:

# ./obj/installboot -v sd4
Using / as root
installing bootstrap on /dev/rsd4c
using first-stage /usr/mdec/BOOTAA64.EFI
sd4: softraid volume with 1 disk(s)
sd0a: installing boot blocks on /dev/rsd0c
copying /usr/mdec/BOOTAA64.EFI to /tmp/installboot.KuBD4zkfpM/efi/boot/bootaa64.efi
writing /tmp/installboot.KuBD4zkfpM/efi/boot/startup.nsh

arm64 miniroot fits and boots with this.

OK stsp

As of now, EFI partitions must still be created manually as installboot's
'-p' does not support softraid at all (next missing piece for root on
softraid on arm64 installations to work out-of-the-box).
usr.sbin/installboot/Makefile
usr.sbin/installboot/efi_softraid.c [new file with mode: 0644]