添加DSM根分区检查与修复功能,屏蔽0B虚拟磁盘

This commit is contained in:
Ing 2024-11-27 15:13:22 +08:00
parent 7b4bb1a9f4
commit 5ae9098c11
20 changed files with 4231 additions and 4070 deletions

View File

@ -68,6 +68,7 @@ DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
MEV="$(virt-what 2>/dev/null)"
DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')" DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')"
CPU="$(awk -F': ' '/model name/ {print $2}' /proc/cpuinfo | uniq)" CPU="$(awk -F': ' '/model name/ {print $2}' /proc/cpuinfo | uniq)"
MEM="$(awk '/MemTotal:/ {printf "%.0f", $2 / 1024}' /proc/meminfo) MB" MEM="$(awk '/MemTotal:/ {printf "%.0f", $2 / 1024}' /proc/meminfo) MB"
@ -76,6 +77,7 @@ printf "%s \033[1;36m%s(%s)\033[0m\n" "$(TEXT "Model: ")" "${MODEL}" "${PLATFO
printf "%s \033[1;36m%s(%s%s)\033[0m\n" "$(TEXT "Version: ")" "${PRODUCTVER}" "${BUILDNUM}" "$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}")" printf "%s \033[1;36m%s(%s%s)\033[0m\n" "$(TEXT "Version: ")" "${PRODUCTVER}" "${BUILDNUM}" "$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}")"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "Kernel: ")" "${KERNEL}" printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "Kernel: ")" "${KERNEL}"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "LKM: ")" "${LKM}" printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "LKM: ")" "${LKM}"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "MEV: ")" "${MEV:-physical}"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "DMI: ")" "${DMI}" printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "DMI: ")" "${DMI}"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "CPU: ")" "${CPU}" printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "CPU: ")" "${CPU}"
printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "MEM: ")" "${MEM}" printf "%s \033[1;36m%s\033[0m\n" "$(TEXT "MEM: ")" "${MEM}"
@ -178,6 +180,7 @@ CMDLINE['pcie_aspm']="off"
# CMDLINE['nox2apic']="" # check platform # CMDLINE['nox2apic']="" # check platform
# CMDLINE['nomodeset']="" # CMDLINE['nomodeset']=""
CMDLINE['modprobe.blacklist']="${MODBLACKLIST}" CMDLINE['modprobe.blacklist']="${MODBLACKLIST}"
CMDLINE['mev']="${MEV:-physical}"
if echo "apollolake geminilake purley" | grep -wq "${PLATFORM}"; then if echo "apollolake geminilake purley" | grep -wq "${PLATFORM}"; then
CMDLINE["nox2apic"]="" CMDLINE["nox2apic"]=""
@ -266,6 +269,7 @@ if [ "${DIRECT}" = "true" ]; then
grub-editenv ${USER_GRUBENVFILE} set dsm_version="${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))" grub-editenv ${USER_GRUBENVFILE} set dsm_version="${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))"
grub-editenv ${USER_GRUBENVFILE} set dsm_kernel="${KERNEL}" grub-editenv ${USER_GRUBENVFILE} set dsm_kernel="${KERNEL}"
grub-editenv ${USER_GRUBENVFILE} set dsm_lkm="${LKM}" grub-editenv ${USER_GRUBENVFILE} set dsm_lkm="${LKM}"
grub-editenv ${USER_GRUBENVFILE} set sys_mev="${MEV:-physical}"
grub-editenv ${USER_GRUBENVFILE} set sys_dmi="${DMI}" grub-editenv ${USER_GRUBENVFILE} set sys_dmi="${DMI}"
grub-editenv ${USER_GRUBENVFILE} set sys_cpu="${CPU}" grub-editenv ${USER_GRUBENVFILE} set sys_cpu="${CPU}"
grub-editenv ${USER_GRUBENVFILE} set sys_mem="${MEM}" grub-editenv ${USER_GRUBENVFILE} set sys_mem="${MEM}"
@ -285,6 +289,7 @@ else
grub-editenv ${USER_GRUBENVFILE} unset dsm_version grub-editenv ${USER_GRUBENVFILE} unset dsm_version
grub-editenv ${USER_GRUBENVFILE} unset dsm_kernel grub-editenv ${USER_GRUBENVFILE} unset dsm_kernel
grub-editenv ${USER_GRUBENVFILE} unset dsm_lkm grub-editenv ${USER_GRUBENVFILE} unset dsm_lkm
grub-editenv ${USER_GRUBENVFILE} unset sys_mev
grub-editenv ${USER_GRUBENVFILE} unset sys_dmi grub-editenv ${USER_GRUBENVFILE} unset sys_dmi
grub-editenv ${USER_GRUBENVFILE} unset sys_cpu grub-editenv ${USER_GRUBENVFILE} unset sys_cpu
grub-editenv ${USER_GRUBENVFILE} unset sys_mem grub-editenv ${USER_GRUBENVFILE} unset sys_mem

View File

@ -215,7 +215,7 @@ function _get_fastest() {
speedlist+="${I} ${speed:-999}\n" # Assign default value 999 if speed is empty speedlist+="${I} ${speed:-999}\n" # Assign default value 999 if speed is empty
done done
fi fi
local fastest="$(echo -e "${speedlist}" | tr -s '\n' | grep -v '999$' | sort -k2n | head -1)" local fastest="$(echo -e "${speedlist}" | tr -s '\n' | awk '$2 != "999"' | sort -k2n | head -1)"
URL="$(echo "${fastest}" | awk '{print $1}')" URL="$(echo "${fastest}" | awk '{print $1}')"
SPD="$(echo "${fastest}" | awk '{print $2}')" # It is a float type SPD="$(echo "${fastest}" | awk '{print $2}')" # It is a float type
echo "${URL:-${1}}" echo "${URL:-${1}}"
@ -438,6 +438,17 @@ function findDSMRoot() {
return 0 return 0
} }
###############################################################################
# check and fix the DSM root partition
# 1 - DSM root path
function fixDSMRootPart() {
if mdadm --detail "${1}" 2>/dev/null | grep -i "State" | grep -iEq "active|FAILED|Not Started"; then
mdadm --stop "${1}" >/dev/null 2>&1
mdadm --assemble --scan >/dev/null 2>&1
fsck "${1}" >/dev/null 2>&1
fi
}
############################################################################### ###############################################################################
# Copy DSM files to the boot partition # Copy DSM files to the boot partition
# 1 - DSM root path # 1 - DSM root path

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1519,8 +1519,7 @@ function showDisksInfo() {
MSG+="\Zb${NAME}\Zn\nPorts: " MSG+="\Zb${NAME}\Zn\nPorts: "
PORTS=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) PORTS=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n)
for P in ${PORTS}; do for P in ${PORTS}; do
if lsscsi -b 2>/dev/null | grep -v - | grep -q "\[${P}:"; then if lsscsi -bS 2>/dev/null | awk '$3 != "0"' | grep -v - | grep -q "\[${P}:"; then
DUMMY="$([ "$(cat /sys/class/scsi_host/host${P}/ahci_port_cmd 2>/dev/null)" = "0" ] && echo 1 || echo 2)"
if [ "$(cat /sys/class/scsi_host/host${P}/ahci_port_cmd 2>/dev/null)" = "0" ]; then if [ "$(cat /sys/class/scsi_host/host${P}/ahci_port_cmd 2>/dev/null)" = "0" ]; then
MSG+="\Z1$(printf "%02d" ${P})\Zn " MSG+="\Z1$(printf "%02d" ${P})\Zn "
else else
@ -1537,16 +1536,16 @@ function showDisksInfo() {
for PCI in $(lspci -d ::104 2>/dev/null | awk '{print $1}'); do for PCI in $(lspci -d ::104 2>/dev/null | awk '{print $1}'); do
NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://")
PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n)
PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) PORTNUM=$(lsscsi -bS 2>/dev/null | awk '$3 != "0"' | grep -v - | grep "\[${PORT}:" | wc -l)
[ ${PORTNUM} -eq 0 ] && continue [ ${PORTNUM} -eq 0 ] && continue
MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n"
NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) NUMPORTS=$((${NUMPORTS} + ${PORTNUM}))
done done
[ $(lspci -d ::107 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nSerial Attached SCSI:\n" [ $(lspci -d ::107 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nSAS:\n"
for PCI in $(lspci -d ::107 2>/dev/null | awk '{print $1}'); do for PCI in $(lspci -d ::107 2>/dev/null | awk '{print $1}'); do
NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://")
PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n)
PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) PORTNUM=$(lsscsi -bS 2>/dev/null | awk '$3 != "0"' | grep -v - | grep "\[${PORT}:" | wc -l)
[ ${PORTNUM} -eq 0 ] && continue [ ${PORTNUM} -eq 0 ] && continue
MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n"
NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) NUMPORTS=$((${NUMPORTS} + ${PORTNUM}))
@ -1571,12 +1570,12 @@ function showDisksInfo() {
for PCI in $(lspci -d ::c03 2>/dev/null | awk '{print $1}'); do for PCI in $(lspci -d ::c03 2>/dev/null | awk '{print $1}'); do
NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://")
PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n)
PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) PORTNUM=$(lsscsi -bS 2>/dev/null | awk '$3 != "0"' | grep -v - | grep "\[${PORT}:" | wc -l)
[ ${PORTNUM} -eq 0 ] && continue [ ${PORTNUM} -eq 0 ] && continue
MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n"
NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) NUMPORTS=$((${NUMPORTS} + ${PORTNUM}))
done done
[ $(ls -l /sys/class/mmc_host 2>/dev/null | grep mmc_host | wc -l) -gt 0 ] && MSG+="\nMMC:\n" [ $(ls -l /sys/block/mmc* | wc -l) -gt 0 ] && MSG+="\nMMC:\n"
for PCI in $(lspci -d ::805 2>/dev/null | awk '{print $1}'); do for PCI in $(lspci -d ::805 2>/dev/null | awk '{print $1}'); do
NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://")
PORTNUM=$(ls -l /sys/block/mmc* 2>/dev/null | grep "${PCI}" | wc -l) PORTNUM=$(ls -l /sys/block/mmc* 2>/dev/null | grep "${PCI}" | wc -l)
@ -1588,7 +1587,7 @@ function showDisksInfo() {
for PCI in $(lspci -d ::108 2>/dev/null | awk '{print $1}'); do for PCI in $(lspci -d ::108 2>/dev/null | awk '{print $1}'); do
NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://")
PORT=$(ls -l /sys/class/nvme 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/nvme//' | sort -n) PORT=$(ls -l /sys/class/nvme 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/nvme//' | sort -n)
PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[N:${PORT}:" | wc -l) PORTNUM=$(lsscsi -bS 2>/dev/null | awk '$3 != "0"' | grep -v - | grep "\[N:${PORT}:" | wc -l)
[ ${PORTNUM} -eq 0 ] && continue [ ${PORTNUM} -eq 0 ] && continue
MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n"
NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) NUMPORTS=$((${NUMPORTS} + ${PORTNUM}))
@ -1643,7 +1642,7 @@ function MountDSMVolume {
function formatDisks() { function formatDisks() {
rm -f "${TMP_PATH}/opts" rm -f "${TMP_PATH}/opts"
while read -r KNAME ID SIZE TYPE PKNAME; do while read -r KNAME ID SIZE TYPE PKNAME; do
[ "${KNAME}" = "N/A" ] && continue [ "${KNAME}" = "N/A" ] || [ "${SIZE:0:1}" = "0" ] && continue
[ "${KNAME:0:7}" = "/dev/md" ] && continue [ "${KNAME:0:7}" = "/dev/md" ] && continue
[ "${KNAME}" = "${LOADER_DISK}" ] || [ "${PKNAME}" = "${LOADER_DISK}" ] && continue [ "${KNAME}" = "${LOADER_DISK}" ] || [ "${PKNAME}" = "${LOADER_DISK}" ] && continue
printf "\"%s\" \"%-6s %-4s %s\" \"off\"\n" "${KNAME}" "${SIZE}" "${TYPE}" "${ID}" >>"${TMP_PATH}/opts" printf "\"%s\" \"%-6s %-4s %s\" \"off\"\n" "${KNAME}" "${SIZE}" "${TYPE}" "${ID}" >>"${TMP_PATH}/opts"
@ -1732,6 +1731,7 @@ function allowDSMDowngrade() {
( (
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
rm -f "${TMP_PATH}/mdX/etc/VERSION" "${TMP_PATH}/mdX/etc.defaults/VERSION" rm -f "${TMP_PATH}/mdX/etc/VERSION" "${TMP_PATH}/mdX/etc.defaults/VERSION"
@ -1762,6 +1762,7 @@ function resetDSMPassword() {
rm -f "${TMP_PATH}/menu" rm -f "${TMP_PATH}/menu"
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/etc/shadow" ]; then if [ -f "${TMP_PATH}/mdX/etc/shadow" ]; then
@ -1806,6 +1807,7 @@ function resetDSMPassword() {
# local NEWPASSWD="$(echo "${VALUE}" | mkpasswd -m sha512)" # local NEWPASSWD="$(echo "${VALUE}" | mkpasswd -m sha512)"
local NEWPASSWD="$(openssl passwd -6 -salt $(openssl rand -hex 8) "${VALUE}")" local NEWPASSWD="$(openssl passwd -6 -salt $(openssl rand -hex 8) "${VALUE}")"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
sed -i "s|^${USER}:[^:]*|${USER}:${NEWPASSWD}|" "${TMP_PATH}/mdX/etc/shadow" sed -i "s|^${USER}:[^:]*|${USER}:${NEWPASSWD}|" "${TMP_PATH}/mdX/etc/shadow"
@ -1851,6 +1853,7 @@ function addNewDSMUser() {
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then
@ -1891,6 +1894,7 @@ function forceEnableDSMTelnetSSH() {
ONBOOTUP="${ONBOOTUP}echo \"DELETE FROM task WHERE task_name LIKE ''RRONBOOTUPRR_SSH'';\" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db\n" ONBOOTUP="${ONBOOTUP}echo \"DELETE FROM task WHERE task_name LIKE ''RRONBOOTUPRR_SSH'';\" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db\n"
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then
@ -1933,6 +1937,7 @@ function removeBlockIPDB {
( (
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
rm -f "${TMP_PATH}/mdX/etc/synoautoblock.db" rm -f "${TMP_PATH}/mdX/etc/synoautoblock.db"
@ -1964,6 +1969,7 @@ function disablescheduledTasks {
( (
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then
@ -2003,6 +2009,7 @@ function initDSMNetwork {
( (
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
rm -f "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-bond"* "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-eth"* rm -f "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-bond"* "${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-eth"*
@ -2128,14 +2135,16 @@ function tryRecoveryDSM() {
DIALOG --title "$(TEXT "Settings")" \ DIALOG --title "$(TEXT "Settings")" \
--infobox "$(TEXT "Trying to recover an installed DSM system ...")" 0 0 --infobox "$(TEXT "Trying to recover an installed DSM system ...")" 0 0
DSMROOTS="$(findDSMRoot)" DSMROOTS="$(findDSMRoot)"
if [ -z "${DSMROOTS}" ]; then DSMROOTPART="$(echo "${DSMROOTS}" | head -n 1 | cut -d' ' -f1)"
if [ -z "${DSMROOTPART}" ]; then
DIALOG --title "$(TEXT "Settings")" \ DIALOG --title "$(TEXT "Settings")" \
--msgbox "$(TEXT "No DSM system partition(md0) found!\nPlease insert all disks before continuing.")" 0 0 --msgbox "$(TEXT "No DSM system partition(md0) found!\nPlease insert all disks before continuing.")" 0 0
return return
fi fi
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
mount -t ext4 "$(echo "${DSMROOTS}" | head -n 1 | cut -d' ' -f1)" "${TMP_PATH}/mdX" fixDSMRootPart "${DSMROOTPART}"
mount -t ext4 "${DSMROOTPART}" "${TMP_PATH}/mdX"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
DIALOG --title "$(TEXT "Settings")" \ DIALOG --title "$(TEXT "Settings")" \
--msgbox "$(TEXT "Mount DSM system partition(md0) failed!\nPlease insert all disks before continuing.")" 0 0 --msgbox "$(TEXT "Mount DSM system partition(md0) failed!\nPlease insert all disks before continuing.")" 0 0
@ -2359,6 +2368,7 @@ function reportBugs() {
if [ -n "${DSMROOTS}" ]; then if [ -n "${DSMROOTS}" ]; then
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
mount -t ext4 "${I}" "${TMP_PATH}/mdX" mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
mkdir -p "${TMP_PATH}/logs/md0/log" mkdir -p "${TMP_PATH}/logs/md0/log"
@ -3919,6 +3929,11 @@ function notepadMenu() {
if [ $# -ge 1 ]; then if [ $# -ge 1 ]; then
$@ $@
else else
if [ -z "${MODEL}" ] && [ -z "${PRODUCTVER}" ] && [ -n "$(findDSMRoot)" ]; then
DIALOG --title "$(TEXT "Main menu")" \
--yesno "$(TEXT "An installed DSM system is detected on the hard disk. Do you want to try to restore it first?")" 0 0
[ $? -eq 0 ] && tryRecoveryDSM
fi
# Main loop # Main loop
NEXT="m" NEXT="m"
[ -n "$(ls ${TMP_PATH}/pats/*.pat 2>/dev/null)" ] && NEXT="u" [ -n "$(ls ${TMP_PATH}/pats/*.pat 2>/dev/null)" ] && NEXT="u"

View File

@ -180,7 +180,7 @@
lspci -d ::104 # 查看 RAID 总线控制器 lspci -d ::104 # 查看 RAID 总线控制器
lspci -d ::105 # 查看 ATA 总线控制器 lspci -d ::105 # 查看 ATA 总线控制器
lspci -d ::106 # 查看 SATA 总线控制器 lspci -d ::106 # 查看 SATA 总线控制器
lspci -d ::107 # 查看 串行 Attached SCSI lspci -d ::107 # 查看 SAS 总线控制器
lspci -d ::108 # 查看 NVM 控制器 lspci -d ::108 # 查看 NVM 控制器
ls -l /sys/class/scsi_host # 查看 ATA 硬盘 host 信息 ls -l /sys/class/scsi_host # 查看 ATA 硬盘 host 信息