*

録画サーバ構築の前準備(CentOS 7編)、Chinachu・epgrec UNA対応

  最終更新日:2018/08/03

 この記事で紹介するのは、CentOS 7向けの録画サーバ構築のための前準備です。Chinachuとepgrec UNAインストール前の共通作業をまとめたものになります。CentOS 7の最小構成インストール環境をベースにしています(前記事参照)。OS環境設定、サービス設定(NTP、Samba)、開発環境構築、録画機能設定(arib25ライブラリ、recpt1等)を順を追って説明します。

 本記事で取り扱うTVチューナーボードはPT3 Rev.Aです。

 なお、実行ユーザーを区別するため、シェルのコマンド表記は以下の様にしています。

[user@centos]$ 一般ユーザーとして実行
[root@centos]# rootとして実行

スポンサーリンク

推奨環境

 意外と古いPCにインストールされる方もいるようなので、念のため推奨環境(必要スペック)を書いておきます。

  • CPU:Core2Duo以上の性能を持つCPU(2006年以降製造のCPU)
  • メモリ:最低2GB

 録画するだけならば、10年以上前の古いPCでも動作すると思います。しかし、H.264などのトランスコードしてのライブ視聴をしたい場合、最低限Core2DuoクラスのCPUは必要になります。ただし、Core2Duo以上の性能なら大丈夫と言う訳ではなく、古いCPUでは再生が途切れがちになったり、色々と問題や不満が出てきます。その様な場合、性能面の問題に目をつむるか、専用の省電力PCを組むことになると思います(トランスコード前のMPEG2-TS再生だと再生側のPCの性能に依存します)。

 手前味噌になりますが、省電力PCを作りたい人向けの記事を紹介します。24時間稼働を原則とすると消費電力の少ないPCのほうが有利です。

OS環境設定

システムアップデート

[user@centos]$ su -
[root@centos]# yum update
[root@centos]# yum install net-tools

 最小構成ではifconfigコマンドが使えず不便なので、net-toolsのみインストールしています。

firewall無効化

 セキュリティ的には有効にしておいたほうが良いのですが、家限定で使用する際は無用なのでfirewallは無効化しておきます。

[root@centos]# systemctl stop firewalld
[root@centos]# systemctl disable firewalld

SELinux無効化

 SELinuxを有効にしておいても少なくともChinachuは動くことは確認していますが、作業の妨げになることがあるので、こちらも無効化しておきます。

[root@centos]# vi /etc/selinux/config

  変更前) 7行目
   SELINUX=enforcing

  変更後)
   SELINUX=disabled

[root@centos]# reboot

  録画サーバを再起動してSELinux無効化完了です。
  念のため再起動後にgetenforceコマンドでSELinuxの状態を確認します。

[user@centos]$ getenforce

  Disabled と表示されればOK。

サービス設定

chrony

 録画サーバは予約録画のために時刻が正確でなければいけません。そのため、NTPで定期的に正確な時刻を設定します。CentOS 7ではchronyが標準のNTPクライアントになりました。そこで、chronyの設定をします。

[user@centos]$ su -
[root@centos]# yum install chrony
[root@centos]# vi /etc/chrony.conf

  serverの箇所をお近くのNTPサーバ(契約しているプロバイダ、
近隣の大学などが提供しているもの)に置き換えます。
ここで言う「近く」とは、ネットワーク的に近いの意味ですのでお間違いなく。

  例えば、契約しているプロバイダがBIGLOBEの場合は以下のように変えます。

  変更前) 3-6行目
   server 0.centos.pool.ntp.org iburst
   server 1.centos.pool.ntp.org iburst
   server 2.centos.pool.ntp.org iburst
   server 3.centos.pool.ntp.org iburst

  変更例) ※ BIGLOBE以外のプロバイダ契約の人はコピペしないように!!
   server ntp01.tk.mesh.ad.jp iburst minpoll 10 maxpoll 12
   server ntp02.tk.mesh.ad.jp iburst minpoll 10 maxpoll 12
   server ntp03.tk.mesh.ad.jp iburst minpoll 10 maxpoll 12

 この設定例では、iburstで起動時に4回計測し、ポーリング間隔を2の10乗から12乗秒の間隔で行います。つまり、約17分から68分間隔(1024秒から4096秒)で時刻合わせを行います。ポーリング間隔は短すぎても長すぎても駄目なので、これぐらいが妥当と思います。

 主要なプロバイダ、大学等のNTPサーバの一覧はこちらのページから確認して下さい。

