优化 boot.sh 和 functions.sh,修复设备检测逻辑,支持 Docker 环境

This commit is contained in:
Ing 2025-09-17 12:59:52 +08:00
parent 38caa773d7
commit 2f02843dff
3 changed files with 8 additions and 4 deletions

View File

@ -112,7 +112,7 @@ printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "MEM: ")" "${MEM}"
if ! readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q nvmesystem; then
HASATA=0
for D in $(lsblk -dpno NAME); do
for D in $(lsblk -dpno KNAME); do
[ "${D}" = "${LOADER_DISK}" ] && continue
if echo "sata sas scsi" | grep -wq "$(getBus "${D}")"; then
HASATA=1

View File

@ -246,6 +246,7 @@ function _sort_netif() {
ETHLIST=""
for F in /sys/class/net/eth*; do
[ ! -e "${F}" ] && continue
local ETH MAC BUS
ETH="$(basename "${F}")"
MAC="$(cat "/sys/class/net/${ETH}/address" 2>/dev/null | sed 's/://g; s/.*/\L&/')"
BUS="$(ethtool -i "${ETH}" 2>/dev/null | grep bus-info | cut -d' ' -f2)"
@ -288,10 +289,11 @@ function _sort_netif() {
# 1 - device path
function getBus() {
local BUS=""
[ -f "/.dockerenv" ] && BUS="docker"
# usb/ata(ide)/sata/sas/spi(scsi)/virtio/mmc/nvme
[ -z "${BUS}" ] && BUS=$(lsblk -dpno KNAME,TRAN 2>/dev/null | grep "${1} " | awk '{print $2}' | sed 's/^ata$/ide/' | sed 's/^spi$/scsi/') #Spaces are intentional
# usb/scsi(ide/sata/sas)/virtio/mmc/nvme/vmbus/xen(xvd)
[ -z "${BUS}" ] && BUS=$(lsblk -dpno KNAME,SUBSYSTEMS 2>/dev/null | grep "${1} " | awk '{print $2}' | awk -F':' '{print $(NF-1)}' | sed 's/_host//' | sed 's/^.*xen.*$/xen/') # Spaces are intentional
[ -z "${BUS}" ] && BUS=$(lsblk -dpno KNAME,SUBSYSTEMS 2>/dev/null | grep "${1} " | awk '{split($2,a,":"); if(length(a)>1) print a[length(a)-1]}' | sed 's/_host//' | sed 's/^.*xen.*$/xen/') # Spaces are intentional
[ -z "${BUS}" ] && BUS="unknown"
echo "${BUS}"
return 0

View File

@ -94,7 +94,7 @@ fi
initConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
initConfigKey "modblacklist" "evbug,cdc_ether" "${USER_CONFIG_FILE}"
if [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
if [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
if arrayExistItem "sortnetif:" "$(readConfigMap "addons" "${USER_CONFIG_FILE}")"; then
_sort_netif "$(readConfigKey "addons.sortnetif" "${USER_CONFIG_FILE}")"
fi
@ -129,12 +129,14 @@ PID="0x0001"
TYPE="DoM"
BUS=$(getBus "${LOADER_DISK}")
BUSLIST="usb sata sas scsi nvme mmc ide virtio vmbus xen"
BUSLIST="usb sata sas scsi nvme mmc ide virtio vmbus xen docker"
if [ "${BUS}" = "usb" ]; then
VID="0x$(udevadm info --query property --name "${LOADER_DISK}" 2>/dev/null | grep "ID_VENDOR_ID" | cut -d= -f2)"
PID="0x$(udevadm info --query property --name "${LOADER_DISK}" 2>/dev/null | grep "ID_MODEL_ID" | cut -d= -f2)"
[ "${VID}" = "0x" ] || [ "${PID}" = "0x" ] && die "$(TEXT "The loader disk does not support the current USB Portable Hard Disk.")"
TYPE="flashdisk"
elif [ "${BUS}" = "docker" ]; then
TYPE="PC"
elif ! echo "${BUSLIST}" | grep -wq "${BUS}"; then
if [ "LOCALBUILD" = "${LOADER_DISK}" ]; then
echo "LOCALBUILD MODE"