ARM 平臺 DiskStation Manager (DSM) 的一些集錦

ARM 平臺的 DSM 效能普遍不強,加上官方的限制,整體可玩性確實無法與 x86 平臺相比。但由於 DSM 本身基於 Linux 的特點及第三方的努力,還有一些有意思的事情可以做,多少還能更有趣甚至實用一些。

套件

添加社羣源

  • SynoCommunity
    • SC 是最大的 Synology 第三方套件社羣,不僅打包的套件覆蓋了幾乎所有可支援的硬體平臺,並且開放了自己的打包系統,簡單修改就可以增加自己的套件。
  • Community Package Hub
    • CPHub 主要被用來建立 Entware 環境,不過很遺憾的是沒有 ARM 平臺(至少是 Marvell)可用的包。

修改安裝官方套件

出於定位和等級劃分原因,ARM 平臺的 DiskStation 上只提供較少的套件;而即使同是 ARM 架構,還要再分三六九等,搭載 Alpine 處理器的機種獲得了最多的套件,其次是使用 Realtek RTD1296 的 DS420j、DS220j,而使用 Marvell ARMADA 平臺的 DS120j、DS119j 則只有最基礎的一些套件。比如 Syncthing 就只提供了 i686alpinealpine4k 和 armv8 版本,而雖然明面上標註着 armv8,但實際適用的平臺是 rtd1296。不知是考慮到記憶體較少還是其他原因,群暉官方並未提供對應版本的套件包;然而 Marvell ARMADA 也是 armv8 平臺,理論上也應可以運行,只是需要做一些手腳

首先去群暉官方存檔伺服器下載所需要套件的 armv8 版本。以浅羽打算安裝的 Syncthing 爲例,需要下載 syncthing.net/1.3.4.1/syncthing.net-armv8-1.3.4.1.spk。使用 7-zip 打開 .spk 套件包,提取 INFO 檔案並打開,可以看到一系列標註:

package="syncthing.net"
version="1.7.1"
maintainer="Syncthing Community"
maintainer_url="https://www.syncthing.net/"
distributor="Kastelo Inc."
distributor_url="https://www.kastelo.net/"
arch="rtd1296"
....

重點在於 arch="rtd1296" 一行,這裏標註了支援的硬體平臺。對應 DS120j 的處理器,這裏改成 arch="armada37xx" 或者 arch="armv8" 均可,浅羽改成後者。隨後在套件管理器中選擇手動安裝並上傳對應的 spk 檔案,套件管理器會提示「套件損毀」,不過忽略後仍可以成功安裝並且正常運行

系統美化

登入背景自動更換 Bing Wallpaper

運用 Bing 的 API 及對 DSM 的一些瞭解,在控制台 – 任務排程表中新增排程任務,並選擇「使用者定義指令碼」,增加以下指令稿:

#!/bin/bash
# 如需收集每日美图去掉下面注释设置保存文件夹路径
# 在 FileStation 里面右键文件夹属性可以看到路径
#savepath="/volume1/wallpaper"
#dsmuser="admin"
pic=$(wget -t 5 --no-check-certificate -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1")
echo $pic | grep -q enddate || exit 1
link=$(echo https://www.bing.com$(echo $pic | sed 's/.\+"url"[:" ]\+//g' | sed 's/".\+//g'))
date=$(echo $pic | sed 's/.\+enddate[": ]\+//g' | grep -Eo 2[0-9]{7} | head -1)
tmpfile=/tmp/$date"_bing.jpg"
wget -t 5 --no-check-certificate $link -qO $tmpfile
if [ ! -s $tmpfile ] ; then
    exit 2
fi
rm -f /usr/syno/etc/login_background*.jpg
cp -f $tmpfile /usr/syno/etc/login_background.jpg &>/dev/null
cp -f $tmpfile /usr/syno/etc/login_background_hd.jpg &>/dev/null
title=$(echo $pic | sed 's/.\+"title":"//g' | sed 's/".\+//g')
copyright=$(echo $pic | sed 's/.\+"copyright[:" ]\+//g' | sed 's/".\+//g')
word=$(echo $copyright | sed 's/(.\+//g')
if  [ ! -n "$title" ] ; then
    cninfo=$(echo $copyright | sed 's/,/"/g' | sed 's/,/"/g' | sed 's/(/"/g' | sed 's/ //g' | sed 's/\//_/g' | sed 's/)//g')
    title=$(echo $cninfo | cut -d'"' -f1)
    word=$(echo $cninfo | cut -d'"' -f2)
fi
sed -i s/login_background_customize=.*//g /etc/synoinfo.conf
echo "login_background_customize=\"yes\"">>/etc/synoinfo.conf
sed -i s/login_welcome_title=.*//g /etc/synoinfo.conf
echo "login_welcome_title=\"$title\"">>/etc/synoinfo.conf
sed -i s/login_welcome_msg=.*//g /etc/synoinfo.conf
echo "login_welcome_msg=\"$word\"">>/etc/synoinfo.conf
if [ ! -z $savepath ] ; then
    cp -f $tmpfile $savepath/$date@$title-$word.jpg
fi
if [ ! -z $dsmuser ] ; then
    cp -f $tmpfile /usr/syno/etc/preference/$dsmuser/wallpaper &>/dev/null
    chown $dsmuser /usr/syno/etc/preference/$dsmuser/wallpaper
fi
rm -f /tmp/*_bing.jpg

DSM 降級

在 SSH 中執行 sudo vim /etc.defaults/VERSION,把版本號修改到比目標版本低一些。比如浅羽現在計劃降級回 DSM 6.2.3-25426,上一版本是 6.2.2-24922:

majorversion="6"
minorversion="1"
major="6"
minor="1"
micro="0"
productversion="6.1.0"
buildphase="GM"  
buildnumber="23456"
smallfixnumber="0"
nano="0"
base="23456"
builddate="1998/11/08"
buildtime="18:39:13"
unique="synology_armada37xx_ds120j"
extractsize=689888
partitionversionlimit=0

重新開機後,直接訪問 http://${IP}:5000,應可看到「硬碟搬移」畫面。此時直接上傳老版本的 pat 檔案安裝 DSM,中途會失敗。需要使用 telnet 登入後再修改一下系統版本。

更新到一半後一定會失敗

SynologyNAS login: root
Password: 101-0101

再次選擇 pat 檔並上載安裝,就可以正確安裝並等待重新啓動了。

那爲什麼不一開始在 Web Assistant 頁面就改好版本直接安裝呢?因爲只有下載完畢開始安裝的時候 Telnet 才會開啓……

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.