LinuxでSoftCasは使用できるのか? ~CentOS 7編~
Pocket

さて、この12月でCentOS 7がリリースされて半年ほどが経過した。自宅で録画サーバを新しく構築する人も、CentOS 7での構築を検討する頃合いではないだろうか。
そんなわけで、今回はCentOS 7でSoftcasを利用できるか試してみることにした。環境は以下。

  • OS:CentOS 7 Minimal Install
  • 録画チューナー:PT2(余ってた)
  • CPU:Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
  • メモリ:4GB

基本的に、作業はrootユーザで行っていく。
それでは、検証を進めてみよう。

1.最低限の設定を行う

まずは、最低限IPアドレスとホスト名を設定する。
IPアドレスについてはこちら、ホスト名についてはこちらに設定方法を記述してある。

IPアドレス、ホスト名の設定後、SELinuxを無効にする

# setenforce 0
# sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config

設定完了後、yum updateを行う。

# yum update

2.LAMP環境のインストール

次に、LAMP環境をインストールする。
(正直、Softcasの検証だけなら箇所はあまり必要ではない。epgrecなどの導入時用に記述しているだけだ。)

# yum groupinstall -y 'Basic Web Server' 'Perl Support' 'PHP Support' 'MariaDB Database Client' 'MariaDB Database Server' 'Development tools'

上記インストール完了後、ファイアウォールの設定を変更しhttpアクセスを可能にする。

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload
Sponsored Links

3.b25&PT2ドライバ&recpt1のインストール

PT2のドライバをインストールするため、必要となるパッケージをインストールする。

# yum install -y ccid gcc-c++ perl-Gtk2 yum-priorities kernel-devel autoconf automake
# yum install -y pcsc-lite pcsc-lite-devel  pcsc-lite-libs

パッケージインストール後、復号ツールであるb25をダウンロード、解凍してインストールする。

# wget https://github.com/stz2012/libarib25/archive/master.zip
# unzip master.zip
# cd libarib25-master/src/
# make
# sudo make install

次に、PT2ドライバのインストールを行う。

# cd
# echo "blacklist earth-pt1" > /etc/modprobe.d/blacklist.conf
# wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
# tar -xvlf tip.tar.bz2
# cd pt1-c8688d7d6382/driver/
# make
# make install
# modprobe pt1_drv
# reboot

なお、make時に以下のようなエラーが出る場合がある。

[root@test-centos7 driver]# make
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make: *** /lib/modules/3.10.0-123.el7.x86_64/build: そのようなファイルやディレクトリはありません.  中止.
make: *** [pt1_drv.ko] エラー 2

これは、/libフォルダに配置されているシンボリックリンクのリンク先が存在しないフォルダを参照しているために起きている現象だ。
以下のコマンドなどで、存在しているフォルダを参照させる。

# ln -s /usr/src/kernels/3.10.0-123.13.2.el7.x86_64 /lib/modules/3.10.0-123.el7.x86_64/build

再起動後、CentOS 7でPT2を認識している事を確認する。

[root@test-centos7 driver]# lspci | grep Multi
04:02.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
[root@test-centos7 driver]#
[root@test-centos7 driver]# lsmod | grep pt1
pt1_drv                40850  0
[root@test-centos7 driver]#
[root@test-centos7 driver]# ls -la /dev | grep pt1
crw-rw-rw-   1 root video   247,   0 12月 23 17:47 pt1video0
crw-rw-rw-   1 root video   247,   1 12月 23 17:47 pt1video1
crw-rw-rw-   1 root video   247,   2 12月 23 17:47 pt1video2
crw-rw-rw-   1 root video   247,   3 12月 23 17:47 pt1video3

20141223_000000

 

次に、recpt1のインストールを行う。
以下のコマンドを実行する。

# cd pt1-c8688d7d6382/recpt1
# ./autogen.sh
# ./configure -enable-b25
# make
# make install
# echo "/usr/local/lib" > /etc/ld.so.conf.d/recpt1.conf 
# ldconfig

4.Softcasのインストール

さて、今回の検証の本番、Softcasのインストールを行う。
以下のコマンドで、softcasをダウンロード、解凍する。

# wget http://www.wazoku.net/softcas.zip
# unzip softcas.zip
# cd softcas
# wget -O winscard.cpp http://pastebin.com/download.php?i=5144Ah9g
# wget -O Makefile http://pastebin.com/download.php?i=FQdSixkB

次に、ライブラリが変更されたため、winscard.cppの一部を書き換える必要がある。
以下のコマンドでソースの書き換えを行う。

# sed -i "/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g" winscard.cpp
# sed -i "s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g" winscard.cpp

ソースの書き換え後、makeを行う。

# make

make後、「libpcsclite.so.1.0.0」というファイルが作成されているので、「/usr/lib64」に移動する。

# cp libpcsclite.so.1.0.0 /usr/lib64/

これで、Softcasを利用する準備が整った。

5.テストの実施

実際に利用出来るか、以下のコマンドでテストする。

# recpt1 --strip -b25 27 10 test.ts

テストの結果、無事に再生することが出来た。
CentOS 7でも問題無く利用出来そうだ。

…というか、同じやり方をすればUbuntuでも利用出来るように思う。
後ほど対応してみようかな。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 3 comments

  1. Leroy Gibbs Reply

    以下のところで躓いてしまいます。どうやればよいのでしょうか?

    [root@localhost softcas]# sed -i “/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g” winscard.cpp
    [root@localhost softcas]# sed -i “s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g” winscard.cpp
    [root@localhost softcas]# make
    Makefile:1: *** ターゲットパターンが `%’ を含んでいません. 中止.

  2. Leroy Gibbs Reply

    ありがとうございます。無事に切り抜けることが出来ました。

Leave a Comment

メールアドレスが公開されることはありません。