用意した物
- intel D510MO
- PT2
- SCR3310-NTTCom + B-CAS
- 適切な2TBHDD(型名忘れただけ)
ソフト内容
- ubuntu20.04server
- Dockerは使わない(弄ってみたけどメモリが足りなさそう)
- Node14系
- DKMS対応honeyplanet版PT2ドライバ
- recpt1
- Mirakurun3.5.0
- EPGStation2.3.10
- MariaDB
概要
とうとう3回目となるサーバーがお亡くなりになりました。SATAポートが死んだみたいです。
そこで倉庫の中から使えそうなマザーを探してきて何とかしてみたいと思います。
倉庫には昔サーバーとして使っていたIntel D510MOというマザーが眠っていて、丁度PCIスロットが1個使える為、PT2も刺せるという事で引っ張り出しました。
ググってみると昔にPT2を刺して使ってる方を見かけ追ってみると、なにやら大変苦労したとの事です。どうもBIOSが古くてubuntuでrecpt1が動かなかったとの事です。
では自分のはと電源を入れるとBIOSが古い古いwまずはそれをUpdateする事から始めました。
既にintelのサイトでは配布も終わっていて探すのに苦労しました。インターネットアーカイブからなんとかサルベージしてきて最新にアップデートしました。
OSインストール
最初はマザーとHDDとメモリとネットだけ接続してubuntuをインストールします。
ubuntu20.04はserver版を選択しました。ここはたいして苦労せずインストールできました。どうもdesktop版はエラーが出るそうです。
インストールにはかなり時間がかかります。余計なモジュールはセットせずSSHだけチェックを入れてもネットつないだ状態でインストールすると、オンラインアップデートが同時に走って結局2時間位かかってしまいました。まあマシンスペックはAtom+MEM4GBですからね。致し方無し。
無事ubuntuはインストール出来ました。upgradeやローケルやら日本語環境などを追加して一旦電源を落として、PT2やらBCASなどを刺して起動します。
lspciなどで接続を確認したあとドライバをインストールします。
まずは必要なモジュールをインストールします。
$ sudo apt -y install pcscd libpcsclite-dev libccid pcsc-tools python2.7 mercurial ffmpeg build-essential unzip pkg-config automake cmake g++ autoconf git dkms linux-headers-`uname -r` nodejs npm mariadb-server
チューナードライバのインストール
ドライバのダウンロードとリビジョンの取得
$ hg clone http://hg.honeyplanet.jp/pt1 $ cd pt1 $ REVISION=`hg log -r tip | sed -n -e '1s/.*://p'`
PT1ドライバのパッチを当てます。
$ cd .. $ sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/mutex_unlock(&channel->ptr->lock);/\/\* mutex_unlock(\&channel->ptr->lock); \*\//' pt1/driver/pt1_pci.c $ sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/^\treturn 0;$/\tmutex_unlock(\&channel->ptr->lock);\n\n\treturn 0;/' pt1/driver/pt1_pci.c
dkmsのフォルダへコピー
$ sudo cp -r pt1/driver/ /usr/src/pt1_drv-$REVISION/
dkmsへの登録
$ cat << EOT | sudo tee /usr/src/pt1_drv-$REVISION/dkms.conf PACKAGE_NAME="pt1_drv" PACKAGE_VERSION="$REVISION" MAKE[0]="make KVER=\${kernelver}" CLEAN[0]="make clean" BUILT_MODULE_NAME[0]="pt1_drv" DEST_MODULE_LOCATION[0]="/kernel/drivers/video" AUTOINSTALL="YES" EOT
ビルド&インストール
$ sudo dkms add -m pt1_drv -v $REVISION $ sudo dkms build -m pt1_drv -v $REVISION $ sudo dkms install -m pt1_drv -v $REVISION
これでドライバは登録できました。ただubuntu標準のドライバが登録されてしまっているので使われないようブラックリストに登録します。
$ echo "blacklist earth_pt1" >> /etc/modprobe.d/blacklist.conf
これで一旦再起動します。
$ sudo reboot
arib25モジュールとrecpt1コマンドの作成
arib25モジュールはBCASカードと連動して復号化させるためのモジュールです。arib25はPT1ドライバの昔のリビジョンに戻してarib25フォルダを復活させます。
$ cd ~/pt1/ $ hg revert -r c44e16dbb0e2 --all $ hg revert -r tip --all $ cd arib25 $ make $ sudo make install
次にrecpt1を作成します。
$ cd ../recpt1 $ ./autogen.sh $ ./configure --enable-b25 $ make $ sudo make install
nodejs、pm2、mirakurunのインストール
最新のmirakuru,EPGStationでは推奨がnode14系なのでnで14系をインストールする。
$ sudo npm install -g n $ sudo n 14.17.1
pm2のインストール
$ sudo npm install pm2 -g
Mirakurun,rivarunのインストール
$ sudo npm install mirakurun -g --unsafe --production $ sudo npm install rivarun -g
Mirakurunの設定
先ほどのmirakurunのインストールで既に起動された状態ではありますが、設定が必要です。チューナーの設定とチャンネルの設定です。
まずはチューナーの設定から
$ sudo mirakurun config tuners
以下はPT2の設定です。
- name: PT2-S1 types: - BS - CS command: recpt1 --b25 --device /dev/pt1video0 --lnb 15 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PT2-S2 types: - BS - CS command: recpt1 --b25 --device /dev/pt1video1 --lnb 15 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PT2-T1 types: - GR command: recpt1 --b25 --device /dev/pt1video2 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PT2-T2 types: - GR command: recpt1 --b25 --device /dev/pt1video3 <channel> - - decoder: arib-b25-stream-test isDisabled: false
S1及びS2の
--lnb15
ですがどこかでアンテナに給電されているのであれば不要です。
次にチャンネル設定です。
$ sudo mirakurun config channels
以下の設定は私の部屋に来ている電波の拾えるチャンネル一覧になります。CS等拾える方は別途設定してください。
- name: NHK総合1・東京 type: GR channel: '27' - name: NHKEテレ1東京 type: GR channel: '26' - name: 日テレ1 type: GR channel: '25' - name: TBS1 type: GR channel: '22' - name: フジテレビ type: GR channel: '21' - name: テレビ朝日 type: GR channel: '24' - name: テレビ東京1 type: GR channel: '23' - name: TOKYO MX1 type: GR channel: '16' - name: J:COMテレビ type: GR channel: '13' - name: tvk1 type: GR channel: '18' - name: J:COMチャンネル type: GR channel: '37' - name: NHKBS1 type: BS channel: 'BS15_0' serviceId: 101 - name: NHKBS1 type: BS channel: 'BS15_0' serviceId: 102 - name: NHKBSプレミアム type: BS channel: 'BS3_1' serviceId: 103 - name: NHKBSプレミアム type: BS channel: 'BS3_1' serviceId: 104 - name: BS日テレ type: BS channel: 'BS13_0' serviceId: 141 - name: BS日テレ type: BS channel: 'BS13_0' serviceId: 142 - name: BS日テレ type: BS channel: 'BS13_0' serviceId: 143 - name: BS朝日1 type: BS channel: 'BS1_0' serviceId: 151 - name: BS朝日2 type: BS channel: 'BS1_0' serviceId: 152 - name: BS朝日3 type: BS channel: 'BS1_0' serviceId: 153 - name: BS-TBS type: BS channel: 'BS1_1' serviceId: 161 - name: BS-TBS type: BS channel: 'BS1_1' serviceId: 162 - name: BS-TBS type: BS channel: 'BS1_1' serviceId: 163 - name: BSテレ東 type: BS channel: 'BS1_2' serviceId: 171 - name: BSテレ東2 type: BS channel: 'BS1_2' serviceId: 172 - name: BSテレ東3 type: BS channel: 'BS1_2' serviceId: 173 - name: BSフジ・181 type: BS channel: 'BS13_1' serviceId: 181 - name: BSフジ・182 type: BS channel: 'BS13_1' serviceId: 182 - name: BSフジ・183 type: BS channel: 'BS13_1' serviceId: 183 - name: WOWOWプライム type: BS channel: 'BS3_0' serviceId: 191 - name: WOWOWライブ type: BS channel: 'BS5_0' serviceId: 192 - name: WOWOWシネマ type: BS channel: 'BS5_1' serviceId: 193 - name: スターチャンネル1 type: BS channel: 'BS9_1' serviceId: 200 - name: スターチャンネル2 type: BS channel: 'BS15_1' serviceId: 201 - name: スターチャンネル3 type: BS channel: 'BS15_1' serviceId: 202 - name: BS11イレブン type: BS channel: 'BS9_0' serviceId: 211 - name: BS12トゥエルビ type: BS channel: 'BS9_2' serviceId: 222 - name: 放送大学ex type: BS channel: 'BS11_2' serviceId: 231 - name: 放送大学on type: BS channel: 'BS11_2' serviceId: 232 - name: グリーンチャンネル type: BS channel: 'BS21_2' serviceId: 234 - name: BSアニマックス type: BS channel: 'BS13_2' serviceId: 236 - name: BSスカパー! type: BS channel: 'BS11_1' serviceId: 241 - name: J SPORTS 1 type: BS channel: 'BS19_1' serviceId: 242 - name: J SPORTS 2 type: BS channel: 'BS19_2' serviceId: 243 - name: J SPORTS 3 type: BS channel: 'BS19_3' serviceId: 244 - name: J SPORTS 4 type: BS channel: 'BS19_0' serviceId: 245 - name: BS釣りビジョン type: BS channel: 'BS11_3' serviceId: 251 - name: WOWOWプラス type: BS channel: 'BS21_0' serviceId: 252 - name: 日本映画専門ch type: BS channel: 'BS21_1' serviceId: 255 - name: ディズニーch type: BS channel: 'BS23_0' serviceId: 256 - name: 放送大学ラジオ type: BS channel: 'BS11_2' serviceId: 531 - name: スカパー!ガイド type: BS channel: 'BS11_1' serviceId: 840
長い設定で申し訳ありません。
Mirakurunの再起動をします。
$ sudo mirakurun restart
ログ設定
mirakurunのログをある程度で抑える為ログローテーションの設定を行います。
pm2-logrotateをインストールします。
$ sudo pm2 install pm2-logrotate
1日分でログを圧縮し1週間分保存する設定を行います。
$ cat << 'EOT' | sudo tee /etc/logrotate.d/mirakurun /usr/local/var/log/mirakurun.stdout.log /usr/local/var/log/mirakurun.stderr.log /{ daily compress rotate 7 missingok notifempty } EOT
mirakurunに変更を通知します。
$ sudo mirakurun restart
mariadbのインストール
最初にaptでインストールしてあるので初期設定を行います。
$ sudo mysql_secure_installation
私ここのログを取ってなかったので設定をどうしたか忘れましたが、最初にパスワード等を設定した後は質問に従って進めればOKです。
その後epgstation用データベース、ユーザー、パスワードを設定します。
$ mysql -u root -p MariaDB [(none)]> CREATE DATABASE epgstation CHARACTER SET utf8; MariaDB [(none)]> GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'mirakurun'; MariaDB [(none)]> exit
これでデータベース名epgstation、ユーザー名epgstation、パスワードmirakurunになりました。
EPGStationの導入
投稿時最新のEPGStation2.3.10をインストールします。最初node10系でインストールしてたらエラーが出てインストール出来ませんでした。
$ git clone https://github.com/l3tnun/EPGStation.git $ cd EPGStation $ npm run all-install
atomではダメなのかと思う位時間かかりました。
$ npm run build
同上w。その後初期設定用config類を作成します。
$ cp config/config.yml.template config/config.yml $ cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml $ cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml $ cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
設定ファイルの編集を行います。
$ vi config/config.yml
最初の方だけ載せます。
port: 8888 mirakurunPath: http+unix://%2Fvar%2Frun%2Fmirakurun.sock/ dbtype: mysql mysql: host: localhost port: 3306 user: epgstation password: mirakurun database: epgstation epgUpdateIntervalTime: 10 conflictPriority: 1 recPriority: 2 #recordedFormat: '%YEAR%年%MONTH%月%DAY%日%HOUR%時%MIN%分%SEC%秒-%TITLE%' recordedFormat: '%TITLE% [%CHNAME%] [%YEAR%%MONTH%%DAY%-%HOUR%%MIN%]' recordedFileExtension: .ts recorded: - name: recorded # path: '%ROOT%/recorded' path: '/home/samba/video' -以下略-
dbtypeとmysqlの設定を書き、recordedFormatとpathを変更してあります。適宜設定を変更してください。
大丈夫かどうか手動で起動してみます。
$ npm start
これでhttp://{サーバーアドレス}:8888でクライアントからアクセスして動いているかどうか確認できます。
動作確認出来たら自動で起動できるよう設定します。
$ sudo pm2 startup $ sudo pm2 start dist/index.js --name "epgstation" $ sudo pm2 save
ざっと書いてみましたがいかがでしょうか。私の方では通常録画、予約録画、キーワード予約など動作していることを確認しました。
EPGStation@1系から愛用していますが2系になってダークモードに対応など色々と設定できる事が増えていて改めて作者の方に敬意を表したいと思います。
コメント