From 47c7ab35c0b42ecfcad8d505a3ccdb3fae7c9ae0 Mon Sep 17 00:00:00 2001 From: Electronic Eel Date: Sun, 30 May 2021 14:15:59 +0200 Subject: [PATCH] Automatically run EFI conversion steps Before this commit the user was supposed to give the -e cmdline parameter to run the EFI conversion when necessary. But it was missing in the getopts parameter list, so it didn't work. Instead of fixing it, I opted to remove the -e parameter alltogether and automatically detect if the system is running on EFI or not. Because if the user should forget to give -e on an EFI system, it would result in an unbootable system without any bootmanager installed. Fixing this situation takes time and requires some sysadmin skills, so we should take steps to avoid this situation. Detecting if the system runs on EFI or not can reliably done by checking for /sys/firmware/efi/. --- migrate2rocky.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/migrate2rocky.sh b/migrate2rocky.sh index f8a9166..196ad61 100644 --- a/migrate2rocky.sh +++ b/migrate2rocky.sh @@ -382,7 +382,6 @@ usage() { "Usage: ${0##*/} [OPTIONS]" \ '' \ 'Options:' \ - '-e Update EFI boot sector when done' \ '-h Display this help' \ '-r Convert to rocky' \ '-V Verify switch' \ @@ -517,6 +516,21 @@ EOF dnf -y distro-sync || exit_message "Error during distro-sync." } +# Check if this system is running on EFI +# If yes, we'll need to run fix_efi() at the end of the conversion +efi_check () { + # Check if we have /sys mounted and it is looking sane + if ! [[ -d /sys/class/block ]]; then + exit_message "/sys is not accessible." + fi + + # Now that we know /sys is reliable, use it to check if we are running on EFI or not + if [[ -d /sys/firmware/efi/ ]]; then + declare -g update_efi + update_efi=true + fi +} + # Called to update the EFI boot. fix_efi () ( grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg || @@ -540,9 +554,6 @@ while getopts "hrVR" option; do V) verify_all_rpms=true ;; - e) - update_efi=true - ;; *) printf '%s\n' "${errcolor}Invalid switch.$nocolor" usage @@ -553,6 +564,7 @@ if (( ! noopts )); then usage fi +efi_check bin_check if [[ $verify_all_rpms ]]; then