-
■なんかスキャナが使えるらしいぞ
- SANE(Scanner Access Now Easy) というプロジェクトは,PC 用として出回っているスキャナを UNIX から使おうってやつです.こいつはスキャナを操作するインタフェース(Backend)がデバイスごとに書かれていて,Backend で共通の API 提供し,それを使ってアプリケーション(Frontend)が組めるようになっているものです.TWAIN では1つにまとまっているんですが,Backend を分離しているところが特徴です.
web で動作一覧を見ると家で腐っている EPSON の GT-7000 も動いているようです.せっかくなので SUN(SPARCstaion20/Solaris2.6) で動かしてあげることにしました.
-
■必要なもの
- スキャナを使うためには先ほどの SANE と,Solaris では標準の SCSI ドライバではスキャナを扱えないようなんで,汎用 SCSI ドライバを組み込む必要があります.といっても loadable module を組み込むだけなので楽ちんです.このドライバは Solaris2.3以降のようですが,Solaris 7は別のものがありました(64bit版?).
- 汎用 SCSI ドライバ
- ftp://ftp.fokus.gmd.de/pub/unix/kernel/scg/SCHILYscg.sparc.tar.Z
- SANEのソース
- http://www.mostang.com/sane
あと,GUI のスキャンプログラムが gtk を使うみたいです.1.0ベースのものが無難だと思います(1.2 でちゃんと動くかはためしてません)
-
■SCSI ドライバ(scg)の組み込み
- この作業は,必ず SANE のインストールの前に行ってください.SCSI のドライバを選んでコンパイルするので,scg ドライバが組み込んでいない場合は標準の SCSI ドライバを使ってしまうみたいです
パッケージになっているので pkgadd を使います
% gzip -dc SCHILYscg.sparc.tar.Z | tar xvf -
# pkgadd -d .
あとは,pkgadd と対話しながらやっていきます.reboot してもいい状況ならシャットダウンして,boot -r で re-config するのがお手軽です.わざわざ,止めなくてもドライバモジュールをロードすることもできますが..
ブート後,/dev/scgN (NはSCSIアダプタに対応する.1つ目のSCSIアダプタだったら0) にができていることを確認してください.このデバイスノードは SCSI アダプタに相当するもので,ここのデバイスにアクセスするときは SCSI ID を アルファベットの順で置き換えたものが実際のデバイスになるようです.たとえば SCSI ID が 1 のときは scg0a,5だったら scg0e のようになります(ただし /dev にはそういったノードは作られません).
-
■SANE のインストール
- scg ドライバが組み込まれたら,SANE をインストールします.
% gzip -dc sane-1.0.1.tar.gz | tar xvf -
% cd sane-1.0.1
% ./configure --prefix=/opt/sane --with-gtk-prefix=/usr/local --with-gtk-exec-prefix=/usr/local
% make
# make install
どうせスキャナを使うのはローカルのマシンだけだろうとおもってインストール先 /opt/sane にしました.あと gtk が必要みたいですが,バージョンを 0.9なんとかを調べていて,1.2 を使うとやっかいかと思ったので 1.0.6 をリンクするようにしています.
コンパイルは特に問題は起きませんでした.あと,GNU make の 3.7 以上をつかってくださいとのことです.
-
■動作確認
- インストールする前に,ちゃんとスキャナが見えているか確認できます.
ソースツリーを展開したすぐしたに tools というディレクトリがあります.このなかにある find_scanner を(rootから)実行してみます.
# ./find-scanner
find-scanner: found processor "EPSON SCANNER GT-7000 1.09" at device /dev/scg0f
#
こんな感じで /dev/scg0f (1番目のホストアダプタに SCSI ID 5 でつながっている)スキャナが検出されているようです.
-
■パーミッションは..
- パーミッションをどうするか悩みました.スキャンするプログラム scanimage などは /dev/scg0 への read/write が許可されている必要がありますが,setuid で root の s フラグを立てると保存したファイルが root の所有になるので困ります.とくに gtk を使ったヤツではファイル選択のダイアログで 「削除」もできてしまうので最悪です.
かといって root 以外に /dev/scg0 への read/write のアクセス権を持たせるのはもっと困ります.だれでも使えるようにしたかったので kitalab グループに read/write を許して,スキャンするコマンドに setgid して使ってます...危険度は変わってないのでなんとかせんと.