BCAS用スマートカードリーダーをパススルーする

Proxmox を少しでも認知度上げるために今回は BCAS のICカードリーダーを仮想マシンに接続してみることにします。なお、自分の Proxmox が動いている環境では vt-d をサポートしない状態のため録画環境としては使えません。CPU が vt-d をサポートすれば PT3 などをゲストに接続してみて試してみるのですが、それは Proxmox を使ってやってみよう!という人のために残しておきますね。

CentOS のインストール

Proxmox で CentOS を仮想マシンにインストールします。最低限度のスペックで適当に作成しました。

  • CentOS 6.5 (x64)
  • 512MBメモリ
  • HDD 32GB (VirtIO)
  • Network (VirtIO)

ちなみにベースはこんな感じです。

  • Proxmox 4.0 VE
  • メモリ 8GB
  • HDD 1TB
  • N3150Mマザーボード(BraswellCPU)
  • NTT Com の SCR3310

このスペックだと CentOS はコンソールでインストール作業が進み、Minimal な構成でインストールされます。そこでカードリーダーの処理が出来るまでを設定していこうと思います。
proxmox-centos-bcas-1

proxmox-centos-bcas-2

設定手順 その1

インストール直後ではネットワーク接続して ssh が使えないので、まずはこれらを復旧するところから作業します。

Minimal状態とは言え、SELinux が有効になっているので設定ファイル(/etc/sysconfig/selinux) を書き換えて無効化します。書き換えるのは SELINUX の部分を SELINUX=disabled に変更するだけです。

ネットワークも設定ファイルを変更します。そのまえにサービスを停止しておきます。

# /etc/init.d/network stop
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

ファイルを開いて大体以下のような感じになるようにします。ONBOOT=yes, NM_CONTROLLED=no の部分は忘れないように注意します。UUIDなどデバイス関連は違うものになっているので項目そのものがあるか、で十分です。

DEVICE=eth0
HWADDR=22:16:3E:2A:51:2F
TYPE=Ethernet
UUID=5653b8bd-9d30-471f-b857-51c74d0123456
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

固定IPを割り当てていない場合にはDNSサーバーの設定も必要なので、以下の設定を記述します。

# vi /etc/resolv.conf

// 設定ファイルの中身は各自のDNSサーバー(ブロードバンドルーター)になるかと思います。
// resolv.confの最初に以下の行を記述.
nameserver 192.168.0.1

ここまで設定できたらまず再起動を行います。コマンド reboot が便利でしょう。再起動が完了したら、 ifconfig コマンドを実行してみて、 eth0 が出現するかどうか確認します。ここで eth0 が出現していれば、この後の作業は ssh で接続して作業することができます。しかし、 Proxmox の WebUI からコンソールを簡単に開くことができるため、ssh クライアントの機能を活用しないのであればこのまま Web コンソールで作業しても問題無いかと思います。

まずはよく使うパッケージを yum でインストールしておきます。すぐ使うので usb 関連のツールもインストールします。

# yum install wget gcc gcc-c++
# yum install usbutils

USB ICカードリーダーを仮想マシンに接続

proxmox側で USB のICカードリーダーの接続情報を確認します。詳しくは以前のUSBデバイスのパススルーを参照してください。
ここでは proxmox 側で以下のようにリーダーを認識しているとして話を進めます。

# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 009: ID 04e6:511a SCM Microsystems, Inc.
Bus 001 Device 006: ID 15d9:0a4d Trust International B.V. Optical Mouse
Bus 001 Device 005: ID 0dc6:9813 Precision Squared Technology Corp.
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB

デバイスは Bus 001 Device 009 のものが該当し、ベンダーID、プロダクトIDは 04e6:511a であることがわかりました。

これを仮想マシンに接続します。
Proxmox の WebUI から、この仮想マシンの Monitor タブを開いて以下のコマンドを入力します。

device_add usb-host,vendorid=0x04e6,productid=0x511a

proxmox-centos-bcas-3
再び、仮想マシン側の作業します。上記で設定した USB デバイスのパススルーがうまく効いているか確認します。
仮想マシンの中から lsusb を実行してみて、該当のデバイスが出現するかを見ます。

# lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 003: ID 0409:55aa NEC Corp. Hub
Bus 001 Device 004: ID 04e6:511a SCM Microsystems, Inc.

うまくデバイスのパススルーが出来てるとこのように列挙されると思います。

設定手順 その2

ここからはカードリーダーに関係する部分を重点的に説明していきます。全てを設定してしまって問題無い状態を紹介してもよいのですが、エラーメッセージに出遭った方が躓いている人の助けになるかと思い、若干作業が長めになっています。ご了承下さい。

まずはスマートカードリーダー関連のパッケージをインストールします。

# yum install pcsc-lite pcsc-lite-devel pcsc-lite-libs perl-ExtUtils-MakeMaker

他にもツールが必要なので続いてダウンロードしてそれぞれインストールを行います。

