diff --git a/winboot b/winboot index ad9cb75..f8710e9 100755 --- a/winboot +++ b/winboot @@ -1,7 +1,7 @@ #!/bin/sh # This script set a specific grub entry (winLOOSE…) for the next boot. -# Then reboot the host +# Then reboot the host (by default) or just poweroff (if requested). # Vars {{{ readonly PROGNAME=$(basename "${0}") @@ -74,28 +74,35 @@ main() { # {{{ # First check in Grub default dir if saved mode is set if grep -q -E -R -- "^GRUB_DEFAULT=saved" "${GRUB_DEFAULT_DIR}" then - printf '%b' "Reboot to windaube partition\\n" - sudo grub-reboot "${WIN_GRUB}" - [ "${REBOOT}" -eq "0" ] && sudo systemctl reboot - [ "${HALT}" -eq "0" ] && sudo systemctl poweroff - fi + debug_message "saved mode is enable in ${GRUB_DEFAULT_DIR} dir" - # Otherwise check the default grub file - if grep -q -E -- "^GRUB_DEFAULT=saved" "${GRUB_DEFAULT_PATH}" + # Second check the default grub file + elif grep -q -E -- "^GRUB_DEFAULT=saved" "${GRUB_DEFAULT_PATH}" then - printf '%b' "Reboot to windaube partition\\n" - sudo grub-reboot "${WIN_GRUB}" - [ "${REBOOT}" -eq "0" ] && sudo systemctl reboot - [ "${HALT}" -eq "0" ] && sudo systemctl poweroff + debug_message "saved mode is enable in ${GRUB_DEFAULT_PATH} file" + # Otherwise enable saved mode else - - printf '%b' "GRUB_DEFAULT is not set in 'saved' mode\\n" + printf '%b' "GRUB_DEFAULT is not set in 'saved' mode\n" + debug_message "Enable grub saved mode in ${GRUB_DEFAULT_PATH} file" sudo sed -i 's/\(^GRUB_DEFAULT.*\)/#\1\nGRUB_DEFAULT=saved/' "${GRUB_DEFAULT_PATH}" + GRUB_DEFAULT_ENTRY=$(grep -E -- "#GRUB_DEFAULT=" "${GRUB_DEFAULT_PATH}" | cut -d"=" -f2) - sudo grub-set-default "${GRUB_DEFAULT_ENTRY}" - sudo update-grub - printf '%b' "Please launch this script (${PROGDIR}/${PROGNAME} ${ARGS}) once again.\\n" + + ## Set current GRUB_DEFAULT as default grub's entry + ## Exit if fails + sudo grub-set-default "${GRUB_DEFAULT_ENTRY}" \ + || exit 1 + + ## Try to update grub's configuration + ## Exit if fails + sudo update-grub \ + || exit 2 fi + + printf '%b' "Reboot to windaube partition\\n" + sudo grub-reboot "${WIN_GRUB}" + [ "${REBOOT}" -eq "0" ] && sudo systemctl reboot + [ "${HALT}" -eq "0" ] && sudo systemctl poweroff } # }}}