作成日:2014-08-03 21:23:41
最終更新日:2015-01-12 21:01:25

pt3を導入する

2015/01/12追記
CentOS7にPT3で録画サーバのページをアップしました。
これから環境を作る予定の方はCentOS7にPT3で録画サーバのページを参照されることをお勧めします。


ワールドカップが間もなく開催されようとしています。どうしますか?

管理人は家族に全試合録画を打診した。

家族Aは録画容量の枯渇を理由に難色を示した。
家族Bはおかあさんといっしょファミリーコンサートの録画を理由に、打診に対して耳をかさない!
家族Cは妖怪ウォッチの録画を理由に、打診を却下した!
家族Dはそもそも話を聞いていない!
家族Eはただただにやにやしている!
・・・
・・

管理人は9998のダメージを受けた!
管理人は逃亡、自室に引きこもった!

管理人はAmazonを開きHP ヒューレット・パッカード コンパクト サーバー ProLiant MicroServer マイクロサーバー N54L proliant-500をカートに入れた!
管理人はPT3 Rev.Aをカートに入れた!
管理人はGemalto ジェムアルト ICカードリーダ・ライタ 電子申告(e-Tax)対応住基カード用PC USB-TR HWP119316をカートに入れた!
管理人はPLANEX 全端子電流通過型 高画質・地デジ/BS/CS/110度CS対応アンテナ2分配器+F型ネジ固定式アンテナケーブル(1m) 2本セット PL-ANT02PESETをカートに入れた!
管理人はプレクス LNB電源供給用(BSアンテナ電源供給用)ACアダプタをカートに入れた!
管理人はシリコンパワー USB3.0フラッシュメモリ 【ドラゴンクエストX動作確認済】 16GB アイシーブルー SP016GBUF3M01V1Bをカートに入れた!
・・・
・・

管理人は決済方法から代引きを選択!
しかし残念、資金が足りない!
・・・
・・

管理人は思案している・・・
・・・
・・

管理人は意を決して決済方法をカードへと変更!
管理人はHP ヒューレット・パッカード コンパクト サーバー ProLiant MicroServer マイクロサーバー N54L proliant-500を手に入れた!
管理人はPT3 Rev.Aを手に入れた!
管理人はGemalto ジェムアルト ICカードリーダ・ライタ 電子申告(e-Tax)対応住基カード用PC USB-TR HWP119316を手に入れた!
管理人はPLANEX 全端子電流通過型 高画質・地デジ/BS/CS/110度CS対応アンテナ2分配器+F型ネジ固定式アンテナケーブル(1m) 2本セット PL-ANT02PESETを手に入れた!
管理人はプレクス LNB電源供給用(BSアンテナ電源供給用)ACアダプタを手に入れた!
管理人はシリコンパワー USB3.0フラッシュメモリ 16GB アイシーブルー SP016GBUF3M01V1Bを手に入れた!
・・・
・・

管理人のお財布に33,000円の大ダメージ!来月のお小遣いが停止された!

そんなわけで、PT3の値下げとワールドカップという2つの動機に後押しされ、遂に我が家でも録画サーバを立てることを決心しました。このHP ProLiant MicroServerはマザーボードにUSBのスロットが生えている便利な製品なので、OSはUSBメモリにインストールし、4基あるHDDスロットは全て録画データを保存するために利用する予定です。なお、録画サーバを立てるには上で購入したものに加えてB-CASカードが必要になる他、ご自宅の環境によっては、地上波とBSの分波機が必要になるかもしれません。
また、B-CASカードの入手ですが、自宅のテレビから引っこ抜いてくるか、中古のデジタル方法受信機を購入した後こちらに電話連絡してB-CASカード(赤色)の発行を依頼するのが良いと思います。 試していませんので正確な情報ではありませんが、FAQを見る限り「PT3を購入したのでB-CASカードを発行してください」と言っても発行してもらえません。また、改造カード等の購入も止めましょう。普通にカードを発行してもらってもたったの2,000円ですからね。
そうそう、モニタとの接続にはアナログRGB(D-sub15ピン) を用います。サーバを買うような人は自宅に1本くらいは余らせているかと思いますが、MicroServerには付属していませんので、事前に確認しておいたほうが良いでしょう。普段はリモート接続で操作すれば良いので不要ですが、環境構築時はどうしても必要ですからね。
まだありました。このMicroServerには光学ドライブが付属していません。OSのインストールメディアにUSBメモリを利用する場合は不要ですが、DVDやCD-ROMからのインストールする場合は、別途内蔵光学ドライブを接続するか、ポータブル DVDドライブを用意する必要があります。

HP MicroServerにPT3とUSBメモリを取り付ける

