mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
更新 boot.sh 和 menu.sh,添加 bootwait 配置功能,优化启动等待逻辑
This commit is contained in:
parent
751284fa59
commit
99de5d84b2
@ -212,6 +212,28 @@ done
|
|||||||
CMDLINE_LINE=$(echo "${CMDLINE_LINE}" | sed 's/^ //') # Remove leading space
|
CMDLINE_LINE=$(echo "${CMDLINE_LINE}" | sed 's/^ //') # Remove leading space
|
||||||
echo -e "$(TEXT "Cmdline:\n")\033[1;36m${CMDLINE_LINE}\033[0m"
|
echo -e "$(TEXT "Cmdline:\n")\033[1;36m${CMDLINE_LINE}\033[0m"
|
||||||
|
|
||||||
|
function _bootwait() {
|
||||||
|
BOOTWAIT="$(readConfigKey "bootwait" "${USER_CONFIG_FILE}")"
|
||||||
|
[ -z "${BOOTWAIT}" ] && BOOTWAIT=10
|
||||||
|
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB
|
||||||
|
MSG=""
|
||||||
|
while test ${BOOTWAIT} -ge 0; do
|
||||||
|
MSG="$(printf "\033[1;33m$(TEXT "%2ds (Changing access(ssh/web) status will interrupt boot)")\033[0m" "${BOOTWAIT}")"
|
||||||
|
echo -en "\r${MSG}"
|
||||||
|
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WC
|
||||||
|
if ! diff WB WC >/dev/null 2>&1; then
|
||||||
|
echo -en "\r\033[1;33m$(TEXT "access(ssh/web) status has changed and booting is interrupted.")\033[0m\n"
|
||||||
|
rm -f WB WC
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
BOOTWAIT=$((BOOTWAIT - 1))
|
||||||
|
done
|
||||||
|
rm -f WB WC
|
||||||
|
echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
DIRECT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
|
DIRECT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
|
||||||
if [ "${DIRECT}" = "true" ]; then
|
if [ "${DIRECT}" = "true" ]; then
|
||||||
grub-editenv ${USER_GRUBENVFILE} set rr_version="$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")"
|
grub-editenv ${USER_GRUBENVFILE} set rr_version="$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")"
|
||||||
@ -227,6 +249,7 @@ if [ "${DIRECT}" = "true" ]; then
|
|||||||
grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}"
|
grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}"
|
||||||
grub-editenv ${USER_GRUBENVFILE} set next_entry="direct"
|
grub-editenv ${USER_GRUBENVFILE} set next_entry="direct"
|
||||||
|
|
||||||
|
_bootwait || exit 0
|
||||||
echo -e "\033[1;33m$(TEXT "Reboot to boot directly in DSM")\033[0m"
|
echo -e "\033[1;33m$(TEXT "Reboot to boot directly in DSM")\033[0m"
|
||||||
reboot
|
reboot
|
||||||
exit 0
|
exit 0
|
||||||
@ -297,24 +320,8 @@ else
|
|||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
BOOTWAIT="$(readConfigKey "bootwait" "${USER_CONFIG_FILE}")"
|
|
||||||
[ -z "${BOOTWAIT}" ] && BOOTWAIT=10
|
_bootwait || exit 0
|
||||||
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB
|
|
||||||
MSG=""
|
|
||||||
while test ${BOOTWAIT} -ge 0; do
|
|
||||||
MSG="$(printf "\033[1;33m$(TEXT "%2ds (Changing access(ssh/web) status will interrupt boot)")\033[0m" "${BOOTWAIT}")"
|
|
||||||
echo -en "\r${MSG}"
|
|
||||||
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WC
|
|
||||||
if ! diff WB WC >/dev/null 2>&1; then
|
|
||||||
echo -en "\r\033[1;33m$(TEXT "access(ssh/web) status has changed and booting is interrupted.")\033[0m\n"
|
|
||||||
rm -f WB WC
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
BOOTWAIT=$((BOOTWAIT - 1))
|
|
||||||
done
|
|
||||||
rm -f WB WC
|
|
||||||
echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n"
|
|
||||||
|
|
||||||
echo -e "\033[1;37m$(TEXT "Loading DSM kernel ...")\033[0m"
|
echo -e "\033[1;37m$(TEXT "Loading DSM kernel ...")\033[0m"
|
||||||
|
|
||||||
|
@ -2748,9 +2748,9 @@ function advancedMenu() {
|
|||||||
if [ -n "${PLATFORM}" ] && [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then
|
if [ -n "${PLATFORM}" ] && [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then
|
||||||
echo "d \"$(TEXT "Custom DTS")\"" >>"${TMP_PATH}/menu"
|
echo "d \"$(TEXT "Custom DTS")\"" >>"${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
|
echo "w \"$(TEXT "Timeout of boot wait:") \Z4${BOOTWAIT}\Zn\"" >>"${TMP_PATH}/menu"
|
||||||
if [ "${DIRECTBOOT}" = "false" ]; then
|
if [ "${DIRECTBOOT}" = "false" ]; then
|
||||||
echo "i \"$(TEXT "Timeout of get ip in boot:") \Z4${BOOTIPWAIT}\Zn\"" >>"${TMP_PATH}/menu"
|
echo "i \"$(TEXT "Timeout of get ip in boot:") \Z4${BOOTIPWAIT}\Zn\"" >>"${TMP_PATH}/menu"
|
||||||
echo "w \"$(TEXT "Timeout of boot wait:") \Z4${BOOTWAIT}\Zn\"" >>"${TMP_PATH}/menu"
|
|
||||||
echo "k \"$(TEXT "kernel switching method:") \Z4${KERNELWAY}\Zn\"" >>"${TMP_PATH}/menu"
|
echo "k \"$(TEXT "kernel switching method:") \Z4${KERNELWAY}\Zn\"" >>"${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
echo "n \"$(TEXT "Reboot on kernel panic:") \Z4${KERNELPANIC}\Zn\"" >>"${TMP_PATH}/menu"
|
echo "n \"$(TEXT "Reboot on kernel panic:") \Z4${KERNELPANIC}\Zn\"" >>"${TMP_PATH}/menu"
|
||||||
@ -2831,18 +2831,6 @@ function advancedMenu() {
|
|||||||
customDTS
|
customDTS
|
||||||
NEXT="e"
|
NEXT="e"
|
||||||
;;
|
;;
|
||||||
i)
|
|
||||||
ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")"
|
|
||||||
DIALOG --title "$(TEXT "Advanced")" \
|
|
||||||
--default-item "${BOOTIPWAIT}" --no-items --menu "$(TEXT "Choose a time(seconds)")" 0 0 0 ${ITEMS} \
|
|
||||||
2>${TMP_PATH}/resp
|
|
||||||
[ $? -ne 0 ] && continue
|
|
||||||
resp=$(cat ${TMP_PATH}/resp 2>/dev/null)
|
|
||||||
[ -z "${resp}" ] && continue
|
|
||||||
BOOTIPWAIT=${resp}
|
|
||||||
writeConfigKey "bootipwait" "${BOOTIPWAIT}" "${USER_CONFIG_FILE}"
|
|
||||||
NEXT="i"
|
|
||||||
;;
|
|
||||||
w)
|
w)
|
||||||
ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")"
|
ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")"
|
||||||
DIALOG --title "$(TEXT "Advanced")" \
|
DIALOG --title "$(TEXT "Advanced")" \
|
||||||
@ -2855,6 +2843,18 @@ function advancedMenu() {
|
|||||||
writeConfigKey "bootwait" "${BOOTWAIT}" "${USER_CONFIG_FILE}"
|
writeConfigKey "bootwait" "${BOOTWAIT}" "${USER_CONFIG_FILE}"
|
||||||
NEXT="w"
|
NEXT="w"
|
||||||
;;
|
;;
|
||||||
|
i)
|
||||||
|
ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")"
|
||||||
|
DIALOG --title "$(TEXT "Advanced")" \
|
||||||
|
--default-item "${BOOTIPWAIT}" --no-items --menu "$(TEXT "Choose a time(seconds)")" 0 0 0 ${ITEMS} \
|
||||||
|
2>${TMP_PATH}/resp
|
||||||
|
[ $? -ne 0 ] && continue
|
||||||
|
resp=$(cat ${TMP_PATH}/resp 2>/dev/null)
|
||||||
|
[ -z "${resp}" ] && continue
|
||||||
|
BOOTIPWAIT=${resp}
|
||||||
|
writeConfigKey "bootipwait" "${BOOTIPWAIT}" "${USER_CONFIG_FILE}"
|
||||||
|
NEXT="i"
|
||||||
|
;;
|
||||||
k)
|
k)
|
||||||
[ "${KERNELWAY}" = "kexec" ] && KERNELWAY='power' || KERNELWAY='kexec'
|
[ "${KERNELWAY}" = "kexec" ] && KERNELWAY='power' || KERNELWAY='kexec'
|
||||||
writeConfigKey "kernelway" "${KERNELWAY}" "${USER_CONFIG_FILE}"
|
writeConfigKey "kernelway" "${KERNELWAY}" "${USER_CONFIG_FILE}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user