[root@centos]# systemctl enable chronyd
[root@centos]# systemctl start chronyd
[user@centos]$ date

  サービスを起動後、最後に現在時刻と差異がないか確認して完了です。

Samba

 Sambaをインストールします。Windowsから各ユーザーのホームディレクトリにアクセス可能にします。また、誰でもアクセス可能な共有フォルダも設定します。Sambaが不要な人は居ないと思いますが、共有フォルダが不要な場合は適宜読み飛ばして下さい。

 最初に共有フォルダを作成します。ここでは録画用のディレクトリとして”/recorder”を共有フォルダとしています。Windowsから直接ファイルを操作できるようになるので便利です。だだし、その場合は誰でも録画ファイルを削除可能になるので注意。

[root@centos]# mkdir /recorder
[root@centos]# chmod 777 /recorder
[root@centos]# chown nobody:nobody /recorder

 Sambaをインストールし、設定ファイルを更新します。補足ですが、ホームディレクトリ設定はデフォルトで有効になっているので、今回はそれをそのまま利用しています。

[root@centos]# yum install samba
[root@centos]# vi /etc/samba/smb.conf

・文字コード設定(6行目付近)、以下を追加。
[global]
   unix charset = UTF-8
   dos charset = CP932

・ワークグループ(7行目付近)
   workgroup = SAMBA ← 適宜変更

・プリンター設定は不要なので無効化(以下、15行目付近)
  変更前)
   load printers = yes
   cups options = raw

  変更後)
   load printers = no
;  cups options = raw ← 先頭';'でコメントアウト
   disable spoolss = yes

   更に[printers] の項目は全てコメントアウト(25行目付近)

・共有フォルダ設定、ファイル末尾に以下を追記。

[share]
  comment = Shared folder
  path = /recorder
  guest ok = yes
  guest only = yes
  writable = yes
  create mode = 0777
  directory mode = 0777

 続いてsmb.confの構文チェックを行います。

[root@centos]# testparm

  下記の様な内容が表示されます。
  unknown, errorなどのメッセージが表示されなければ問題ありません。

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

 Samba用のユーザーを追加し、サービスを起動します。ユーザー名とパスワードはCentOSとWindowsで同一にしておくと便利です。

[root@centos]# pdbedit -a ユーザー名
new password: パスワードを入力
retry new password: パスワードを再度入力

[root@centos]# systemctl enable smb
[root@centos]# systemctl enable nmb
[root@centos]# systemctl start smb
[root@centos]# systemctl start nmb

 Windows側からホームディレクトリと共有フォルダが参照できれば成功です。

開発環境構築

 ツールやドライバのビルドに必要なパッケージをインストールします。

[root@centos]# yum install wget git unzip bzip2 gcc gcc-c++ make \
     autogen automake kernel-devel patch perl-ExtUtils-MakeMaker \
     libtool openssl-devel boost-devel cmake

EPELレポジトリ設定

 通常ではインストール出来ないパッケージが以降で必要になります。そこで、エンタープライズLinux用の拡張パッケージであるEPELレポジトリを使えるように設定します。ちなみに、EPELはExtra Packages for Enterprise Linuxの略です。

[user@centos]$ su -
[root@centos]# yum install epel-release
[root@centos]# vi /etc/yum.repos.d/epel.repo

  変更前) 6行目
   enabled=1

  変更後) 一時利用に変更する
   enabled=0

 以降でnkfとdkmsの2つのコマンドが必要になるため、あらかじめインストールしておきます。