4〜5台ほどPCを自作した経験があるのであまり気にしていなかったのですが、MicroServerにPT3を取り付ける際に少し手間取りました。ですので、取り付けの様子を動画に撮ってみました。
定期的に投げ売りされている機種ですので、タイミング良く手に入れた方は参考にしていただければと思います。

OS(CentOS)インストール

※linuxを触るような人しか見ないでしょうから不要な警告とは思いますが念の為。
これから紹介する作業の中ではwebサーバを立てています。インターネットに直結されているPCでこの作業を行うと、世界中から予約を受け付けることになってしまうので注意してください。
またこのサイト的には、普段CentOSに関する内容についてはASUSのノートPCで実作業を行っていますが、今回に限ってはハードがHP MicroServerです。もうひとつ。ひと通り設定内容をまとめてみたところ、かなり長いことが判明したため独立されられそうな内容は可能な限り独立させています。
というわけでまずはOSのインストールですが、録画サーバにはCentOS6.5を採用します。インストール作業はこちらと同じですので割愛します。基本的にはインストールウィザードに従って進めるだけですが、2点ほど注意が必要な点があります。
1点目は、インストールを開始する前にHDDを全て外して、確実にUSBメモリにブートローダとOSがインストールされるようにすることです。
2点目は、インストール中ntpサーバを有効にすることを忘れないことです。
1点目はHDDが接続されていてもインストールの際適切に設定すればHDDが接続されていても構わないのですが、こうしておけば確実ですし、2点目は後から有効にできますが、こっちのほうが手っ取り早い上に余計な作業をしなくて済みますからね。

有線ネットワークの有効化・固定IPの設定・VNCの設定

インストールが完了したら、インストール有線ネットワークの有効化・固定IPの設定を行います。その後VNCの設定をすれば、その後のほとんどの設定はVNC経由で実施できます。もっと言うと、さらにTeamViewerも設定し、スマホにもスマホ用のTeamViewerアプリ(google playapp store)をインストールすれば自宅ではVNCで、外出先からはTeamViewerでリモートアクセスが可能になり、相当便利に使えるのでおすすめです。

ここまで済んだら一度PCを再起動してみましょう。ログイン後ネットワークアイコンが自動的に接続状態になればOKです。またこのあたりでソフトウェアのアップデートを済ませておいたほうが良いかと思います。全ての更新完了するまで2時間程度はみる必要がありますが、PT3導入後にカーネルのバージョンアップが発生するとPT3のドライバを入れなおす必要がありますから。これがまた微妙にやっかいで、やることは最初にやることと何も変わりませんが、ドライバの再インストールを忘れてしまうんですよね。で、何本か録画に失敗してからきがつくと。

SELINUXの無効化

続いてSELINUXの無効化ですが、手順はリンク先のページにまとめてあるので、そちらを参考にしてください。

リポジトリの追加

次はリポジトリの追加ですが、ここまでの作業同様この後もほとんどrootでの作業になりますので、まずは以下コマンドでrootになります。コマンドを実行すると[パスワード:]と聞いてきますのでrootパスワードを入力してください。

su -

この後いくつかドライバやソフトウェア等のパッケージをインストールしますが、標準リポジトリには含まれていないものも存在していますので、rpmforgeリポジトリを追加します。リポジトリの追加に先立って[yum-plugin-priorities]をインストールします。これは、名前の通りyumのリポジトリに優先順位を設定することができるプラグインです。以下コマンドでインストールしておけば、標準パッケージにあるものは標準パッケージのものを利用し、標準パッケージに無いものを追加リポジトリから取ってきてくれるようになります。デフォルト設定が非常に気が利いているので、インストールだけでよく設定を変更する必要無しです。
というわけで、rootで以下コマンドを実行します。

yum -y install yum-plugin-priorities

[yum-plugin-priorities]がインストールされたら、以下コマンドでrpmforgeのrpmパッケージをダウンロードします。

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

rpmパッケージのダウンロードが完了したら、以下コマンドを実行してパッケージをインストールします。

rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

