*

録画サーバ構築の前準備(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に挿し替えて調査なんて羽目になるので大変です。

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

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