[root@centos]# yum --enablerepo=epel install nkf dkms

録画機能設定

カードリーダ

 カードリーダ用のソフトウェアをインストールします。私が使用しているのはGemaltoのICカードリーダ・ライタです。多分、B-CAS用に使用できるとされているカードリーダなら下記の手順で大丈夫だと思われます。

[root@centos]# yum install ccid pcsc-lite-devel
[root@centos]# exit

 以降、ホームディレクトリにsrcディレクトリを作成し、その下で作業します。

[user@centos]$ mkdir ~/src
[user@centos]$ cd ~/src
[user@centos]$ wget http://search.cpan.org/CPAN/authors/id/W/WH/WHOM/pcsc-perl-1.4.13.tar.bz2
[user@centos]$ tar xvjf pcsc-perl-1.4.13.tar.bz2
[user@centos]$ cd pcsc-perl-1.4.13
[user@centos]$ perl Makefile.PL
[user@centos]$ make
[user@centos]$ su
[root@centos]# make install
[root@centos]# exit
[user@centos]$ cd ~/src
[user@centos]$ wget https://launchpad.net/ubuntu/+archive/primary/+files/pcsc-tools_1.4.23.orig.tar.gz
[user@centos]$ tar xvzf pcsc-tools_1.4.23.orig.tar.gz
[user@centos]$ cd pcsc-tools-1.4.23
[user@centos]$ make
[user@centos]$ su
[root@centos]# make install

 カードサービスを起動して動作確認まで行います。あらかじめB-CASカードを挿しておきます。

[root@centos]# systemctl enable pcscd
[root@centos]# systemctl start pcscd
[root@centos]# pcsc_scan

  以下が表示されれば成功

   Japanese Chijou Digital B-CAS Card (pay TV)

  Ctrl+C で抜けます。

[root@centos]# exit

arib25ライブラリ

 放送データの復号を行うarib25ライブラリをインストールします。

[user@centos]$ mkdir ~/git
[user@centos]$ cd ~/git
[user@centos]$ git clone https://github.com/stz2012/libarib25.git
[user@centos]$ cd libarib25/
[user@centos]$ cmake .    <--- '.'を忘れずに!!
[user@centos]$ make
[root@centos]# su
[root@centos]# make install
[root@centos]# echo /usr/local/lib64 > /etc/ld.so.conf.d/usr-local-lib.conf
[root@centos]# ldconfig
[root@centos]# exit

PT3ドライバ

 Gitでソースコードをダウンロードするので、専用のgitディレクトリを作成し、そこで作業します。

 ドライバのビルドはdkmsコマンドを使用します。dkmsはカーネルのアップデートに合わせて自動的にドライバをビルドし直すツールです。

[user@centos]$ cd ~/git
[user@centos]$ git clone https://github.com/m-tsudo/pt3.git
[user@centos]$ cd pt3
[root@centos]# su
[root@centos]# bash ./dkms.install

 dkmsによるビルドに失敗する場合、以下の様に通常通りのmakeを実行します。

[root@centos]# make
[root@centos]# make install

 最後に録画サーバを再起動して終了です。

[root@centos]# reboot

 再起動後、PT3のデバイスファイルが作成されていること、ドライバがロードされていることを確認します。PT3が1枚挿しの場合、デバイスファイルが4つ表示されます。

[user@centos] ls -l /dev/pt3*

    crw-rw-rw- 1 root video 249, 0  8月 30 18:45 /dev/pt3video0
    crw-rw-rw- 1 root video 249, 1  8月 30 18:45 /dev/pt3video1
    crw-rw-rw- 1 root video 249, 2  8月 30 18:45 /dev/pt3video2
    crw-rw-rw- 1 root video 249, 3  8月 30 18:45 /dev/pt3video3

 ドライバモジュールがロードされているかも確認します。

