You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.8 KiB
134 lines
3.8 KiB
#!/usr/bin/env bash
|
|
|
|
# Check script is running as root
|
|
if [[ $( whoami ) != "root" ]]; then
|
|
echo "This script must be run as sudo or root!"
|
|
exit
|
|
fi
|
|
|
|
# Set fans to cool mode if PCIe card installed
|
|
synosetkeyvalue /etc.defaults/synoinfo.conf support_fan_adjust_by_ext_nic "cool"
|
|
synosetkeyvalue /etc/synoinfo.conf support_fan_adjust_by_ext_nic "cool"
|
|
|
|
|
|
url="https://raw.githubusercontent.com/007revad/Synology_HDD_db/develop/"
|
|
|
|
|
|
model=$(cat /proc/sys/kernel/syno_hw_version)
|
|
modelname="$model"
|
|
|
|
|
|
if [[ $modelname == "DS1821+" ]] || [[ $modelname == "DS1621+" ]] ||\
|
|
[[ $modelname == "DS1823xs+" ]];
|
|
then
|
|
echo "$modelname"
|
|
else
|
|
echo "$modelname not supported"
|
|
exit
|
|
fi
|
|
|
|
|
|
buildnumber="64570"
|
|
currentbldnum=$(synogetkeyvalue /etc.defaults/VERSION buildnumber)
|
|
productversion=$(synogetkeyvalue /etc.defaults/VERSION productversion)
|
|
nano=$(synogetkeyvalue /etc.defaults/VERSION nano)
|
|
os_name=$(synogetkeyvalue /etc.defaults/VERSION os_name)
|
|
|
|
if [[ $nano -gt "0" ]]; then
|
|
nanoshow=" Update $nano"
|
|
fi
|
|
|
|
if [[ ${currentbldnum}$nano -lt "${buildnumber}1" ]]; then
|
|
echo "$os_name ${productversion}-${currentbldnum}$nanoshow does not need fixing"
|
|
exit
|
|
else
|
|
echo "$os_name ${productversion}-${currentbldnum}$nanoshow"
|
|
fi
|
|
|
|
#exit # debug
|
|
|
|
|
|
# Backup /usr/lib/libsynonvme.so.1
|
|
if ! cp -p "/usr/lib/libsynonvme.so.1" "/usr/lib/libsynonvme.so.1.bak.72-u3"; then
|
|
echo "Failed to backup libsynonvme.so.1"
|
|
fi
|
|
|
|
# Download libsynonvme.so.1
|
|
echo -e "\nDownloading 64570_libsynonvme.so.1"
|
|
if curl -kL "${url}lib/${buildnumber}_libsynonvme.so.1" -o "/tmp/libsynonvme.so.1"; then
|
|
# Check we didn't download a 404 web page
|
|
downloaded=$(wc -c "/tmp/libsynonvme.so.1" | awk '{print $1}')
|
|
if [[ $downloaded == "54154" ]]; then
|
|
# Set permission on downloaded libsynonvme.so.1
|
|
if chmod 644 "/tmp/libsynonvme.so.1"; then
|
|
# Replace libsynonvme.so.1
|
|
if ! cp -p "/tmp/libsynonvme.so.1" "/usr/lib/libsynonvme.so.1"; then
|
|
echo "Failed to copy libsynonvme.so.1"
|
|
fi
|
|
else
|
|
echo "Failed to set permissions on libsynonvme.so.1"
|
|
fi
|
|
else
|
|
echo "Failed to download libsynonvme.so.1"
|
|
fi
|
|
else
|
|
echo "Failed to download libsynonvme.so.1"
|
|
fi
|
|
|
|
# Delete tmp file
|
|
if ! rm "/tmp/libsynonvme.so.1"; then
|
|
echo "Failed to delete /tmp/libsynonvme.so.1"
|
|
fi
|
|
|
|
|
|
# Backup /usr/syno/bin/synonvme
|
|
if ! cp -p "/usr/syno/bin/synonvme" "/usr/syno/bin/synonvme.bak.72-u3"; then
|
|
echo "Failed to backup synonvme"
|
|
fi
|
|
|
|
# Download synonvme
|
|
echo -e "\nDownloading 64570_synonvme"
|
|
if curl -kL "${url}bin/${buildnumber}_synonvme" -o "/tmp/synonvme"; then
|
|
# Check we didn't download a 404 web page
|
|
downloaded=$(wc -c "/tmp/synonvme" | awk '{print $1}')
|
|
if [[ $downloaded == "17241" ]]; then
|
|
# Set permission on downloaded synonvme
|
|
if chmod 755 "/tmp/synonvme"; then
|
|
# Replace synonvme
|
|
if ! cp -p "/tmp/synonvme" "/usr/syno/bin/synonvme"; then
|
|
echo "Failed to copy synonvme"
|
|
fi
|
|
else
|
|
echo "Failed to set permissions on synonvme"
|
|
fi
|
|
else
|
|
echo "Failed to download synonvme"
|
|
fi
|
|
else
|
|
echo "Failed to download synonvme"
|
|
fi
|
|
|
|
# Delete tmp file
|
|
if ! rm "/tmp/synonvme"; then
|
|
echo "Failed to delete /tmp/synonvme"
|
|
fi
|
|
|
|
|
|
# Cleanup core dumps caused by replacing libsynonvme.so.1 and synonvme
|
|
for volume in /volume*; do
|
|
if [[ $volume =~ /volume[0-9]{1,2}$ ]] && [[ $volume != /volume0 ]]; then
|
|
if find "$volume"/@*.core* > /dev/null 2>&1 ; then
|
|
# Delete all core dumps
|
|
echo "Deleting all core dumps on ${volume}"
|
|
find "$volume"/@*.core* -delete
|
|
fi
|
|
fi
|
|
done
|
|
|
|
|
|
echo -e "\nYou MUST reboot now. Or you won't be able to access DSM webui."
|
|
echo "Reboot now? [y/n]"
|
|
read -r answer
|
|
if [[ ${answer,,} != "y" ]]; then exit; fi
|
|
reboot
|
|
|
|
|