From: kn Date: Fri, 7 Apr 2023 09:40:18 +0000 (+0000) Subject: Nail the root disk default in the guided disk encryption case X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=eaa36679ebe98634d59cf8a833ac18f6c480a929;p=openbsd Nail the root disk default in the guided disk encryption case Save the softraid volume's device and make it root disk default, being the only legit choice in this case; this gets it always right on systems with multiple physical disks. All other install/upgrade cases keep picking the first available [sw]d* disk as root disk default. OK afresh1 --- diff --git a/distrib/miniroot/install.sub b/distrib/miniroot/install.sub index 5919eeece32..a365bd5259e 100644 --- a/distrib/miniroot/install.sub +++ b/distrib/miniroot/install.sub @@ -1,5 +1,5 @@ #!/bin/ksh -# $OpenBSD: install.sub,v 1.1239 2023/04/02 00:58:07 kn Exp $ +# $OpenBSD: install.sub,v 1.1240 2023/04/07 09:40:18 kn Exp $ # # Copyright (c) 1997-2015 Todd Miller, Theo de Raadt, Ken Westerback # Copyright (c) 2015, Robert Peichaer @@ -310,6 +310,11 @@ get_softraid_chunks() { bioctl $_device 2>/dev/null | sed -n 's/.*<\(.*\).>$/\1/p' } +# Return list of softraid volumes. +get_softraid_volumes() { + bioctl softraid0 | sed -n 's/^softraid0.*\(sd[0-9]*\).*/\1/p' +} + # Return disk devices found in hw.disknames. get_dkdevs() { scan_disknames "${MDDKDEVS:-/^[sw]d[0-9][0-9]* /s/ .*//p}" @@ -2398,7 +2403,7 @@ is_rootdisk() { # Get global root information. ie. ROOTDISK, ROOTDEV and SWAPDEV. get_rootinfo() { - local _default=$(get_dkdevs_root) _dkdev + local _default=${CRYPTOVOLUME:-$(get_dkdevs_root)} _dkdev local _q="Which disk is the root disk? ('?' for details)" while :; do @@ -3078,7 +3083,7 @@ encrypt_root() { # Do not even try if softraid is in use already, # e.g. auto-assembled at boot or done in (S)hell. - [[ -z $(get_softraid_chunks) ]] || return + [[ -z $(get_softraid_volumes) ]] || return while :; do echo "Available disks are: $(get_dkdevs | sed 's/^$/none/')." @@ -3109,6 +3114,9 @@ __EOT done CRYPTOCHUNK=$_chunk + # No volumes existed before asking, but we just created one. + # Save it for later as sane root disk default. + CRYPTOVOLUME=$(get_softraid_volumes) } do_install() { @@ -3581,6 +3589,7 @@ NIFS=0 export PS1="$MODE# " PUB_KEY=/etc/signify/openbsd-${VERSION}-base.pub CRYPTOCHUNK= +CRYPTOVOLUME= ROOTDEV= ROOTDISK= SETDIR="$VNAME/$ARCH"