# cd /usr/local/src
# wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.13.tar.bz2
# tar xjf pcsc-perl-1.4.13.tar.bz2
# cd pcsc-perl-1.4.13
# perl Makefile.PL
# make 
# make install

続いて作業します。

# cd /usr/local/src
# wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.24.tar.gz
# tar xzf pcsc-tools-1.4.24.tar.gz
# cd pcsc-tools-1.4.24
# make
# make install

これで pcsc_scan が使えるようになっているはずです。もし使えないようであれば、一度再起動してみてください。pcsc_scan を実行してみるとどうなるでしょうか。

# pcsc_scan
PC/SC device scanner
V 1.4.24 (c) 2001-2011, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.5.2
SCardEstablishContext: Service not available.

このようにエラーが出てしまった場合には、メッセージのとおりサービスが起動していません。pcscd が起動していないためなのでこれを起動するようにしましょう。また次回からも自動起動してほしいので設定をしておきます。

# /etc/init.d/pcscd start
PC/SC スマートカードデーモン (pcscd) を起動中:         [  OK  ]
# chkconfig --level 35 pcscd on
# chkconfig --list

pcscd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

これで pcscd が起動したので再び pcsc_scan を実行してみます。しかしながら以下のようになってしまいました。

PC/SC device scanner
V 1.4.24 (c) 2001-2011, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.5.2
SCardEstablishContext: Service not available.

サービスは起動したはずなので確認してみると以下のようになっていました。

# /etc/init.d/pcscd status
pcscd は停止していますがサブシステムがロックされています

まだ pcscd に足りていない部分があったということです。ここで /var/log/message を確認してみると以下のようなエラーが出ていることがわかります。(実際には1行で出てます)

pcscd: hotplug_libhal.c:514:HPRegisterForHotplugEvents() error: 
dbus_bus_get: org.freedesktop.DBus.Error.FileNotFound:
 Failed to connect to socket /var/run/dbus/system_bus_socket:
 No such file or directory

これは messagebus が動いていないことを示しています。pcscd 同様に起動&次回以降の自動起動を設定しておきます。
そして再び pcscd を起動させて pcsc_scan をやってみます。

# /etc/init.d/messagebus start
# chkconfig --level 35 messagebus on
# /etc/init.d/pcscd start

・・・でも実際はどうでしょうか。これでもまださっきと同じエラーが出たと思います。ログに出てくるエラーメッセージはどうなったかを確認してみると、以下のようになっていました。

hotplug_libhal.c:539:HPRegisterForHotplugEvents() Could not initialise connection to hald.

これは haldaemon が起動していないことを示しています。今までの流れ同様これも起動するように設定しておきます。

# /etc/init.d/haldaemon start
# chkconfig --level 35 haldaemon on
# /etc/init.d/pcscd start

これで pcsc_scan を実行します。すると以下のようになりました。先ほどと違って動いているような感じです。

# pcsc_scan
PC/SC device scanner
V 1.4.24 (c) 2001-2011, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.5.2
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader...

しかしこれではまだ足りていないのです。本来なら情報がきちんととれるはずなので。またエラーメッセージを確認してみても、特にエラーらしきものが表示されません。
 実はパッケージがまだ足りていませんでした。以下のようにしてパッケージを追加して下さい.

# yum install ccid

この後でサービスを再起動して pcsc_scan を実行すると以下のような感じになると思います。

# /etc/init.d/pcscd restart
# pcsc_scan
PC/SC device scanner
V 1.4.24 (c) 2001-2011, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.5.2
Using reader plug'n play mechanism
Scanning present readers...
0: SCM SCR 3310 NTTCom (01234567890123) 00 00

Reader 0: SCM SCR 3310 NTTCom (12345678901234) 00 00
  Card state: Card inserted,
  ATR: AB CD EF 01 02 03 04 05 06 07 08 09 0A
(以下省略)

表示上に Japanese Chijou Digital B-CAS Card が出現してくれば動いていると言えると思います。

結構手間をかけましたが、最初から一発でやろうとすれば以下のようなコマンド&手順になるかと思います。

# yum install pcsc-lite pcsc-lite-devel pcsc-lite-libs perl-ExtUtils-MakeMaker ccid
# // pcsc-perl, pcsc-tools のインストール
# // haldaemon, messagebus,pcscd の順でサービスの起動、自動起動の設定
# pcsc_scan で実行確認

まとめ&これから

カードリーダーはこれで使うことが出来るようになったと思うので、あとは各自の環境に合わせて設定すれば使えるシロモノになるかと思います。
 VT-d をサポートする環境であれば、この構築した環境に PT3 などのデバイスを接続するのも1つの手でしょう。そのためには Proxmox の VT-d 設定をする必要がありますが、 Proxmox は vt-d も対応していると公式 Web に記載があります。
 また最近では BonCasLink のサーバープログラムが Linux 版のようなものがあると聞きました。これを利用すれば他の録画環境からも使用することが出来ると思います。

proxmox 録画環境
すらりんをフォローする
すらりん日記

コメント

タイトルとURLをコピーしました