2023/06/11(日)Synology DS218+ Entware導入 & Subversion導入

PC::NAS

Synology DS218+ Entware導入 & Subversion導入

以前、Entware-ngというパッケージ管理ツールを導入しましたが、Entware-ngとEntware-3xが統合されてEntwareになったようなので、Entwareを導入してみます。それから、DSM7からパッケージセンターのSVN Serverが使えなくなったので、Subversionの導入もやってみます。

Entware-ngアンインストール

/optのマウント解除と、/volume1/@Entware-egの削除をしておきます。(削除しなくても容量食うだけなので、念のため残しておいても良いかも。)

umount /opt
rm -rf /volume1/@Entware-eg

(/etc/rc.localや/root/.profileは、DSMバージョンアップの影響か勝手に戻されてました。)

Entwareインストール

Install on Synology NAS / Entware/Entware Wikiに書かれている通りです。SSHを有効にした後、SSHクライアントで接続して作業します。

  1. 適当なSSHクライアントで接続します。
  2. 作業前にroot権限を取っておきます。
  3. HDDボリューム上にフォルダを作成。
    mkdir -p /volume1/@Entware/opt
    
  4. /optが既にある場合は削除した上で、/optに/volume1/@Entware/optをマウントします。
    rm -rf /opt
    mkdir /opt
    mount -o bind "/volume1/@Entware/opt" /opt
    
  5. インストールスクリプトを実行。プロセッサに合わせて選択する必要があります。
    • プロセッサ種別確認コマンド
      uname -m
      
    • armv7の場合 (DS216jなど)
      wget -O - https://bin.entware.net/armv7sf-k3.2/installer/generic.sh | /bin/sh
      
    • x64の場合 (DS218+など)
      wget -O - https://bin.entware.net/x64-k3.2/installer/generic.sh | /bin/sh
      
  6. 開始スクリプトの作成
    • どこでも良いので(例えば/volume1/data/entware_start.shなど)以下の内容のファイルを作成します。「chmod 700 entware_start.sh」として実行できるようにもしておきます。
    • 追記:ファイルを作成しなくても、次のステップの「ユーザー指定のスクリプト」欄に直接入力しても良いです。
      #!/bin/sh
      
      # Mount/Start Entware
      mkdir -p /opt
      mount -o bind "/volume1/@Entware/opt" /opt
      /opt/etc/init.d/rc.unslung start
      
      # Add Entware Profile in Global Profile
      if grep  -qF  '/opt/etc/profile' /etc/profile; then
      	echo "Confirmed: Entware Profile in Global Profile"
      else
      	echo "Adding: Entware Profile in Global Profile"
      cat >> /etc/profile <<"EOF"
      
      # Load Entware Profile
      [ -r "/opt/etc/profile" ] && . /opt/etc/profile
      EOF
      fi
      
      # Update Entware List
      /opt/bin/opkg update
      
  7. 自動開始タスクを設定
    • ブラウザでNASにアクセスしてDSMを開き、コントロールパネル→タスクスケジューラーを開きます。
    • 「作成」→「トリガーされたタスク」→「ユーザー指定のスクリプト」で以下の通りタスクを作成します。
      全般タブ
          タスク: Entware
          ユーザー: root
          イベント: ブートアップ
          プリタスク: (設定不要)
      タスク設定タブ
          ユーザー指定のスクリプト: (前の手順で作成した開始スクリプトへのパス。もしくはスクリプト全体を直接入力。)
      
      EntwareTask1.png
      EntwareTask2.png
  8. NASを再起動

動作確認 & Subversionインストール

  1. 作業前にroot権限を取っておきます。
    sudo -i
    
  2. コマンドの存在を確認
    opkg -v
    opkg version d038e5b6d155784575f62a66a8bb7e874173e92e (2022-02-24)
    
  3. パッケージリストの更新&パッケージリストの確認
    opkg update
    opkg list
    
  4. インストール(subversion-server)
    opkg install subversion-server
    
  5. svnserveがインストールされたことを確認
    svnserve --version
    svnserve, version 1.14.1 (r1886195)
       compiled Jun  2 2023, 13:56:39 on x86_64-openwrt-linux-gnu
    
    Copyright (C) 2021 The Apache Software Foundation.
    This software consists of contributions made by many people;
    see the NOTICE file for more information.
    Subversion is open source software, see http://subversion.apache.org/
    
    The following repository back-end (FS) modules are available:
    
    * fs_fs : Module for working with a plain file (FSFS) repository.
    * fs_x : Module for working with an experimental (FSX) repository.
    

Subversion実行

/volume1/svnがリポジトリルートの場合、以下のコマンドで実行できます。

/opt/bin/svnserve -d -r /volume1/svn

DSM6のSVN Serverで使っていたリポジトリがそのまま使えました。(アンインストール時にリポジトリを削除するか聞かれるので、間違えて削除しないように注意。)なお、フォルダ暗号化している場合は、マウント操作をした後でないと実行に失敗します。

実行を自動化したい場合は、Entware開始スクリプトの末尾に以下を書き足します。暗号化されていることを考慮して、/volume1/svnが出現するまで待ち続けるようにしています。

(while test ! -d "/volume1/svn"; do sleep 5; done; /opt/bin/svnserve -d -r /volume1/svn)&