From 9dca1fe8303974c8a7d47c708c957e8bf18964ba Mon Sep 17 00:00:00 2001 From: Ing Date: Sat, 20 Sep 2025 02:03:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20boot.sh=20=E5=92=8C=20init?= =?UTF-8?q?.sh=EF=BC=8C=E4=BF=AE=E5=A4=8D=20MAC=20=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20Docker=20=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/initrd/opt/rr/boot.sh | 2 +- files/initrd/opt/rr/init.sh | 13 +++++++---- files/initrd/opt/rr/menu.sh | 44 ++++++++++++++++++++----------------- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/files/initrd/opt/rr/boot.sh b/files/initrd/opt/rr/boot.sh index 2c26282a..45d5f487 100755 --- a/files/initrd/opt/rr/boot.sh +++ b/files/initrd/opt/rr/boot.sh @@ -397,7 +397,7 @@ else for N in ${ETHX}; do COUNT=0 DRIVER="$(basename "$(realpath "/sys/class/net/${N}/device/driver" 2>/dev/null)" 2>/dev/null)" - MAC="$(cat "/sys/class/net/${N}/address" 2>/dev/null)" + MAC="$(cat "/sys/class/net/${N}/address" 2>/dev/null)" || MAC="00:00:00:00:00:00" printf "%s(%s): " "${N}" "${MAC}@${DRIVER}" while true; do if false && [ ! "${N::3}" = "eth" ]; then diff --git a/files/initrd/opt/rr/init.sh b/files/initrd/opt/rr/init.sh index 25f6df20..78e27f37 100755 --- a/files/initrd/opt/rr/init.sh +++ b/files/initrd/opt/rr/init.sh @@ -171,6 +171,9 @@ if ! loaderIsConfigured; then elif grep -q "IWANTTOCHANGETHECONFIG" /proc/cmdline; then printf "\033[1;33m%s\033[0m\n" "$(TEXT "User requested edit settings.")" BOOT=0 +elif [ -f "/.dockerenv" ]; then + printf "\033[1;33m%s\033[0m\n" "$(TEXT "Docker edit settings.")" + BOOT=0 fi # If is to boot automatically, do it @@ -202,13 +205,15 @@ while [ ${COUNT} -lt 30 ]; do sleep 1 done -[ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true +if [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then + [ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true +fi printf "$(TEXT "Waiting IP.\n")" for N in ${ETHX}; do COUNT=0 DRIVER="$(basename "$(realpath "/sys/class/net/${N}/device/driver" 2>/dev/null)" 2>/dev/null)" - MAC="$(cat "/sys/class/net/${N}/address" 2>/dev/null)" + MAC="$(cat "/sys/class/net/${N}/address" 2>/dev/null)" || MAC="00:00:00:00:00:00" printf "%s(%s): " "${N}" "${MAC}@${DRIVER}" while true; do if [ -z "$(cat "/sys/class/net/${N}/carrier" 2>/dev/null)" ]; then @@ -257,7 +262,7 @@ fi printf "\n" DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")" -if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then +if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then IP="$(getIP)" echo "${IP}" | grep -q "^169\.254\." && IP="" [ -n "${IP}" ] && URL="http://${IP}:${TTYD:-7681}" || URL="http://rr:${TTYD:-7681}" @@ -268,7 +273,7 @@ if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! "LOCALBUILD" = "${LOADE [ -f "${TMP_PATH}/qrcode_qhxg.png" ] && echo | fbv -acufi "${TMP_PATH}/qrcode_qhxg.png" >/dev/null 2>&1 || true fi WEBHOOKURL="$(readConfigKey "webhookurl" "${USER_CONFIG_FILE}")" -if [ -n "${WEBHOOKURL}" ] && [ ! -f "${TMP_PATH}/WebhookSent" ]; then +if [ -n "${WEBHOOKURL}" ] && [ ! -f "${TMP_PATH}/WebhookSent" ] && [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')" IP="$(getIP)" echo "${IP}" | grep -q "^169\.254\." && IP="" diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index 391ac18d..f5761043 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -1513,12 +1513,16 @@ function make() { ############################################################################### # Calls boot.sh to boot into DSM kernel/ramdisk function boot() { - [ -f "${PART1_PATH}/.build" ] && DIALOG --title "$(TEXT "Alert")" \ - --yesno "$(TEXT "Config changed, would you like to rebuild the loader?")" 0 0 - if [ $? -eq 0 ]; then - make || return + if [ -f "${PART1_PATH}/.build" ]; then + DIALOG --title "$(TEXT "Alert")" \ + --yesno "$(TEXT "Config changed, would you like to rebuild the loader?")" 0 0 + if [ $? -eq 0 ]; then + make || return 1 + "${WORK_PATH}/boot.sh" && exit 0 + fi + else + "${WORK_PATH}/boot.sh" && exit 0 fi - ${WORK_PATH}/boot.sh } ############################################################################### @@ -2456,9 +2460,9 @@ function cloneBootloaderDisk() { fdisk -l "${TODESK}" sleep 1 - NEW_BLDISK_P1="$(lsblk "${TODESK}" -pno KNAME,LABEL 2>/dev/null | grep 'RR1' | awk '{print $1}')" - NEW_BLDISK_P2="$(lsblk "${TODESK}" -pno KNAME,LABEL 2>/dev/null | grep 'RR2' | awk '{print $1}')" - NEW_BLDISK_P3="$(lsblk "${TODESK}" -pno KNAME,LABEL 2>/dev/null | grep 'RR3' | awk '{print $1}')" + NEW_BLDISK_P1="$(blkid | grep -v "${LOADER_DISK_PART1}:" | awk -F: '/LABEL="RR1"/ {print $1}')" + NEW_BLDISK_P2="$(blkid | grep -v "${LOADER_DISK_PART2}:" | awk -F: '/LABEL="RR2"/ {print $1}')" + NEW_BLDISK_P3="$(blkid | grep -v "${LOADER_DISK_PART3}:" | awk -F: '/LABEL="RR3"/ {print $1}')" SIZEOFDISK=$(blockdev --getsz "${TODESK}" 2>/dev/null) # SIZEOFDISK=$(cat /sys/block/${TODESK/\/dev\//}/size) ENDSECTOR=$(fdisk -l "${TODESK}" | grep "${NEW_BLDISK_P3}" | awk '{print $(NF-4)}') if [ ${SIZEOFDISK:-0} -ne $((${ENDSECTOR:-0} + 1)) ]; then @@ -3477,19 +3481,19 @@ function settingsMenu() { !) MSG="" - MSG+=" \n" - MSG+=" ██▀███ ██▀███ ▒█████ ██▀███ ▄████ \n" - MSG+="▓██ ▒ ██▒▓██ ▒ ██▒▒██▒ ██▒▓██ ▒ ██▒ ██▒ ▀█▒\n" - MSG+="▓██ ░▄█ ▒▓██ ░▄█ ▒▒██░ ██▒▓██ ░▄█ ▒▒██░▄▄▄░\n" - MSG+="▒██▀▀█▄ ▒██▀▀█▄ ▒██ ██░▒██▀▀█▄ ░▓█ ██▓\n" - MSG+="░██▓ ▒██▒░██▓ ▒██▒░ ████▓▒░░██▓ ▒██▒░▒▓███▀▒\n" - MSG+="░ ▒▓ ░▒▓░░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ░▒ ▒ \n" - MSG+=" ░▒ ░ ▒░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ░ ░ \n" - MSG+=" ░░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░ ░ \n" - MSG+=" ░ ░ ░ ░ ░ ░ \n" - MSG+=" \n" + MSG+=" \n" + MSG+=" ██▀███ ██▀███ ▒█████ ██▀███ ▄████ \n" + MSG+=" ▓██ ▒ ██▒ ▓██ ▒ ██▒ ▒██▒ ██▒ ▓██ ▒ ██▒ ██▒ ▀█▒ \n" + MSG+=" ▓██ ░▄█ ▒ ▓██ ░▄█ ▒ ▒██░ ██▒ ▓██ ░▄█ ▒▒ ██░▄▄▄░ \n" + MSG+=" ▒██▀▀█▄ ▒██▀▀█▄ ▒██ ██░ ▒██▀▀█▄ ░ ▓█ ██▓ \n" + MSG+=" ░██▓ ▒██▒ ░██▓ ▒██▒ ░ ████▓▒░ ░██▓ ▒██▒░ ▒▓███▀▒ \n" + MSG+=" ░ ▒▓ ░▒▓░ ░ ▒▓ ░▒▓░ ░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ░▒ ▒ \n" + MSG+=" ░▒ ░ ▒░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ░ ░ \n" + MSG+=" ░░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░ ░ \n" + MSG+=" ░ ░ ░ ░ ░ ░ \n" + MSG+=" \n" DIALOG --title "$(TEXT "Settings")" \ - --msgbox "${MSG}" 0 0 + --ascii-lines --msgbox "${MSG}" 15 60 NEXT="e" ;; e)