From 72e9d7d657113c8ac554380f5fe0aac2a379084e Mon Sep 17 00:00:00 2001 From: Ing Date: Wed, 19 Feb 2025 12:56:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A0=E7=BA=BF=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20menu.lock=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/initrd/opt/rr/boot.sh | 11 +++++++++-- files/initrd/opt/rr/include/functions.sh | 4 +--- files/initrd/opt/rr/menu.sh | 19 +++++-------------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/files/initrd/opt/rr/boot.sh b/files/initrd/opt/rr/boot.sh index ca375cb6..91b3ce29 100755 --- a/files/initrd/opt/rr/boot.sh +++ b/files/initrd/opt/rr/boot.sh @@ -228,6 +228,13 @@ if echo "purley broadwellnkv2" | grep -wq "${PLATFORM}"; then CMDLINE["SASmodel"]="1" fi +SSID="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'ssid=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')" +PSK="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'psk=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')" +if [ -n "${SSID}" ] && [ -n "${PSK}" ]; then + CMDLINE["wpa.ssid"]="${SSID}" + CMDLINE["wpa.psk"]="${PSK}" +fi + while IFS=': ' read -r KEY VALUE; do [ -n "${KEY}" ] && CMDLINE["network.${KEY}"]="${VALUE}" done <<<$(readConfigMap "network" "${USER_CONFIG_FILE}") @@ -264,7 +271,7 @@ function _bootwait() { rm -f WB WC return 1 fi - if false && [ -f "${WORK_PATH}/menu.lock" ]; then + if false && [ -f "${TMP_PATH}/menu.lock" ]; then printf "\r%$((${#MSG} * 2))s\n" " " printf "\r\033[1;33m%s\033[0m\n" "$(TEXT "Menu opened and booting is interrupted.")" rm -f WB WC @@ -342,7 +349,7 @@ else MAC=$(cat /sys/class/net/${N}/address 2>/dev/null) printf "%s(%s): " "${N}" "${MAC}@${DRIVER}" while true; do - if [ ! "${N::3}" = "eth" ]; then + if false && [ ! "${N::3}" = "eth" ]; then printf "\r%s(%s): %s\n" "${N}" "${MAC}@${DRIVER}" "$(TEXT "IGNORE (Does not support non-wired network card.)")" break fi diff --git a/files/initrd/opt/rr/include/functions.sh b/files/initrd/opt/rr/include/functions.sh index ba371e02..1109cc7f 100755 --- a/files/initrd/opt/rr/include/functions.sh +++ b/files/initrd/opt/rr/include/functions.sh @@ -420,9 +420,7 @@ function connectwlanif() { rm -f "/var/run/wpa_supplicant.pid.${1}" fi else - local CONF="" - [ -z "${CONF}" ] && [ -f "${PART1_PATH}/wpa_supplicant.conf.${1}" ] && CONF="${PART1_PATH}/wpa_supplicant.conf.${1}" - [ -z "${CONF}" ] && [ -f "${PART1_PATH}/wpa_supplicant.conf" ] && CONF="${PART1_PATH}/wpa_supplicant.conf" + local CONF="$([ -f "${PART1_PATH}/wpa_supplicant.conf" ] && echo "${PART1_PATH}/wpa_supplicant.conf" || echo "")" [ -z "${CONF}" ] && return 2 if [ -f "/var/run/wpa_supplicant.pid.${1}" ]; then diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index 33a78c1b..bac496ba 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -14,13 +14,13 @@ alias DIALOG='dialog --backtitle "$(backtitle)" --colors --aspect 50' # lock -exec 304>"${WORK_PATH}/menu.lock" +exec 304>"${TMP_PATH}/menu.lock" flock -n 304 || { MSG="$(TEXT "The menu.sh instance is already running in another terminal. To avoid conflicts, please operate in one instance only.")" dialog --colors --aspect 50 --title "$(TEXT "Error")" --msgbox "${MSG}" 0 0 exit 1 } -trap 'flock -u 304; rm -f "${WORK_PATH}/menu.lock"' EXIT INT TERM HUP +trap 'flock -u 304; rm -f "${TMP_PATH}/menu.lock"' EXIT INT TERM HUP # Check partition 3 space, if < 2GiB is necessary clean cache folder SPACELEFT=$(df -m ${PART3_PATH} 2>/dev/null | awk 'NR==2 {print $4}') @@ -2611,10 +2611,8 @@ function setWirelessAccount() { for I in $(iw wlan0 scan 2>/dev/null | grep SSID: | awk '{print $2}'); do MSG+="${I}\n"; done LINENUM=$(($(echo -e "${MSG}" | wc -l) + 8)) while true; do - SSID=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i SSID | cut -d'=' -f2) - PSK=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i PSK | cut -d'=' -f2) - SSID="${SSID//\"/}" - PSK="${PSK//\"/}" + SSID="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'ssid=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')" + PSK="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'psk=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')" DIALOG --title "$(TEXT "Settings")" \ --form "${MSG}" ${LINENUM:-16} 70 2 "SSID" 1 1 "${SSID}" 1 7 58 0 " PSK" 2 1 "${PSK}" 2 7 58 0 \ 2>"${TMP_PATH}/resp" @@ -2632,14 +2630,7 @@ function setWirelessAccount() { connectwlanif "${N}" 0 && sleep 1 done else - rm -f ${PART1_PATH}/wpa_supplicant.conf - echo "ctrl_interface=/var/run/wpa_supplicant" >>${PART1_PATH}/wpa_supplicant.conf - echo "update_config=1" >>${PART1_PATH}/wpa_supplicant.conf - echo "network={" >>${PART1_PATH}/wpa_supplicant.conf - echo " ssid=\"${SSID}\"" >>${PART1_PATH}/wpa_supplicant.conf - echo " psk=\"${PSK}\"" >>${PART1_PATH}/wpa_supplicant.conf - echo "}" >>${PART1_PATH}/wpa_supplicant.conf - + echo -e "ctrl_interface=/var/run/wpa_supplicant\nupdate_config=1\nnetwork={\n ssid=\"${SSID}\"\n priority=1\n psk=\"${PSK}\"\n}" >${PART1_PATH}/wpa_supplicant.conf for N in ${ETHX}; do connectwlanif "${N}" 1 && sleep 1 MACR="$(cat /sys/class/net/${N}/address 2>/dev/null | sed 's/://g')"