録画サーバ構築の前準備(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に挿し替えて調査なんて羽目になるので大変です。
録画サーバソフトのインストール
ここまでで録画サーバを構築するための前準備は完了です。続いてそれぞれのソフトウェアのインストールへと進んで下さい。
- epgrec UNA
- Chinachu γ(ガンマ):最新
- Chinachu β(ベータ):開発終了
Chinachu γ(ガンマ)はMirakurunを先にインストールして下さい。