« SSLの証明書を作成する | トップページ | Linuxに接続されたスキャナをWindowsから使う »

2006/11/04

SCSIのPCIカードをLinuxで使う

前回、SCSIのPCIカードを買ってきて、Windows98で動作確認した所まで書きました。

さて、いよいよ本番です。
Windowsで使えても意味なし!Linuxで動いてこそ本物!!

今回の環境
OS VineLinux3.1
マザーボード ASUS TUSL2-C-WOA
SCSI アダプタ Adaptec AHA-2940J


今のLinuxはハードの自動認識が優れているし、ましてやAdaptecのSCSIアダプタなんだから認識しないはずは無いし、楽勝だね。

Linuxを起動すると、PCIにSCSIカードが刺さっているのは認識したようですが、ここでkudzuの画面が開いてしまいました。
へ?何?なんか30秒からカウントされてます。しかも書いてあるのは英語。
げ!?なんて書いてあるんだ?うわ、時間が無い。とりあえずこれだ!
と、よくわからんまま「configure」とか書いてある所を選択したような・・・。

起動後、
$ /sbin/lsmod
とコマンドを打ち、読み込まれたモジュールを表示してみましたが、SCSIに関係があるのはUSB関係のモジュールのみで、SCSIアダプタが見つかりません。

ま、@ITのLinux Tipsに「SCSI接続のスキャナを使うには」という記事があるのもチェック済みだしなんとかなるさ。
で、その記事を読んだところ、いきなり、ドライバのインストールの必要があり、「使用しているSCSIホストアダプタに対応したドライバがハードディスク上にあるかどうかを確認する。」と書いてある。

・・・で、このSCSI用のドライバはなんて名前なんだ???
とりあえずAHAのシリーズだし、これで検索すればOKかな?
$ locate aha
その結果は
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aha152x.o
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aha1542.o
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aha1740.o
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/pcmcia/aha152x_cs.o
/lib/modules/2.4.27-0vl7/pcmcia/aha152x_cs.o

・・・なに!? aha1xxx あたりのドライバしか無い!
古いドライバが無いのは解るけれども、逆に新しいドライバが無いのです。
新しいドライバといっても、Windows95時代のドライバですよ?

Linux SCSI HOWTOで調べても、ドライバ名は aha274x となっています。


そんな折、Linux&FreeBSD ハードウェア設定というページのSCSIカードをあとから増設 という記事に、ヒントが載っていました。
その方が使用されているSCSIアダプタが AHA-2940U で、使用しているドライバが aic7xxx というものだったのです。
オレのSCSIが AHA-2940J だから、近いことには間違いありません。
しかも、その記事には、ドライバモジュール名が何か調べる方法が書かれていたのです。
その方法は、なんとLinuxのインストールCDでブートし、その際に認識されたドライバを表示する、というすごいものでした。(笑)

そこで、古い方がいいだろうと思い、昔使ったVineLinux2.5のインストールディスク(オレのLinux生活が始まった記念すべきCD)を引っ張り出し、起動してみました。
boot: プロンプトで text と入力し、テキストインストールにします。
その後「Alt」+「F2」でコンソールを切り替えて、lsmod と入力すると、案の定 aha7xxx が読み込まれていました。
やっぱりこのSCSIアダプタのドライバは、aha7xxx だったんです。

ちなみに、その後見つけたLinux Module-HOWTOには、しっかり aha7xxx.o と載っていました。

$ locate aic
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aic7xxx
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aic7xxx/aic79xx.o
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aic7xxx/aic7xxx.o
/lib/modules/2.4.27-0vl7/kernel/drivers/scsi/aic7xxx_old.o

ありました!

で、rootで、
# modprobe aic7xxx
と入力した所、モジュールが読み込まれました。

が・・・。
# dmesg
とコマンドを打って確認しても、スキャナが見えないのです。
なんでだ?SCSIを認識してないのか?
よくわからん・・・。
とりあえず先へ進もう・・・。
(後で判ったのですが、モジュール読み込み後は、スキャナを認識しないみたいですね。XSaneが起動できれば、ちゃっかり認識してます。)


アプリケーション→システム・ツール→Synapticパッケージマネージャ を起動し、
@ITで載ってたように、以下の4つをインストールしました。
sane
sane-clients
sane-devel
xsane
依存関係で、
libusb
gphoto2
もインストールされました。

でも、
# sane-find-scanner
とコマンドを入力してもスキャナを認識できません。
ネットで調べると、古いSCSIアダプタは古いドライバの方が相性がいいことがあります、みたいな記事を発見。
# rmmod aic7xxx
と、さっき組み込んだモジュールをアンインストールして、
# modprobe aic7xxx_old
と古いモジュールを組み込んだ所、
# sane-find-scanner
found SCSI scanner "CANON IX-4025 1.09" at /dev/sg0
found SCSI scanner "CANON IX-4025 1.09" at /dev/sga
って表示されました。
(でも、後日、aic7xxx で再度試した所、問題なく読み込めたんですよ。)