rpmパッケージのインストールが完了したらダウンロードしたパッケージは不要になりますので、削除してしまいましょう。
以下コマンドを実行すると、[rm: remove 通常ファイル `rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm']といった感じで本当に削除しても良いか聞いてきますので、[y]の後[enter]キーを押して削除します。

rm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

yumでインストールできるパッケージのインストール

これで事前設定がだいたい完了したので必要なドライバやソフトウェアのインストールに移りましょう。
とりあえず以下コマンドを実行してyumでインストールできるものは一括でインストールします。インストールが完了するまで5分程度時間がかかりますので、少し気長に待ちましょう。

yum -y install gcc ccid pcsc-lite pcsc-lite-devel pcsc-lite-libs perl-Gtk2

pcsc-tools(とpcsc-perl)のインストール

続いてyumではインストールできないパッケージをソースからmakeしてインストールします。
まずは[pcsc-tools]ですが、これはB-CASカードを読み取るのに必要なパッケージです。
以下コマンドを実行してwgetでソースを取得します。

wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.22.tar.gz -P /usr/local/bin/pcsc/pcsc-tools

ソースの取得が完了したら、以下コマンドでtarボールを展開します。

tar zxvf /usr/local/bin/pcsc/pcsc-tools/pcsc-tools-1.4.22.tar.gz -C /usr/local/bin/pcsc/pcsc-tools/

tarボールの展開が終わったら作成されたフォルダに移動します。

cd /usr/local/bin/pcsc/pcsc-tools/pcsc-tools-1.4.22

フォルダに移動した後で、[make]コマンドを実行します。
makeも少し時間がかかります。

make

[make]が完了したら、以下コマンドでインストールです。

make install

[pcsc-tools]のインストールは完了しましたが、これだけではカードリーダを読み取れません。[pcsc-perl]も必要になりますので、[pcsc-tools]をインストールした時と同じ流れでインストールします。まずはwgetでソースを取得します。

wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.13.tar.bz2 -P /usr/local/bin/pcsc/pcsc-perl

ソースを取得したら以下コマンドでtarボールを展開します。

tar jxf /usr/local/bin/pcsc/pcsc-perl/pcsc-perl-1.4.13.tar.bz2 -C /usr/local/bin/pcsc/pcsc-perl

tarボールの展開が終わったら作成されたフォルダに移動します。

cd /usr/local/bin/pcsc/pcsc-perl/pcsc-perl-1.4.13/

先程は[make]でしたが、今度は以下コマンドを実行します。ただ、意味合い的には[make & make install]と同じです。

perl ./Makefile.PL

B-CASカードの読み取りテスト

これで[pcsc-tools]と[pcsc-perl]のインストールが完了しましたので、MicroServerにカードリーダを接続します。ちなみに私が今回購入したカードリーダはGemalto ジェムアルト ICカードリーダ・ライタ 電子申告(e-Tax)対応住基カード用PC USB-TR HWP119316です。
カードリーダをMicroServerに接続したら、以下コマンドを実行してカード読み取りサービスを開始します。

/etc/init.d/pcscd start

サービスを開始したら。カードリーダにB-CASカードをセットします。このカードリーダですが、以下画像のようにウラ面を上に向けてカードを差し込むのが正しいので注意してください。

insert B-CAS card

B-CASカードをカードリーダにセットしたら以下コマンドを実行して読み取りテストを行いましょう。

pcsc_scan

以下のような感じで端末内にメッセージが表示され、最終行に[Japanese Chijou Digital B-CAS Card (pay TV)]と表示されればOKです。メッセージを確認できたら、[ctrl]+[z]キーでscanを停止します。

PC/SC device scanner
V 1.4.22 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.5.2
Using reader plug'n play mechanism
Scanning present readers...
0: Gemplus GemPC Twin (A31497C2) 00 00

Tue Jul 15 11:36:10 2014
Reader 0: Gemplus GemPC Twin (A31497C2) 00 00
Card state: Card inserted,
ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99

ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
+ TS = 3B --> Direct Convention
+ T0 = F0, Y(1): 1111, K: 0 (historical bytes)
TA(1) = 12 --> Fi=372, Di=2, 186 cycles/ETU
21505 bits/s at 4 MHz, fMax for Fi = 5 MHz => 26881 bits/s
TB(1) = 00 --> VPP is not electrically connected
TC(1) = FF --> Extra guard time: 255 (special value)
TD(1) = 91 --> Y(i+1) = 1001, Protocol T = 1
-----
TA(2) = 81 --> Protocol to be used in spec mode: T=1 - Unable to change - defined by interface bytes
TD(2) = B1 --> Y(i+1) = 1011, Protocol T = 1
-----
TA(3) = 7C --> IFSC: 124
TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
TD(3) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following
-----
TA(4) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V
+ Historical bytes:
+ TCK = 99 (correct checksum)

Possibly identified card (using /usr/local/share/pcsc/smartcard_list.txt):
3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
Japanese Chijou Digital B-CAS Card (pay TV)
^Z
[1]+ 停止 pcsc_scan

インストールのタイミングによっては、メッセージが以下のようになっているケースがあるかもしれませんが、これでもとりあえず使えるので気にする必要は無いと思います。

PC/SC device scanner
V 1.4.22 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.5.2
Using reader plug'n play mechanism
Scanning present readers...
0: Gemplus GemPC Twin (A31497C2) 00 00

Thu Jul 24 00:00:08 2014
Reader 0: Gemplus GemPC Twin (A31497C2) 00 00
Card state: Card inserted,
ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99

Can't locate Chipcard/PCSC/Card.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/bin/ATR_analysis line 47.
BEGIN failed--compilation aborted at /usr/local/bin/ATR_analysis line 47.
ATR_analysis '3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99': Success

PT3ドライバのインストール

B-CASカードリーダが読み取れるようになりましたので、次はPT3のドライバをインストールします。
まずは以下コマンドを実行し、ドライバインストールに必要なパッケージをyumでインストールします。

yum -y install git kernel-devel-`uname -r`

パッケージのインストールが終わったら、wgetでPT3ドライバのソースをダウンロードします。

wget https://github.com/m-tsudo/pt3/archive/master.zip -P /usr/local/bin/pt3

ソースのダウンロードが終わったら以下コマンドでzipファイルを解凍します。

unzip /usr/local/bin/pt3/master.zip -d /usr/local/bin/pt3

ソースのダウンロードが終わったら作成されたフォルダに移動します。

cd /usr/local/bin/pt3/pt3-master

フォルダに移動したら、makeを実行してインストールの準備をします。

make

makeが終わったら以下コマンドでドライバをインストールします。

make install

ドライバのインストールが終わったら一回再起動します。再起動が完了したらログインして端末を起動し、再度rootになってください。
なお、一発で再起動をかけるには以下コマンドを実行します。

shutdown -r now

rootになったら以下コマンドを実行してPT3が認識されているか確認しましょう。

ls /dev/pt3*

PT3が1枚刺さっている状態だと、以下のようにpt3video1からpt3video3までの4デバイスが表示されればOKです。
複数枚刺している場合はその分だけ認識されるデバイスが増えます。

/dev/pt3video0 /dev/pt3video1 /dev/pt3video2 /dev/pt3video3

arib25のインストール

続いてarib25をインストールします。arib25はデジタル方法の暗号解除に必要です。
まずは以下コマンドでarib25のソースを取得します。

wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip -P /usr/local/bin/arib25

先程同様zip圧縮されていますので、以下コマンドで解凍します。

unzip /usr/local/bin/arib25/c44e16dbb0e2.zip -d /usr/local/bin/arib25

解凍が終わったら以下コマンドで作成されたフォルダに移動します。

cd /usr/local/bin/arib25/pt1-c44e16dbb0e2/arib25

フォルダに移動したらmakeコマンドでインストール準備をします。

make

makeが完了したら以下コマンドでarib25をインストールします。

make install

recpt1のインストール

だいぶ準備が整ってきました。録画環境が整うまであと少しです。
今度は録画ツールのrecpt1をインストールしますが、その前に以下コマンドでビルドに必要なパッケージをインストールします。

yum -y install autoconf automake

[autoconf]と[automake]のインストールが終わったら、gitでrecpt1のソースを取得します。
なお、recpt1は色々と派生バージョンがあるようなのですが、ここでインストールするのはstz版と呼ばれるものです。

git clone https://github.com/stz2012/recpt1.git /usr/local/bin/recpt1_stz

ソースのダウンロードが終わったら以下コマンドで作成されたフォルダに移動します。

cd /usr/local/bin/recpt1_stz/recpt1/

makeといきたいところですが、その前に以下コマンドでソースを開いて一部を編集します。

vi ./pt1_dev.h

編集するのは5行目〜32行目あたりにある変数宣言部分です。
[dev/pt1〜]となっているところを全て[/dev/pt3〜]に変更します。参考までに、編集前後を記載しておきます。

[編集前]
char *bsdev[NUM_BSDEV] = {
"/dev/pt1video1",
"/dev/pt1video0",
"/dev/pt1video5",
"/dev/pt1video4",
"/dev/pt1video9",
"/dev/pt1video8",
"/dev/pt1video13",
"/dev/pt1video12",
"/dev/pt3video1",
"/dev/pt3video0",
"/dev/pt3video5",
"/dev/pt3video4"
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
"/dev/pt1video2",
"/dev/pt1video3",
"/dev/pt1video6",
"/dev/pt1video7",
"/dev/pt1video10",
"/dev/pt1video11",
"/dev/pt1video14",
"/dev/pt1video15",
"/dev/pt3video2",
"/dev/pt3video3",
"/dev/pt3video6",
"/dev/pt3video7"
};

[編集後]
char *bsdev[NUM_BSDEV] = {
"/dev/pt3video1",
"/dev/pt3video0",
"/dev/pt3video5",
"/dev/pt3video4",
"/dev/pt3video9",
"/dev/pt3video8",
"/dev/pt3video13",
"/dev/pt3video12",
"/dev/pt3video1",
"/dev/pt3video0",
"/dev/pt3video5",
"/dev/pt3video4"
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
"/dev/pt3video2",
"/dev/pt3video3",
"/dev/pt3video6",
"/dev/pt3video7",
"/dev/pt3video10",
"/dev/pt3video11",
"/dev/pt3video14",
"/dev/pt3video15",
"/dev/pt3video2",
"/dev/pt3video3",
"/dev/pt3video6",
"/dev/pt3video7"
};

ソースを編集して保存したら、今度は以下スクリプトを実行します。

./autogen.sh

続いて以下コマンドで[configure]します。

./configure --enable-b25

[configure]が終わったら[make]を実行します。

make

[make]が終わったらインストールです。

make install

recpt1のインストールが完了したらパスを通します。

echo "/usr/local/lib" > /etc/ld.so.conf.d/recpt1.conf

パスを通したら、共有ライブラリの依存関係情報を更新します。

ldconfig

録画テスト

それでは、いよいよ録画テストに移ります。
マスプロのサイトでチャンネル番号を確認したら、以下コマンドを実行します。なお、チャンネル変更については、総務省が公開しているpdfファイルを参照してください。

recpt1 --b25 --strip チャンネル番号 録画秒数 test.ts

例えば、東京の送信塔が鶴川になる地区に住んでいて、NHK総合を10秒間録画するケースであれば、実行するコマンドは以下になります。

recpt1 --b25 --strip 13 10 test.ts

もしこのようなメッセージが表示された場合は、接続誤りがあって信号がPT3まで届いていないか、チャンネルの指定が間違っています。

using B25...
enable B25 strip
pid = 3222
Cannot tune to the specified channel

また、信号が弱すぎる場合、以下のように[C/N = -nandB]となります。恐らく最寄りの電波塔が間違っているかと思いますので、別の地区の電波塔からチャンネル番号を拾って再施行してみてください。

using B25...
enable B25 strip
pid = 3235
C/N = -nandB
Recording...
Recorded 11sec

こんな感じで指定時間後にコマンドが完了すればOKです。

using B25...
enable B25 strip
pid = 3241
C/N = 24.842899dB
Recording...
Recorded 11sec

epgdumpのインストール

とりあえずの録画ができるようになったら、今度は番組表を取得するプログラムであるepgdumpをインストールします。
以下コマンドを実行してgitからソースを取得します。あ、そうそう、コマンドの実行はrootのままでOKですよ。

git clone https://github.com/stz2012/epgdump.git /usr/local/bin/epgdump_stz

ソースの取得が完了したら、以下コマンドでソースを保存したフォルダに移動します。

cd /usr/local/bin/epgdump_stz

フォルダへの移動が終わったら、以下コマンドを実行します。[make]はすぐに完了すると思います。

make

[make]が完了したら、以下コマンドでインストールです。

make install

egprecのインストール

続いて録画予約システムであるegprecのインストールです。
epgrecはデータを保存するのにmysqlを使います。よって以下コマンドを実行してそれ関係のパッケージを先にインストールします。
※2015/1/4追記
ここのコマンドが間違っていたのに気づいたので修正しました。このページを閲覧してくださった多数の皆様、リンクしていただいた多数の皆様、ごめんなさい。

yum install mysql-server phpmyadmin mysql httpd expect

インストールが終わったらmysqlの設定ファイル編集に移りますが、その前に以下コマンドでデフォルト設定ファイルのバックアップを残しておきましょう。

cp /etc/my.cnf /etc/my.cnf.default

デフォルト設定ファイルのバックアップアップが完了したら、以下コマンドで設定ファイルの編集に移ります。

gedit /etc/my.cnf

my.cnfが開いたら、ファイルを以下のように編集した後保存して閉じます。

[client]
default-character-set = utf8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

設定ファイルの編集が終わったら、以下コマンドを実行してmysqlデーモンを開始します。

/etc/init.d/mysqld start

mysqlが開始されたら、以下コマンドでrootパスワードを設定します。
なお、[新しいパスワード]をこれから使うパスワードに置き換えて実行するのを忘れない用にしてください。

/usr/bin/mysqladmin -u root password '新しいパスワード'

パスワードが設定できたら、以下コマンドでmysqlにログインします。
コマンドを実行すると、[Enter password:]とパスワードを求めてきますので、先程設定したパスワードを入力してください。

mysql -u root -p

mysqlにログインできたら、以下sqlを実行して番組情報を保存するためのデータベース[epgrec]を作成します。

create database epgrec;

データベースが作成できたら、以下sqlを実行してgrant構文の実行権限を持つユーザ[epgrec]を作成します。
なお、sql文の最後の[yourpassword]は、先程設定したパスワードを入力します。

grant all on epgrec.* to epgrec@localhost identified by 'yourpassword';

ユーザが作成できたら、以下sqlを実行してmysqlサーバに権限テーブルを読み込ませます。

flush privileges;

これでmysqlの設定は完了したので、以下コマンドでmysqlからログアウトします。

exit

mysqlの動作確認ができたので、以下コマンドを実行して起動時に自動的にmysqlが起動するようにします。

chkconfig mysqld on

また、epgrecはwebサーバ上で動作します。ですので、httpdを開始します。

/etc/init.d/httpd start

httpdが起動したら、firefoxで[http://localhost]にアクセスします。
[Apache 2 Test Page powered by CentOS]と表示されればOKです。

/etc/init.d/httpd start

access localhost

これでhttpdの動作確認ができたので、以下コマンドを実行して起動時に自動的にhttpdが起動するようにします。

chkconfig httpd on

ちなみに、自動起動するサービスの一覧は、以下コマンドを実行すると確認することができますので、参考までにどうぞ。

chkconfig --list

で、さきほどは端末からmysqlにログインしてsqlを実行しましたが、個人的にとっても使いづらいです。
ですので、web経由でmysqlを操作できるすぐれもの、[phpmyadmin]を設定して使えるようにしておきたいと思います。なお、インストールは他のパッケージを一緒に済ませてありますので、コマンド履歴を確認してみてください。
phpmyadminの設定までに、以下コマンドを実行して設定ファイルをバックアップしておきましょう。

cp /etc/httpd/conf.d/phpmyadmin.conf /etc/httpd/conf.d/phpmyadmin.conf.default

では、設定ファイルの編集前に以下コマンドでサーバのIPを確認しましょう。
なお、IPは固定しておいたほうが何かと都合が良いので、まだの場合は済ませておいたほうがよいかと思います。

ifconfig

IPも確認したところで、以下コマンドを実行して設定ファイルの編集に移ります。

gedit /etc/httpd/conf.d/phpmyadmin.conf

ファイルが開いたら、[Allow from 127.0.0.1]の下に[Allow from localhost]と[Allow from 自分のIPの第3オクテットまで]を追記して保存します。
例えば、自分のIPが[192.168.1.10]だったとすると、[phpmyadmin.conf]は以下のようになります。
この設定を入れておけば、同じセグメントにいるIPからphpmyadminにアクセスできるようになります。

#
# Web application to manage MySQL
#


Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from localhost
Allow from 192.168.1.


Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin

phpmyadminの設定はもう少し続きます。今度は以下ファイルの設定ファイルをバックアップします。

cp /usr/share/phpmyadmin/config.inc.php /usr/share/phpmyadmin/config.inc.php.default

バックアップが完了したら以下コマンドを実行し、32桁のランダムな文字列が表示されるのでそれをコピーします。

mkpasswd -l 32

文字列のコピーが終わったら以下コマンドを実行して設定ファイルを開きます。

gedit /usr/share/phpmyadmin/config.inc.php

設定ファイルが開いたら、17行目の変数の値としてコピーした文字列を貼り付けます。
だいたいこんな感じになっていればOKです。

$cfg['blowfish_secret'] = 'ervBgpGmihod075okasratgmv6u!donc'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

また、以下3行は[$cfg['Servers'][$i]['auth_type'] = 'cookie';]の下に追記します。

[$cfg['DefaultLang'] = 'ja-utf-8';]
[$cfg['Lang'] = 'ja-utf-8';]
[$cfg['DefaultCharset'] = 'utf-8';]

編集後のファイルの33行目までを以下に貼り付けておきます。以下のようになっていればOKです。

/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* phpMyAdmin sample configuration, you can use it as base for
* manual configuration. For easier setup you can use scripts/setup.php
*
* All directives are explained in Documentation.html and on phpMyAdmin
* wiki .
*
* @version $Id$
*/

/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = 'ervBgpGmihod075okasratgmv6u!donc'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/*
* Servers configuration
*/
$i = 0;

/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['DefaultLang'] = 'ja-utf-8';
$cfg['Lang'] = 'ja-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

設定ファイルの編集はまだもう少し続きます。
以下コマンドを実行してバックアップを取得します。

cp /etc/php.d/mcrypt.ini /etc/php.d/mcrypt.ini.default

バックアップが終わったら以下コマンドを実行して設定ファイルを開きます。

gedit /etc/php.d/mcrypt.ini

ファイルが開いたら、2行目の[extension=module.so]を[extension=mcrypt.so]に書き換えて保存します。
編集後、以下のようになっていればOKです。

; Enable mcrypt extension module
extension=mcrypt.so

ここまで完了したら、httpdを再起動します。

/etc/init.d/httpd restart

httpdの再起動が終わったら[http://localhost/phpmyadmin/index.php]にアクセスしてphpmyadminのログイン画面が表示されるか確認してください。

phpmyadmin login

何をするわけではありませんが、試しにログインしてみましょう。ユーザ名は[root]で、パスワードは先程コマンドで設定したものを入力します。ログインできたら、空のepgrecテーブルが作成されていることを確認してログアウトしてください。

phpmyadmin index

続いてepgrecの設定ファイルの編集ですが、まずは以下コマンドを実行してphpmyadmin.confの設定ファイルをコピーします。

cp /etc/httpd/conf.d/phpmyadmin.conf /etc/httpd/conf.d/epgrec.conf

設定ファイルのコピーが終わったら、以下コマンドでepgrec.confを開きます。

gedit /etc/httpd/conf.d/epgrec.conf

ファイルが開いたら、以下のように編集します。

#
# Web application to manage MySQL
#


Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from localhost
Allow from 192.168.2.


Alias /epgrec /usr/local/bin/epgrec

そうそう、忘れないうちに[apache]ユーザのログインシェルをbashに変更しておきましょう。

usermod -s /bin/bash apache

続いて以下コマンドを実行し、gitからegprecのソースを取得します。

git clone https://github.com/stz2012/epgrec.git /usr/local/bin/epgrec

ソースの取得が完了したら、以下コマンドを実行してソースの所有者を[apache]に変更します。

chown -R apache:apache /usr/local/bin/epgrec

ソースの所有者を変更したら、作成されたフォルダに移動します。

cd /usr/local/bin/epgrec/

フォルダに移動したら、実際に録画が行われる時に実行されるスクリプトの編集に移ります。
以下コマンドでテンプレートのスクリプトをコピーします。

cp do-record.sh.pt1 do-record.sh

コピーが終わったら以下コマンドでアクセス権を変更します。

chmod 755 do-record.sh

さらに以下コマンドを実行して[cache][templates_c][video][thumbs][settings]フォルダもアクセス権を変更します。

chmod 777 cache templates_c video thumbs settings

続いてサンプルファイルを元に地デジチャンネルの設定ファイルをコピーして作成します。

cp config.php.sample config.php

コピーが終わったらチャンネル設定ファイルを開きましょう。

gedit config.php

ファイルを開いたら、マスプロのサイトを元に8行目の配列の中身(チャンネル番号)を編集します。なお、使わない行は消すか、行頭からコメントアウト(//を入力します。これ以降の文字列は、プログラムが無視してくれます)してください。
下はデフォルト状態を見ると、NHKからテレ東までと千葉が有効で、MX・テレ神・テレ玉・大学が無効になっています。そして受信できないチャンネルが接愛知されていると、正常に録画できなくなったりしますので、無駄な行を残さないように気をつけてください。

// 識別子 => チャンネル番号
$GR_CHANNEL_MAP = array(
"GR27" => "27", // NHK
"GR26" => "26", // 教育
"GR25" => "25", // 日テレ
"GR22" => "22", // 東京
"GR21" => "21", // TBS
"GR24" => "24", // テレ朝
"GR23" => "23", // テレ東
// "GR23" => "20", // MX TV
// "GR20" => "18", // テレ神
"GR30" => "30", // 千葉
// "GR32" => "32", // テレ玉
// "GR28" => "28", // 大学
);

なお設定する際、以下コマンドを実行して[C/N = 31.337908dB]といったように指定したチャンネルからきちんと電波を受信できているかチェックするようにしましょう。受信できていない場合や数値が小さすぎる場合は別のチャンネルを選択したほうが良いでしょう。録画してから気づくのでは遅いですしね。

recpt1 --b25 --strip チャンネル番号 5 test.ts

ここまで完了したら、phpの設定を変更します。
以下コマンドを実行して、デフォルト設定ファイルをバックアップします。

cp /etc/php.ini /etc/php.ini.default

設定ファイルのバックアップが完了したら、以下コマンドで設定ファイルを開きます。

gedit /etc/php.ini

ファイルが開いたら、以下を追記して閉じます。
追記する場所は947行目あたり([;date.timezone = ]の後)が良いかと思います。

date.timezone = "Asia/Tokyo"

epg(電子番組表)取得をスケジューリング

ここまで完了したら、定期的にepg(電子番組表)を取得する設定を行います。
以下コマンドを実行して、cronの設定ファイルをコピーします。

cp cron.d/getepg /etc/cron.d/

cronの設定ファイルをコピーしたら、以下コマンドでファイルを開きます。

vi /etc/cron.d/getepg

設定ファイルを開いたら、4行目を以下のように書き換えて保存します。

29 */2 * * * apache /usr/local/bin/epgrec/getepg.php

epgrecの初期設定

epgrecのインストールと初期設定はこれで完了ですので、各種設定を適用させるためにhttpdを再起動しましょう。

/etc/init.d/httpd restart

httpdの再起動が完了したら、http://localhost/epgrec/にアクセスします。
ここまでの設定が正常に完了している場合、以下のように[ディレクトリのパーミッションチェック]と[ファイルのパーミッションチェック]で全て[OK]と表示され、地デジのチャンネルが表示されているはずです。
ここまで確認できたら一番下にある[以上を確認し、次の設定に進む]と書いてあるリンクをクリックします。

epgrec step1

基本的には、MySQLの接続パスワードを先程設定したものに変える以外、下の画像の通りで良いかと思います。
ひと通り設定したら、設定を保存するボタンをクリックします。

epgrec step2

PT3は内部的に地デジ2系統、BS2系統を持っています。PT3に地デジとBS両方のケーブルをさしている場合、地デジチューナの台数とBSチューナの台数を2に変更します。それ以外の設定はお好みで変更してください。変更が終わったら[設定を保存する]ボタンをクリックします。

epgrec step3

これでepgrecの初期設定完了です。
一番下にある[このリンクをクリックするとEPGの初回受信が始まります]のリンクをクリックします。

epgrec step4

EPGの受信が始まりました。30分ほど待った後、[epgrecのトップページを開いてください。]のリンクをクリックします。
と言いますか、少し時間が経ったらhttp://localhost/epgrec/にアクセスして番組情報が表示されていれば、ここまでの設定はOKです。

epgrec step5

HDDの初期化と自動マウント

ここまでの設定が完了したら、一旦電源を落としてインストール時に外したHDDを接続しましょう。HDDの接続が完了したら電源を入れなおして再度ログインします。
なお、ここの作業はVNC等ではアクセス権が足りず実行できませんので、実機を直接操作して行います。

access new hdd

再ログインしたら、メニューの[アプリケーション]から[システムツール]->[ディスクユーティリティ]を選択します。

desk utility

ディスクユーティリティが起動したら、左ペインから[500GBハードディスク]を選択し、[ボリュームをフォーマット]ボタンをクリックします。

click format button

ファイルシステムとボリュームラベルの選択ウィンドウが開きますが、ファイルシステムは変更する必要は無いかと思います。名前(ボリュームラベル)は自分でわかりやすいものにしてください。あとは[ファイルシステムの所有権を取得]にチェックが入っていることを確認して[フォーマットボタンをクリックします。]

select file system

[本当にボリュームをフォーマットしますか?]と確認メッセージが表示されたら、[フォーマット]ボタンをクリックします。

are you sure

1〜2分ほどでフォーマットが完了します。デバイス欄の記載を確認してウィンドウを閉じてください。

ready to use

これでディスクが使えるようになりましたが、このままでは起動の度にディスクをマウントする必要があってかなり不便です。ですので、fstabにディスクのマウント情報を記載して、起動時に自動的にディスクがマウントされるようにしたいと思います。

vi /etc/fstab

fstabが開いたら最下行に以下行を追記します。なお、ボリュームラベルとファイルシステムは、先程フォーマット時に確認・設定したものに変更してください。

/dev/sda /usr/local/bin/epgrec/video ext4 defaults 0 0

参考までにここまで設定した状態のfstabを転記しておきます。最下行以外は環境によって設定内容が異なるかと思いますが、だいたいこんな感じになっていればOKです。

#
# /etc/fstab
# Created by anaconda on Tue Jul 22 22:40:52 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=26e7a543-b806-4fd9-97bd-1ad5d280eb8f /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sda /usr/local/bin/epgrec/video ext4 defaults 0 0

fstabの編集が完了したら、以下コマンドを実行するか再起動を行って、ハードディスクが自動的にマウントされるかチェックします。このコマンド実行後、もしくは再起動後に再度ディスクユーティリティを開いて500GBのディスクを選択した時に、マウントポイントが[usr/local/bin/epgrec/video]と表示されていればfstabの設定完了です。

mount -a

mount check

HDDのマウントが完了したら、以下コマンドを実行してマウントポイントのアクセス権を再設定しておきましょう。

chmod 777 /usr/local/bin/epgrec/video/

そうそう、録画ファイルにアクセスするために毎回[/usr/local/bin/epgrec/video]までディレクトリを辿っていくのは大変なので、以下コマンドを実行してデスクトップにショートカットを作成しておきましょう。[/home/user/デスクトップ/]と書いているところの[user]はCentOSの普段ログインしているユーザ名に読み替えてくださいね。

ln -s /usr/local/bin/epgrec/video/ /home/user/デスクトップ/

こんな感じでとりあえず録画サーバが稼働するまでをまとめてみました。
スマホとPC両方にTeamViewerをインストールしておけば、外出先からでも録画予約が可能になりますので、かなり便利に使えると思います。リアルタイム視聴や録画後の自動mp4化等々やることはまだまだありますが、かなり長くなってしまったので今日のところはこんなところで終わりにします。