録画サーバ構築の前準備(Ubuntu・Debian編)、Chinachu・epgrec UNA対応
最終更新日:2018/08/03
この記事で紹介するのは、Ubuntu・Debian向けの録画サーバ構築のための前準備です。Chinachuとepgrec UNAインストール前の共通作業をまとめたものになります。OS環境、サービス設定(NTP、Samba)、開発環境構築、録画機能設定(arib25ライブラリ、recpt1等)を順を追って説明します。
本記事が対象とするOSはUbuntu 14.04LTS以降(2018年8月時点の長期サポート版は18.04LTS)、Debian 8 Jessie以降(2018年8月時点の最新版はDebian 9 stretch)です。
本記事で取り扱う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環境
OSの選択
Ubuntuの場合、特にこだわりがなければサポート期限が2023年4月までの18.04LTSをインストールしましょう。デスクトップ版でも良いですが、できればサーバ版をインストールすることをおすすめします。なお、サーバ版とデスクトップ版のカーネル、ドライバ等のシステム周りに差異はありません。ウィンドウアプリケーションが必要かどうかで選択して下さい。
Ubuntuのサーバ版のみ注意点があります。起動直後にコンソール表示が真っ暗で何も表示されない場合があります。表示するためにはAlt+F1キーを押します。
Debianの場合、Debian 9 コードネームstretchをインストールしましょう。サポート期限は2022年までの予定です。
UbuntuもDebianも最小構成でインストールしたい場合、OpenSSH Serverのみを選択して下さい。録画サーバで必要なソフトは本記事内でインストールするので、それ以外は不要です。Debianでは標準システムユーティリティはインストールしなくて良いです(詳細は「Debianの標準システムユーティリティとは何か?」の記事を御覧ください)。
各OSのダウンロードページを以下に挙げておきます。よほど古いPCでなければ64bit版のものを選んで下さい。
システムアップデート
環境を最新の状態にしておきます。Debianではデフォルトでsudoコマンドは入っていないので、rootになって先頭のsudoを省略して入力してください。
$ sudo apt-get update $ sudo apt-get upgrade Debianで標準システムユーティリティをインストールしなかった場合、 bash-completionだけ追加インストールしましょう。 # apt-get install bash-completion
Debianでsudoコマンドを使用したい場合、次の手順を実行してインストール、設定します。sudoを実行したいユーザー名がhogeの場合の例です。
$ su - # apt-get install sudo # visudo # User privilege specification root ALL=(ALL:ALL) ALL hoge ALL=(ALL:ALL) ALL ← この行を追加 なお、デフォルトのvisudoのエディタはnanoになっているので、 viなどに変更したい場合、以下を実行して変更します。 # update-alternatives --config editor
サービス設定
chrony
録画サーバは予約録画のために時刻が正確でなければいけません。そのため、NTPで定期的に正確な時刻を設定します。普通にNTPクライアントを使用するのでも良いのですが、chronyの方が細かい設定ができるので、今回はchronyをインストールします。
# sudo apt-get install chrony # sudo vi /etc/chrony/chrony.conf serverの箇所を近くのNTPサーバ(契約しているプロバイダ、 近隣の大学などが提供しているもの)に置き換えます。 ここで言う「近く」とは、ネットワーク的に近いの意味ですのでお間違いなく。 例えば、契約しているプロバイダがBIGLOBEの場合は以下のように変えます。 変更前1) 3行目, Debian 9 pool 2.debian.pool.ntp.org iburst 変更前2) 17行目, Ubuntu 18.04 pool ntp.ubuntu.com iburst maxsources 4 pool 0.ubuntu.pool.ntp.org iburst maxsources 1 pool 1.ubuntu.pool.ntp.org iburst maxsources 1 pool 2.ubuntu.pool.ntp.org iburst maxsources 2 変更例) ※ 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秒)で時刻合わせを行います。ポーリング間隔は短すぎても長すぎても駄目なので、これぐらいが妥当と思います。
なお、デフォルト設定の”pool”は、NTP pool project に参加しているNTPサーバを使用する事を意味します。この設定だと特定のNTPサーバに負荷がかかるのを避けるため、世界のサーバからランダムなNTPサーバが選ばれます。
主要なプロバイダ、大学等のNTPサーバの一覧はこちらのページから確認して下さい。
chronyのサービスを再起動して作業終了です。
Ubuntuの場合) # sudo service chrony restart Debianの場合) # /etc/init.d/chrony restart
サービスを再起動後、最後に現在時刻と差異がないか確認して完了です。
$ date
Samba
Sambaをインストールします。Windowsから各ユーザーのホームディレクトリにアクセス可能にします。また、誰でもアクセス可能な共有フォルダも設定します。Sambaが不要な人は居ないと思いますが、共有フォルダが不要な場合は適宜読み飛ばして下さい。
最初に共有フォルダを作成します。ここでは”/home/share”を共有フォルダとしています。録画用のディレクトリとして使用する場合は誰でも録画ファイルを削除可能になるので注意が必要です。
# sudo mkdir /home/share # sudo chmod 777 /home/share # sudo chown nobody:nogroup /home/share
Sambaをインストールし、設定ファイルを更新します。
# sudo apt-get install samba # sudo vi /etc/samba/smb.conf ・文字コード設定の追加とプリンター設定の無効化。以下を追加。 [global] 24行目付近、下記追加 unix charset = UTF-8 dos charset = CP932 load printers = no disable spoolss = yes ・ワークグループ workgroup = MYGROUP ← 適宜変更 ・ホームディレクトリ 変更前) ;[homes] ; comment = Home Directories ; browseable = no 変更後) [homes] comment = Home Directories browseable = no writable = yes ※ Debianでは以下の行をコメントアウトする必要があります。 read only = yes ・プリンター設定は不要なので無効化 [printers], [print$] の項目は全てコメントアウト ・共有フォルダ設定、以下をファイル末尾に追記 [share] comment = Shared folder path = /home/share guest ok = yes guest only = yes writable = yes create mode = 0777 directory mode = 0777
続いてsmb.confの構文チェックを行います。
# sudo testparm 下記の様な内容が表示されます。 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
unknown, errorなどのメッセージが表示されなければ問題ありません(”syslog”関連のwarningが表示されるかもしれませんが、無視しても問題ありません)。
Samba用のユーザーを追加し、サービスを起動します。ユーザー名とパスワードは録画サーバとWindowsで同一にしておくと便利です。
# sudo pdbedit -a ユーザー名 new password: パスワードを入力 retry new password: パスワードを再度入力 ・Sambaの再起動 Ubuntuの場合) # sudo service smbd restart # sudo service nmbd restart Debianの場合) # /etc/init.d/samba restart
Windows側からホームディレクトリと共有フォルダが参照できれば成功です。
カードリーダ
カードリーダの動作に必要なパッケージをインストールし、動作確認まで行います。
# sudo apt-get install pcscd pcsc-tools libpcsclite-dev $ pcsc_scan B-CASカードを挿した状態で以下が表示されれば成功 Japanese Chijou Digital B-CAS Card (pay TV) Ctrl+C で抜けます。
開発環境構築
ツールやドライバのビルドに必要なパッケージをインストールします。
# sudo apt-get install autoconf build-essential cmake curl \ git libssl-dev libtool libboost-all-dev pkg-config yasm
Debianのみ以下も実行して下さい。
# apt-get install linux-headers-`uname -r`
録画機能設定
arib25ライブラリ
放送データの復号を行うarib25ライブラリをインストールします。
$ mkdir ~/git $ cd ~/git $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . <--- '.'を忘れずに!! $ make # sudo make install # sudo /sbin/ldconfig
PT3ドライバ
Gitでソースコードをダウンロードするので、専用のgitディレクトリを作成し、そこで作業します。
ドライバのビルドはdkmsコマンドを使用します。dkmsはカーネルのアップデートに合わせて自動的にドライバをビルドし直すツールです。
$ cd ~/git $ git clone https://github.com/m-tsudo/pt3.git $ cd pt3 # sudo apt install dkms # sudo bash ./dkms.install
dkmsによるビルドに失敗する場合、以下の様に通常通りのmakeを実行します。
# make # make install
このままだとデフォルトのearth-pt3ドライバと競合するため、ファイル末尾に下記を追記します。
# sudo vi /etc/modprobe.d/blacklist.conf blacklist earth-pt3
最後にOSを再起動して終了です。
# sudo reboot
再起動後、ドライバモジュールがロードされているかを確認します。
$ lsmod | grep pt3 pt3_drv 42151 0
値が異なるかもしれませんが、上記のように表示されればOKです。
続いて、PT3のデバイスファイルが作成されていることを確認します。
$ 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
PT3が1枚挿しの場合、デバイスファイルが4つ表示されます。
recpt1コマンド
録画コマンドのrecpt1コマンドをインストールします。Chinachuの場合は通常版、epgrec UNAの場合はhttpサーバ機能追加版をインストールして下さい。
ホームディレクトリにsrcディレクトリを作成し、その下で作業します。
$ mkdir ~/src
通常版
Chinachuの場合、こちらの手順でインストールします。
$ cd ~/src $ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 $ tar xvjf tip.tar.bz2 $ cd pt1-17b4f7b5dccb/recpt1/ $ sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h $ ./autogen.sh $ ./configure --enable-b25 $ make # sudo make install
httpサーバ機能追加版
epgrec UNAの場合、こちらの手順でインストールします。
以下のページにアクセスし、recpt1のパッチファイル(recpt1-http-rev4.tar.gz)をダウンロードします。
recpt1コマンドのソースファイルとパッチファイルの文字コードが食い違っています(UTF-8とEUC)。そのままではパッチ当てに失敗するため、文字コード変換のためにnkfコマンドを事前にインストールします。
# sudo apt-get install nkf
ダウンロードしたパッチファイルは~/srcディレクトリに転送しておきます。
$ cd ~/src $ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 $ tar xvjf tip.tar.bz2 $ tar xvzf recpt1-http-rev4.tar.gz $ nkf -w8 recpt1-http-rev4/recpt1-http.diff > http4.patch $ patch -p2 -d pt1-17b4f7b5dccb/recpt1/ < http4.patch $ cd pt1-17b4f7b5dccb/recpt1/ $ sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h $ ./autogen.sh $ ./configure --enable-b25 $ make # sudo make install
録画テスト
recpt1コマンドで実際に録画出来る事を確認します。
以下は、関東で東京スカイツリーから地デジを受信している場合のNHK総合(27ch)を10秒間録画したコマンド例です。
$ 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 β(ベータ):開発終了