よっしゃ~!スキャナが見えた!
一般ユーザーでも使用できるように、読み書き可能にしておきます。
# chmod 666 /dev/sg0

続いて、
$ scanimage -L
と入力した所、

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

と出ました。

なに~!?スキャナが使えない?
そんなバカな!

やはり IX-4025 は古すぎて、SANEではサポートしていないのでしょうか?
いろいろ調べていたら、うんずぐみ at @niftyの「イメージスキャナ」という記事を発見しました。
この方、なんと IX-4025 を SANE で使っていらっしゃいます!
なんと心強い!
記事によると、SANEでは IX-4025 をサポートしていないけれども、Canonドライバでそのまま動く、とのことです。

う~ん、なんでオレのスキャナは認識してくれないんだろう?
SANEのバージョンが変わって、サポートされなくなったのかなあ。
でも、/etc/sane.d/ に ちゃんと canon.conf もあるしなあ。

とりあえず、
Please read the documentation which came with this software (README, FAQ, manpages).
と出ているし、READMEでも読んでみるかと思い、読んでみました。(もちろん英語。(T_T))

/usr/share/doc/sane-1.0.15/README.linux
をず~~~~~っと読んでいくと、
# sane-find-scanner
found SCSI scanner "SCANNER 2.02" at /dev/scanner
found SCSI scanner "SCANNER 2.02" at /dev/sg0
found SCSI scanner "SCANNER 2.02" at /dev/sga

It may help to set a symbolic link /dev/scanner to the respective device if
automatic detection does not work.

って書いてある。
なに?/dev/scanner が自動で作られなかった時は、作ってあげてくださいだって?
これかぁ!

すぐさま、
# ln -s /dev/sg0 /dev/scanner
として作成した所、

$ sane-find-scanner
found SCSI scanner "CANON IX-4025 1.09" at /dev/scanner
found SCSI scanner "CANON IX-4025 1.09" at /dev/sg0
found SCSI scanner "CANON IX-4025 1.09" at /dev/sga

$ scanimage -L
device `canon:/dev/scanner' is a CANON IX-4025 flatbed scanner

やったー認識した!

アプリケーション→グラフィックス→XSane を起動した所、ちゃんと起動しました~。(TvT)


で、今はドライバの読み込みを
$ modprobe aic7xxx
と手動でロードしていますが、そんなのLinuxは起動と終了しかできない嫁さんが許してくれる訳がありません。
なんとか自動で読み込ませないと・・・。

ドライバの読み込みは、@IT Linux Tips の 「システム起動時にSCSIを有効にするには」という記事に載っていました。
で、/etc/modules.conf に
alias scsi_hostadapter aic7xxx
と書こうと思ったら、既にかいてありました。
やっぱりkudzuは認識してたんだね・・・。
あと、記事に載っているように mkinitrd とかやってみたのですが、モジュールを起動時に読み込んでくれませんでした。

う~ん何故だかわからん。カーネルの再構築とかが必要なのかな。
たかが自動読み込みのためだけに、カーネル再構築なんて気にもならず、結局 /etc/rc.local に
modprobe aci7xxx
と書き込んで、起動時の最後に読み込むようにしました。なんかぶさいく。


ここまでで、3日ほど経ってます。(T_T)
疲れた~。

ちなみに、今回のまとめです。
lsmod ・・・現在読み込んでいるモジュールの一覧が表示されます
modprobe モジュール名 ・・・指定したモジュールを読み込みます
rmmod モジュール名 ・・・使用されていない、指定したモジュールを削除します

/etc/modules.conf ・・・モジュールの読み込みの設定が書いてあります

sane-find-scanner
scanimage -L
SANEがスキャナを認識できているかチェックできます


そう言えば情報をWebで検索していた時に、どこの資料か忘れたけど、
モジュールを削除して、スキャナの電源を入れて、モジュールを読み込めばスキャナが認識する、
というようなことが書いてあり、試したらできました。
さすがLinux これは便利。
ちなみに、その文章を書いた人も、よく起動時にスキャナの電源を入れ忘れていたそうです。
オープンソースのそういう所が大好きです。

|

« SSLの証明書を作成する | トップページ | Linuxに接続されたスキャナをWindowsから使う »

VineLinux」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: SCSIのPCIカードをLinuxで使う:

« SSLの証明書を作成する | トップページ | Linuxに接続されたスキャナをWindowsから使う »