2020年2月28日 星期五

[Synology] 第三方套件開發之環境設定

最近發現 NAS 也有個類似 App Market 的東西,找到原廠開發文件,打算用手上這台 DS918+ 來試試,這篇先做個紀錄。



參考官方文件第三方套件開發指南,在 Windows 的 Ubuntu 18.04 LTS 子系統來進行測試。文件中提到官方github,使用 DSM 6,用到環境設定 pkgscripts-ng 以及 minimalPkg、tmux 與 HelloKernel 三個程式範例



為了與開發指南之環境相符,進入 Ubuntu 後,先切換為 root 身分,然後下載 pkgscripts-ng

# sudo -s
# mkdir /toolkit
# git clone https://github.com/SynologyOpenSource/pkgscripts-ng /toolkit/pkgscripts-ng 

先查詢版本與支援的平台,程式範例是使用 DSM6.0/x64,但我的 DS918+ 是 DSM6.2 / apollolake

# cd /toolkit/pkgscripts-ng/
# ./EnvDeploy -v 6.0 --list
# ./EnvDeploy -v 6.2 --list

先安裝兩個平台試試,由於每個平台檔案解開後都超過 3GB,要花一點時間才能完成

# ./EnvDeploy -v 6.0 -p x64
# ./EnvDeploy -v 6.2 -p apollolake


根據開發文件的檔案目錄結構,建立 source 目錄,下載範例檔

# mkdir /toolkit/source
# cd /toolkit/source
# git clone https://github.com/SynologyOpenSource/minimalPkg minimalPkg
# git clone https://github.com/SynologyOpenSource/tmux tmux
# git clone https://github.com/SynologyOpenSource/HelloKernel HelloKernel
 
產生認證用的 key,輸入姓名、email及密碼

# gpg --gen-key


複製 key 到 toolchain 目錄

# gpg --gen-key
# mkdir /toolkit/build_env/ds.x64-6.0/root/.gnupg
# cp -r ~/.gnupg/* /toolkit/build_env/ds.x64-6.0/root/.gnupg/
# mkdir /toolkit/build_env/ds.apollolake-6.2/root/.gnupg/
# cp -r ~/.gnupg/* /toolkit/build_env/ds.apollolake-6.2/root/.gnupg/


試著編譯三個範例,minimalPkg 與 HelloKernel 出現 No platform found!的訊息,tmux則有部分步驟通過:

# /toolkit/pkgscripts-ng/PkgCreate.py minimalPkg
# /toolkit/pkgscripts-ng/PkgCreate.py tmux
# /toolkit/pkgscripts-ng/PkgCreate.py HelloKernel



看來還有一些設定不符,對照文件說明,檢視 minimalPkg 的檔案,進行修正。

INFO.sh:pkg_util.sh 目錄錯誤,原 pkgscripts 應為 DSM 5 版用的,現在安裝的 DSM 6 目錄為 pkgscripts-ng


SynoBuildConf/depends:平台版本錯誤,原 6.1 修正為 6.0

重新編譯一次,成功了。


產生 spk 檔案的命令:

/toolkit/pkgscripts-ng/PkgCreate.py-x0 -i -p apollolake -v 6.2 projectname

沒有留言:

張貼留言