[user@centos]$ lsmod | grep pt3

    pt3_drv                42151  0

 値が異なるかもしれませんが、上記のように表示されればOKです。

 注意点として、カーネルをバージョンアップした時にドライバが動作しなくなる事があります(正確にはカーネルとドライバのチェックサムの不一致によりドライバがロードされなくなる)。

 dkmsでインストールした場合、自動的にドライバをビルドし直すため、その様な問題は起こりませんが、ある日突然録画が出来なくなった場合、ドライバをビルドし直す必要がある事を憶えておいて下さい。

recpt1コマンド

 録画コマンドのrecpt1コマンドをインストールします。Chinachuの場合は通常版、epgrec UNAの場合はhttpサーバ機能追加版をインストールして下さい。

通常版

 Chinachuの場合、こちらの手順でインストールします。

[user@centos]$ cd ~/src
[user@centos]$ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
[user@centos]$ tar xvjf tip.tar.bz2
[user@centos]$ $ cd pt1-17b4f7b5dccb/recpt1/
[user@centos]$ sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h 
[user@centos]$ ./autogen.sh 
[user@centos]$ ./configure --enable-b25
[user@centos]$ make
[root@centos]# su
[root@centos]# make install
[root@centos]# exit

httpサーバ機能追加版

 epgrec UNAの場合、こちらの手順でインストールします。

 以下のページにアクセスし、recpt1のパッチファイル(recpt1-http-rev4.tar.gz)をダウンロードします。

 ダウンロードしたパッチファイルは~/srcディレクトリに転送しておきます。

 recpt1コマンドのソースファイルとパッチファイルの文字コードが食い違っています(UTF-8とEUC)。そのままではパッチ当てに失敗するため、以降ではnkfコマンドでパッチファイルを文字コード変換後にパッチを当てています。

[user@centos]$ cd ~/src
[user@centos]$ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
[user@centos]$ tar xvjf tip.tar.bz2
[user@centos]$ tar xvzf recpt1-http-rev4.tar.gz
[user@centos]$ nkf -w8 recpt1-http-rev4/recpt1-http.diff > http4.patch
[user@centos]$ patch -p2 -d pt1-17b4f7b5dccb/recpt1/ < http4.patch
[user@centos]$ cd pt1-17b4f7b5dccb/recpt1/
[user@centos]$ sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h
[user@centos]$ ./autogen.sh
[user@centos]$ ./configure --enable-b25
[user@centos]$ make
[root@centos]# su
[root@centos]# make install
[root@centos]# exit

録画テスト

 recpt1コマンドで実際に録画出来る事を確認します。

 以下は、関東で東京スカイツリーから地デジを受信している場合のNHK総合(27ch)を10秒間録画したコマンド例です。

[user@centos]$ recpt1 --b25 --strip 27 10 ~/test.ts

 チャンネル番号はマスプロの地上デジタル放送 チャンネル一覧表で確認して下さい。

 録画したtest.tsファイルの再生確認はVLC media playerを使用します。Windows PCにコピーするか、Samba経由で行って下さい。正常に再生されない場合、以下の原因が考えられます。

  • 録画したチャンネル番号に誤りがある
  • アンテナ線が正常につながっていない
  • B-CASカードが正しくカードリーダーに挿さっていない
  • arib25ライブラリが正常にインストール出来ていない
  • PT3ドライバが正常にインストール出来ていない

 アンテナ線がつながっていない場合は「つなぎましょう」で終わりますが、ソフトウェア的な問題は特定が難しい場合があります。本記事をもう一度最初から見直してみて下さい(一応個々の確認を挟んだ記事にしたつもりです)。しかし、ハードウェア的な問題、例えばPT3の初期不良だと他のPCに挿し替えて調査なんて羽目になるので大変です。

録画サーバソフトのインストール

 ここまでで録画サーバを構築するための前準備は完了です。続いてそれぞれのソフトウェアのインストールへと進んで下さい。

 Chinachu γ(ガンマ)はMirakurunを先にインストールして下さい。