优化 boot.sh 和 init.sh,修复 MAC 地址获取逻辑,支持 Docker 环境

This commit is contained in:
Ing 2025-09-20 02:03:46 +08:00
parent e8dc96a9b3
commit 9dca1fe830
3 changed files with 34 additions and 25 deletions

View File

@ -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

View File

@ -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=""

View File

@ -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)