gui-init: retry mounting /boot after device changed

If CONFIG_BOOT_DEV isn't set or otherwise fails to mount,
we prompt the user to change the /boot device, but never
attempt to mount it to ensure it's sane, leading to
potential failures later in the config/boot process.

Ensure that CONFIG_BOOT_DEV is updated after the /boot device
is changed, and attempt to re-mount /boot after the change.

Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
This commit is contained in:
Matt DeVillier 2019-07-07 20:47:04 -05:00
parent 57c4207bf8
commit b1d57dac66
No known key found for this signature in database
GPG Key ID: 2BBB776A35B978FD

View File

@ -8,15 +8,22 @@ CONFIG_BOOT_GUI_MENU_NAME='Heads Boot Menu'
mount_boot() mount_boot()
{ {
# Mount local disk if it is not already mounted
while ! grep -q /boot /proc/mounts ; do
# ensure default boot device is set # ensure default boot device is set
if [ ! -e "$CONFIG_BOOT_DEV" ]; then if [ ! -e "$CONFIG_BOOT_DEV" ]; then
if (whiptail $CONFIG_ERROR_BG_COLOR --clear --title "ERROR: $CONFIG_BOOT_DEV missing!" \ if (whiptail $CONFIG_ERROR_BG_COLOR --clear --title "ERROR: $CONFIG_BOOT_DEV missing!" \
--yesno "The /boot device $CONFIG_BOOT_DEV could not be found!\n\nYou will need to configure the correct device for /boot.\n\nWould you like to configure the /boot device now?" 30 90) then --yesno "The /boot device $CONFIG_BOOT_DEV could not be found!\n\nYou will need to configure the correct device for /boot.\n\nWould you like to configure the /boot device now?" 30 90) then
config-gui.sh config-gui.sh
else
# exit to main menu
break
fi fi
# Mount local disk if it is not already mounted fi
elif ! grep -q /boot /proc/mounts ; then # update CONFIG_BOOT_DEV
mount -o ro /boot . /tmp/config
mount -o ro $CONFIG_BOOT_DEV /boot
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
if (whiptail $CONFIG_ERROR_BG_COLOR --clear --title 'ERROR: Cannot mount /boot' \ if (whiptail $CONFIG_ERROR_BG_COLOR --clear --title 'ERROR: Cannot mount /boot' \
--yesno "The /boot partition at $CONFIG_BOOT_DEV could not be mounted!\n\nWould you like to configure the /boot device now?" 30 90) then --yesno "The /boot partition at $CONFIG_BOOT_DEV could not be mounted!\n\nWould you like to configure the /boot device now?" 30 90) then
@ -25,7 +32,7 @@ mount_boot()
recovery "Unable to mount /boot" recovery "Unable to mount /boot"
fi fi
fi fi
fi done
} }
verify_global_hashes() verify_global_hashes()
{ {