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 才會開啓……

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

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

To respond on your own website, enter the URL of your response which should contain a link to this post’s permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post’s URL again. (Find out more about Webmentions.)