とりあえずRaspberryPiにChinachu γを導入できた件
【概要】
前回、導入しようとして失敗したRaspberryPi3へのChinachu γインストールに再チャレンジした。
今回は動作までもってこれたので、前回の記事ではアドバイスのコメントを頂いたこともあり、とりあえずの成功報告兼忘備録として記事化しようと思う。
前回記事でコメントをくださったKGMさんと通りすがりさんに感謝致します!!
【作業環境・パッケージ】
- RaspberryPi3
- Raspbian (カーネル:4.9.35-v7+)
- Nodejs v6.11.1
- Mirakurun 2.5.5(コミット:5106df061143a492aae4ad7f2f0997b08dfefb8f(2017/06/14))
- Chinachu γ 0.9.5(コミット:9ff5fe56f37245e272ac63082db36f8bafac14d9(2017/07/25))
【行った作業】
前回記事の内容・Chinachu Github Wikiの内容をベースに作業する。
-
dogeel氏バージョンのrecdvbの導入
オリジナルのrecdvbでは、チャンネル・SIDの指定方法がrecpt1とは異なっているのだが、これがChinachu γを導入するにあたっては障壁となるので、各種指定をrecpt1に合わせているdogeel氏のrecdvbを導入する。 -
最新版node.jsの導入
まずapt-get purge nodejs nodejs-legacy nodered
で最新版とコンフリクトする旧バージョンを削除し、
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejsを実行し、apt-getから最新版のnode.jsを落とせるようにする。
-
Mirakurunと必要なパッケージをインストール
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe --production
sudo pm2 startupでインストール
-
b25-stream.sh作成
b25-stream.sh · GitHubを参考にして、b25-stream.shを/usr/local/binに作成する。sudo nano /usr/local/bin/b25-stream.sh
を実行し、
#!/bin/sh
sh -c cat | b25 -v 0 /dev/stdin /dev/stdout | catの内容で保存。
続いて、sudo chmod +x /usr/local/bin/b25-stream.sh
を実行し、実行可にする。
-
Mirakurunセットアップ
sudo EDITOR=nano mirakurun config server
を実行し、
port: 40772⇒適当なポート番号に変更
続いて、
sudo EDITOR=nano mirakurun config tuners
を実行し、
- name: PX-S1UD-1
types:
- GR
command: recdvb --b25 --strip --dev 0 <channel> - -
decoder: b25-stream.sh
isDisabled: false
- name: PX-BCUD-1
types:
- BS
- CS
command: recdvb --b25 --strip --dev 1 <channel> - -
decoder: b25-stream.sh
isDisabled: falseを追記。
また、/usr/local/etc/mirakurun/channels.ymlを
Mirakurunのインストール手順(Ubuntu・Debian・CentOS) | 自分に負けないラボラトリー-3ページ
を参考に設定。
この後、sudo mirakurun restart
を実行する。
- (とりあえず)Chinachu γインストール
まず、Chinachu γインストールに必要パッケージを
sudo apt-get install git-core vainfo
を実行して、インストール。
続いて、
git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
でChinachuを(とりあえず)インストールする。
cd ~/chinachu/
./chinachu installer - きちんとインストールできなかったパッケージの導入
まず、以下のコマンドで、前回記事で頂いたコメントの通りnpm-install-missingで不足パッケージを導入する。
sudo npm install npm-install-missing -g
次に、
npm-install-missing
./chinachu updater
を実行し、以下のように言われないか確認する。
.....
言われた場合、
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: node_modules/chinachu-common/Readme.md
deleted: node_modules/chinachu-common/lib/chinachu-common.js
deleted: node_modules/chinachu-common/package.json
.....
git checkout node_modules
のように、不足ファイルを落としてくる。(自分の場合、なぜか欠損してた。)
最後に、
./chinachu service wui execute
を実行してみて、以下のようなエラーが出ないことを確認する。
Error: Cannot find module '.....'
出た場合、
npm install .....
で不足モジュールをインストールする。 - Chinachu設定ファイルの作成
cp config.sample.json config.json
を実行する。
echo [] > rules.json
config.jsonの設定に関しては、Gamma Configuration · Chinachu/Chinachu Wiki · GitHubを参考に設定する。
次に、
./chinachu service wui execute
を再度実行し、ChinachuのWeb UIにアクセスできることを確認する。 - Chinachuが自動起動するようにする
RaspberryPiにChinachuを導入すると、.nave内にnodejsの実行ファイルが生成されないので、前準備として、以下のコマンドでnodejsの実行ファイルを持ってくる。(.nave/node・.nave/npmのリンク先を確認しておくこと。)
mkdir .nave/installed/<nodejsのバージョン>/bin
続いて、以下のコマンドで、スタートアップ時にChinachuを起動するようにする。
cp /usr/bin/node .nave/installed/<nodejsのバージョン>/bin
cp /usr/bin/npm .nave/installed/<nodejsのバージョン>/bin
sudo pm2 start processes.json
sudo pm2 save - ログローテーションの設定をする。
yoki氏のブログ記事(1・2)によると、Mirakurun・Chinachuともに(というかpm2で動作しているプロセス)は、自動でログローテーションはしないそうなので、設定しておく。
以上のブログ記事ではログローテーションに「pm2-logrotate」が必要とされているが、PM2 — Log HandlingやPM2 - Log Managementなどを見る限り、システムのlogrotateに頼れば不要のようだ。
ということで、/usr/lib/node_modules/pm2/lib/templates/logrotate.d/pm2を参考にして以下のように設定。
sudo pm2 logrotate -u root
sudo nano /etc/logrotate.d/pm2-root
####以下を追記
/usr/local/var/log/chinachu-operator.stderr.log
/usr/local/var/log/chinachu-operator.stdout.log
/usr/local/var/log/chinachu-wui.stderr.log
/usr/local/var/log/chinachu-wui.stdout.log
{
weekly
rotate 4
missingok
notifempty
compress
delaycompress
copytruncate
create 0644 root staff
}
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
{
daily
rotate 7
missingok
notifempty
compress
delaycompress
copytruncate
create 0644 root staff
}
【結果】
とりあえず、それなりに安定して動作するまで持ってこれた。
再起動後は、地上波で3分、BS・CSで6~7分程度でMirakurunの処理が落ち着くようだ。
なお、BonDriver_Mirakurun+TVTestでも、設定ファイルで「SERVICE_SPLIT=1」とすれば、安定して見れることを確認した。
しかし、ストリーミング・録画ともに、チャンネル変更後2分間ぐらい不安定で、タイミングによっては、途切れが発生することが確認できた。
これに関しては、どうやら負荷が大きすぎることが原因のようだ。
TVTestで視聴しながらログを確認すると、途切れた時に「info: save db `/usr/local/var/db/mirakurun/programs.json`」と出ているので、恐らく、EPGの処理中だったのだろう。
まあ、RaspberryPiでPX-S1UDとPX-BCUDの二本刺しの上、Chinachuを動かそうとしているこっちが元凶だと思う。('ω')
ということで、今回も旧環境に差し戻した。(またか・・・
RaspberryPiのスペックがもう少しだけよくなれば再チャレンジするか・・・
製品紹介(Amazon.co.jpアソシエイト)-----------------
PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0
- 出版社/メーカー: PLEX
- 発売日: 2015/09/10
- メディア: エレクトロニクス
- この商品を含むブログを見る
Raspberry Pi 3 MODEL B 【RS正規流通品】
- 出版社/メーカー: Raspberry Pi
- 発売日: 2016/04/28
- メディア: Tools & Hardware
- この商品を含むブログを見る
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear) -Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログを見る