2011/03/20

CentOS5がBCASカードを認識しなかったのをなんとかした。

PT2のドライバが作成できたので、次はBCASカードを認識させる。

BCASカードが認識しているのかを確認するために pcsc-tools に入っている pcsc_scan コマンドを使ってみる。

# pcsc_scan 
PC/SC device scanner
V 1.4.10 (c) 2001-2007, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.3.3
Scanning present readers
Waiting for the first reader...

カードリーダーが認識していない?

今回使っているカードリーダーはPT2を買った時に一緒に買ったCI691(AA)というカードリーダー。
PT2の設定情報では、よくNTT製のがつかわれているため、この辺りに原因が潜んでいそう。

調べてみたところ、pcscd はカードリーダーのデバイスIDなどをチェックするとのこと。
ということは、どこかにある設定ファイルにデバイスIDなどを追加するだけでよさそう。

まず、追加する必要のある設定を確認する。
カードリーダー側の情報はlsusbコマンドで確認できる。

# lsusb
Bus 004 Device 001: ID 0000:0000  
Bus 004 Device 002: ID 0bda:0165 Realtek Semiconductor Corp. 
Bus 002 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000  
Bus 005 Device 001: ID 0000:0000  
Bus 006 Device 001: ID 0000:0000  
Bus 007 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 003 Device 003: ID 1130:9177 Tenx Technology, Inc. 
Bus 003 Device 002: ID 045e:0024 Microsoft Corp. Trackball Explorer

分かりづらいけれど上から2行目のRealtek〜がCI691。

CI691のベンダーIDが0bdaでプロダクトIDが0165らしい。

この情報をどこかに追加したらよさそう。というわけで調べてみると、CentOSでは/usr/lib64/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plistに追加するといけるらしい。
※64bit版の場合。32bit版だと/usr/lib/pcsc・・・になるかと。

<key>ifdVendorID</key>
        <array>
                <string>0x08E6</string>
                <string>0x08E6</string>
                  :
                <string>0x0bda</string> <-追加
        </array>

        <key>ifdProductID</key>
        <array>
                <string>0x2202</string>
                  :
               <string>0x0165</string> <-追加
        </array>

        <key>ifdFriendlyName</key>
        <array>
                <string>Gemplus Gem e-Seal Pro</string>
                  :
                <string>CI691</string> <-追加
        </array>

こんな感じ。
追加したら pcscd を再起動させて、pcsc_scan コマンドで認識しているかを確認する。

# pcsc_scan 
PC/SC device scanner
V 1.4.10 (c) 2001-2007, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.3.3
Scanning present readers
0: CI691 (20070818000000000) 00 00

Sun Mar 20 01:57:34 2011
 Reader 0: CI691 (20070818000000000) 00 00
 :
 :

2011/03/19

CentOS5にPT2をインストールしてみた。

PT2が発売されてからかなりの時間が経過しているので、CentOS環境にインストールした情報も多くあり、基本的には詰まったりしないはずですがmakeした時にエラーがでてしまった。

# make
revh=`hg parents --template '#define DRV_VERSION "r{rev}:{node|short}"\n#define DRV_RELDATE "{date|shortdate}"\n' 2>/dev/null`; \
 if [ -n "$revh" ] ; then \
  echo "$revh" > version.h; \
 else \
  printf "#define DRV_VERSION \""1.1.0"\"\n#define DRV_RELDATE \""2010-01-27"\"\n" > version.h; \
 fi
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make: *** /lib/modules/2.6.18-194.32.1.el5/build: そのようなファイルやディレクトリはありません.  中止.
make: *** [pt1_drv.ko] エラー 2

/lib/modules/`uname -r`/build/ 配下が存在しないとのことです。
単純に kernel-devel パッケージがインストールされていませんでした。
というわけで yum install kernel を実行してから再度 make を実行。

今度はうまくいきましたとさ。

ドライバのダウンロードも含めて、以下の手順で実行。

# mkdir -p /usr/local/src/pt2
# cd /usr/local/src/pt2/
# hg clone http://hg.honeyplanet.jp/pt1/ pt2
requesting all changes
adding changesets
adding manifests
adding file changes
added 120 changesets with 308 changes to 115 files
updating working directory
31 files updated, 0 files merged, 0 files removed, 0 files unresolved
# cd pt2/driver
# make
# make install
# insmod /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko
# ls -l /dev/pt1*
crw-rw-rw- 1 root root 253, 0  3月 19 22:38 /dev/pt1video0
crw-rw-rw- 1 root root 253, 1  3月 19 22:38 /dev/pt1video1
crw-rw-rw- 1 root root 253, 2  3月 19 22:38 /dev/pt1video2
crw-rw-rw- 1 root root 253, 3  3月 19 22:38 /dev/pt1video3

手順中に出てくる hg コマンドは mercurial パッケージに入っているけれど、デフォルトのリポジトリには存在しないので yum ではインストールできない。

調べたところ、fedora 向けに公開されているパッケージが使えるということなので、ここからダウンロードして手動でインストール。

mkfsができない?

ようやくサーバのセットアップを始めたと思ったらファイルシステムが作成できない状況に遭遇。

# mkfs /dev/sda1
mke2fs 1.39 (29-May-2006)
/dev/sda1 is apparently in use by the system; will not make a filesystem here!
# mkfs /dev/sdb1
mke2fs 1.39 (29-May-2006)
/dev/sdb1 is apparently in use by the system; will not make a filesystem here!
# mkfs /dev/sdc1
mke2fs 1.39 (29-May-2006)
/dev/sdc1 is apparently in use by the system; will not make a filesystem here!

システムが使用しているとのことだけど、心当たりはなし。
lsofやfuserを実行しても使用している形跡はないし、何が原因だろうと調べたら。

# vgdisplay -v
--- Physical volumes ---
PV Name               /dev/sda
:
PV Name               /dev/sdc
:
PV Name               /dev/sdb

前回テストしたLVMの情報消し忘れでしたとさ。