Xpenology - 해놀로지

DSM 업데이트시 파일 깨짐 문제

DSM업데이트 시도시 파일이 깨졌다고 하면서 업데이트가 안되는 경우가 있다. 특히 ESXi 같은 가상화 환경에서 해놀로지를 올렸을때 주로 발생한다. 이 증상에 대해 아래링크에 해당 문제에 대한 자세한 사항이 나와있다.

해당 문제는 해놀로지의 디스크 레이블이 잘못 되어있어서 생기는 문제이다.

아래 스크립트를 /usr/local/etc/rc.d/ 경로에 넣어주고 퍼미션을 0755로 맞춰준 후 리부팅 하면 해결된다.

FixSynoboot.sh

#!/bin/ash
# FixSynoboot() extracted from Jun 1.04b loader
# added hotplug-out event to gracefully clean up esata volumes 2020-Apr-18
# cleaned up share references in message log and root folder 2020-May-16

FixSynoboot()
{
if [ ! -e /dev/synoboot ]; then
  tail -n+3 /proc/partitions | while read major minor sz name
  do
    if echo $name | grep -q "^sd[[:alpha:]]*$";then
      basename=$name
      minor0=$minor
      synoboot1=""
      synoboot2=""
      continue
    fi
    if [ $name = "${basename}1" -a $sz -le 512000 ]; then
      synoboot1="$name"
      minor1=$minor
    elif [ $name = "${basename}2" -a $sz -le 512000 ]; then
      synoboot2="$name"
      minor2=$minor
    else
      continue
    fi
    if [ -n "$synoboot1" -a -n "$synoboot2" ]; then
      # begin hotplug event added
      if [ -e /sys/class/block/$basename ]; then
        port=$(synodiskport -portcheck $basename)
        df | grep "^/dev/$basename." | while read share; do
          share=$(echo $share | awk '{print $1,$NF}')
          sharedir=$(echo $share | awk '{print $2}')
          sharebase=$(echo $sharedir | awk -F\/ '{print $2}')
          sharedir=$(echo $sharedir | awk -F\/ '{print $3}')
          if ( synocheckshare --vol-unmounting $port $share ); then
            umount $(echo $share | awk '{print $1}')
            grep -v "^$share" /run/synostorage/volumetab >/tmp/volumetab
            mv /tmp/volumetab /run/synostorage/volumetab
            rm "/$sharebase/@eaDir/$sharedir/SYNO@.attr"
            find "/$sharebase" -empty -type d -delete 2>/dev/null
          fi
        done
        echo "remove" >/sys/class/block/$basename/uevent
      fi
      # end

      rm "/dev/$basename"
      rm "/dev/$synoboot1"
      rm "/dev/$synoboot2"
      rm "/dev/${basename}3"
      mknod /dev/synoboot b $major $minor0
      mknod /dev/synoboot1 b $major $minor1
      mknod /dev/synoboot2 b $major $minor2
      break
    fi
  done
fi
}

RUNAS="root"

case $1 in
    start)
	FixSynoboot
        exit 0
        ;;
    stop)
        exit 0
        ;;
    status)
        exit 0
        ;;
    log)
        exit 1
        ;;
    *)
        exit 1
        ;;
esac

요약

  1. Download the attached FixSynoboot.sh script –> 위 사이트에 있음.
  2. Copy the file to /usr/local/etc/rc.d
  3. chmod 0755 /usr/local/etc/rc.d/FixSynoboot.sh
  4. xpenology reboot
  5. upgrade