优化 findDSMRoot 和 fixDSMRootPart 函数以兼容 btrfs

This commit is contained in:
Ing 2025-06-04 16:15:03 +08:00
parent f9d09c2bf5
commit 7ef526dfa6
2 changed files with 17 additions and 12 deletions

View File

@ -445,7 +445,7 @@ function connectwlanif() {
# Find and mount the DSM root filesystem
function findDSMRoot() {
local DSMROOTS=""
[ -z "${DSMROOTS}" ] && DSMROOTS="$(mdadm --detail --scan 2>/dev/null | grep -E "name=SynologyNAS:0|name=DiskStation:0|name=SynologyNVR:0|name=BeeStation:0" | awk '{print $2}' | uniq)"
[ -z "${DSMROOTS}" ] && DSMROOTS="$(mdadm --detail --scan 2>/dev/null | grep -v "INACTIVE-ARRAY" | grep -E "name=SynologyNAS:0|name=DiskStation:0|name=SynologyNVR:0|name=BeeStation:0" | awk '{print $2}' | uniq)"
[ -z "${DSMROOTS}" ] && DSMROOTS="$(lsblk -pno KNAME,PARTN,FSTYPE,FSVER,LABEL | grep -E "sd[a-z]{1,2}1" | grep -w "linux_raid_member" | grep "0.9" | awk '{print $1}')"
echo "${DSMROOTS}"
return 0
@ -458,7 +458,12 @@ 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
T="$(blkid -o value -s TYPE "${1}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
if [ "${T}" = "btrfs" ]; then
btrfs check --readonly "${1}" >/dev/null 2>&1
else
fsck "${1}" >/dev/null 2>&1
fi
fi
}

View File

@ -1839,7 +1839,7 @@ function allowDSMDowngrade() {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
rm -f "${TMP_PATH}/mdX/etc/VERSION" "${TMP_PATH}/mdX/etc.defaults/VERSION"
@ -1871,7 +1871,7 @@ function resetDSMPassword() {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/etc/shadow" ]; then
@ -1923,7 +1923,7 @@ function resetDSMPassword() {
NEWPASSWD="$(openssl passwd -6 -salt "$(openssl rand -hex 8)" "${STRPASSWD}")"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
sed -i "s|^${USER}:[^:]*|${USER}:${NEWPASSWD}|" "${TMP_PATH}/mdX/etc/shadow"
@ -1965,7 +1965,7 @@ function addNewDSMUser() {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
mkdir -p "${TMP_PATH}/mdX/usr/rr/once.d"
@ -2003,7 +2003,7 @@ function forceEnableDSMTelnetSSH() {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
mkdir -p "${TMP_PATH}/mdX/usr/rr/once.d"
@ -2047,7 +2047,7 @@ function removeBlockIPDB {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
rm -f "${TMP_PATH}/mdX/etc/synoautoblock.db"
@ -2080,7 +2080,7 @@ function disablescheduledTasks {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then
@ -2121,7 +2121,7 @@ function initDSMNetwork {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
for F in ${TMP_PATH}/mdX/etc/sysconfig/network-scripts/ifcfg-* ${TMP_PATH}/mdX/etc.defaults/sysconfig/network-scripts/ifcfg-*; do
@ -2305,7 +2305,7 @@ function tryRecoveryDSM() {
mkdir -p "${TMP_PATH}/mdX"
fixDSMRootPart "${DSMROOTPART}"
T="$(blkid -o value -s TYPE "${DSMROOTPART}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${DSMROOTPART}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${DSMROOTPART}" "${TMP_PATH}/mdX"
if [ $? -ne 0 ]; then
DIALOG --title "$(TEXT "Settings")" \
@ -2540,7 +2540,7 @@ function reportBugs() {
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null | sed 's/linux_raid_member/ext4/')"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
mkdir -p "${TMP_PATH}/logs/md0/log"