k_piの雑記帳

個人的に困った点と、その解決法などをつらつら書き連ねた備忘録を兼ねたブログ

とりあえず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の内容をベースに作業する。

  1. dogeel氏バージョンのrecdvbの導入
    オリジナルのrecdvbでは、チャンネル・SIDの指定方法がrecpt1とは異なっているのだが、これがChinachu γを導入するにあたっては障壁となるので、各種指定をrecpt1に合わせているdogeel氏のrecdvbを導入する。

  2. 最新版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を落とせるようにする。

  3. Mirakurunと必要なパッケージをインストー

    sudo npm install pm2 -g
    sudo npm install mirakurun -g --unsafe --production
    sudo pm2 startup

    でインストー

  4. 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

    を実行し、実行可にする。

  5. 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

    を実行する。

  6. (とりあえず)Chinachu γインストー
    まず、Chinachu γインストールに必要パッケージを
    sudo apt-get install git-core vainfo
    を実行して、インストール。
    続いて、
    git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
    cd ~/chinachu/
    ./chinachu installer
    でChinachuを(とりあえず)インストールする。
  7. きちんとインストールできなかったパッケージの導入
    まず、以下のコマンドで、前回記事で頂いたコメントの通り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 .....
    で不足モジュールをインストールする。
  8. 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にアクセスできることを確認する。
  9. Chinachuが自動起動するようにする
    RaspberryPiにChinachuを導入すると、.nave内にnodejsの実行ファイルが生成されないので、前準備として、以下のコマンドでnodejsの実行ファイルを持ってくる。(.nave/node・.nave/npmのリンク先を確認しておくこと。)
    mkdir .nave/installed/<nodejsのバージョン>/bin
    cp /usr/bin/node .nave/installed/<nodejsのバージョン>/bin
    cp /usr/bin/npm .nave/installed/<nodejsのバージョン>/bin
    続いて、以下のコマンドで、スタートアップ時にChinachuを起動するようにする。
    sudo pm2 start processes.json
    sudo pm2 save
  10. ログローテーションの設定をする。
    yoki氏のブログ記事(12)によると、Mirakurun・Chinachuともに(というかpm2で動作しているプロセス)は、自動でログローテーションはしないそうなので、設定しておく。
    以上のブログ記事ではログローテーションに「pm2-logrotate」が必要とされているが、PM2 — Log HandlingPM2 - 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 USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0

 
Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】