diff --git a/files/initrd/opt/arc/arc-functions.sh b/files/initrd/opt/arc/arc-functions.sh index 6ea0e3de..be242a03 100755 --- a/files/initrd/opt/arc/arc-functions.sh +++ b/files/initrd/opt/arc/arc-functions.sh @@ -1927,6 +1927,77 @@ function arcNIC () { return } +############################################################################### +# Reboot Menu +function rebootMenu() { + rm -f "${TMP_PATH}/opts" >/dev/null + touch "${TMP_PATH}/opts" + # Selectable Reboot Options + echo -e "config \"Config Mode\"" >>"${TMP_PATH}/opts" + echo -e "update \"Automated Update Mode\"" >>"${TMP_PATH}/opts" + echo -e "recovery \"Recovery Mode\"" >>"${TMP_PATH}/opts" + echo -e "junior \"Reinstall Mode\"" >>"${TMP_PATH}/opts" + echo -e "bios \"BIOS/UEFI\"" >>"${TMP_PATH}/opts" + echo -e "poweroff \"Shutdown\"" >>"${TMP_PATH}/opts" + echo -e "shell \"Exit to Shell Cmdline\"" >>"${TMP_PATH}/opts" + dialog --backtitle "$(backtitle)" --title "DSM Frequency Scaling" \ + --menu "Choose a Destination" 0 0 0 --file "${TMP_PATH}/opts" \ + 2>${TMP_PATH}/resp + [ $? -ne 0 ] && return + resp=$(cat ${TMP_PATH}/resp) + [ -z "${resp}" ] && return + REDEST=${resp} + dialog --backtitle "$(backtitle)" --title "Reboot" \ + --infobox "Reboot to ${REDEST}!" 0 0 + if [ "${REDEST}" == "bios" ]; then + efibootmgr -n 0000 + reboot + exit 0 + elif [ "${REDEST}" == "poweroff" ]; then + poweroff + exit 0 + elif [ "${REDEST}" == "shell" ]; then + break 2 + else + rebootTo ${REDEST} + exit 0 + fi + return +} + +############################################################################### +# Reset DSM Network +function resetDSMNetwork { + MSG="" + MSG+="This option will clear all customized settings of the network card and restore them to the default state.\n" + MSG+="Warning:\nThis operation is irreversible. Please backup important data. Do you want to continue?" + dialog --backtitle "$(backtitle)" --title "Reset DSM Network" \ + --yesno "${MSG}" 0 0 + [ $? -ne 0 ] && return + DSMROOTS="$(findDSMRoot)" + if [ -z "${DSMROOTS}" ]; then + dialog --backtitle "$(backtitle)" --title "Reset DSM Network" \ + --msgbox "No DSM system partition(md0) found!\nPlease insert all disks before continuing." 0 0 + return + fi + ( + mkdir -p "${TMP_PATH}/mdX" + for I in ${DSMROOTS}; do + mount -t ext4 "${I}" "${TMP_PATH}/mdX" + [ $? -ne 0 ] && continue + rm -f "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-bond"* "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-eth"* + sync + umount "${TMP_PATH}/mdX" + done + rm -rf "${TMP_PATH}/mdX" + ) 2>&1 | dialog --backtitle "$(backtitle)" --title "Reset DSM Network" \ + --progressbox "Resetting ..." 20 100 + MSG="The network settings have been resetted." + dialog --backtitle "$(backtitle)" --title "Reset DSM Network" \ + --msgbox "${MSG}" 0 0 + return +} + ############################################################################### # CPU Governor Menu function governorMenu () { diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index 0b6ad12a..562e46c9 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -892,22 +892,6 @@ function juniorboot() { exec reboot } -############################################################################### -# Calls boot.sh to boot into DSM Recovery Mode -function recoveryboot() { - BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" - [ "${BUILDDONE}" == "false" ] && dialog --backtitle "$(backtitle)" --title "Alert" \ - --yesno "Config changed, please build Loader first." 0 0 - if [ $? -eq 0 ]; then - make - fi - grub-editenv ${USER_GRUBENVFILE} set next_entry="recovery" - dialog --backtitle "$(backtitle)" --title "Arc Boot" \ - --infobox "Booting DSM Recovery Mode...\nPlease stay patient!" 4 30 - sleep 2 - exec reboot -} - ############################################################################### # Calls boot.sh to boot into DSM kernel/ramdisk function boot() { @@ -986,8 +970,6 @@ else echo "i \"Boot IP Waittime: \Z4${BOOTIPWAIT}\Zn \" " >>"${TMP_PATH}/menu" fi echo "q \"Directboot: \Z4${DIRECTBOOT}\Zn \" " >>"${TMP_PATH}/menu" - echo "J \"Boot DSM Reinstall Mode\" " >>"${TMP_PATH}/menu" - echo "I \"Boot DSM Recovery Mode\" " >>"${TMP_PATH}/menu" fi if [ "${DSMOPTS}" == "true" ]; then echo "7 \"\Z1Hide DSM Options\Zn \" " >>"${TMP_PATH}/menu" @@ -1002,7 +984,7 @@ else echo "s \"Allow Downgrade \" " >>"${TMP_PATH}/menu" echo "t \"Change User Password \" " >>"${TMP_PATH}/menu" echo "N \"Add new User\" " >>"${TMP_PATH}/menu" - echo "T \"Force enable SSH in DSM \" " >>"${TMP_PATH}/menu" + echo "J \"Reset DSM Network Config \" " >>"${TMP_PATH}/menu" if [ "${PLATFORM}" == "epyc7002" ]; then echo "K \"Kernel: \Z4${KERNEL}\Zn \" " >>"${TMP_PATH}/menu" fi @@ -1015,6 +997,7 @@ else echo "o \"Switch MacSys: \Z4${MACSYS}\Zn \" " >>"${TMP_PATH}/menu" echo "W \"RD Compression: \Z4${RD_COMPRESSED}\Zn \" " >>"${TMP_PATH}/menu" echo "X \"Sata DOM: \Z4${SATADOM}\Zn \" " >>"${TMP_PATH}/menu" + echo "T \"Force enable SSH in DSM \" " >>"${TMP_PATH}/menu" fi fi if [ "${DEVOPTS}" == "true" ]; then @@ -1043,6 +1026,7 @@ else if [ "${OFFLINE}" == "false" ]; then echo "z \"Update Loader\" " >>"${TMP_PATH}/menu" fi + echo "I \"Reboot \" " >>"${TMP_PATH}/menu" echo "V \"Credits \" " >>"${TMP_PATH}/menu" dialog --clear --default-item ${NEXT} --backtitle "$(backtitle)" --colors \ @@ -1097,8 +1081,6 @@ else writeConfigKey "arc.directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}" NEXT="q" ;; - J) juniorboot; NEXT="J" ;; - I) recoveryboot; NEXT="I" ;; # DSM Section 7) [ "${DSMOPTS}" == "true" ] && DSMOPTS='false' || DSMOPTS='true' DSMOPTS="${DSMOPTS}" @@ -1109,6 +1091,7 @@ else s) downgradeMenu; NEXT="s" ;; t) resetPassword; NEXT="t" ;; N) addNewDSMUser; NEXT="N" ;; + J) resetDSMNetwork; NEXT="J" ;; K) [ "${KERNEL}" == "official" ] && KERNEL='custom' || KERNEL='official' writeConfigKey "arc.kernel" "${KERNEL}" "${USER_CONFIG_FILE}" if [ "${ODP}" == "true" ]; then @@ -1214,6 +1197,7 @@ else ;; y) keymapMenu; NEXT="y" ;; z) updateMenu; NEXT="z" ;; + I) rebootMenu; NEXT="I" ;; V) credits; NEXT="V" ;; esac done