パラレル Zip ドライブを Linux で使う.


ひさしぶりにカーネルをコンパイルしたら, その後 pcmcia-cs がコンパイラ通らなくなっ たりしてむちゃくちゃ焦った. これは pcmcia-cs のソースにちょっと手を入れ たらコンパイラは通った. 一応ちゃんと動いているようだが, 何だかなあ.

カーネルをコンパイルしたのは, パラレルポートに接続するタイプの Zip ドラ イブというのを, 安く同僚から譲り受けたので, それを使うためだ. なんせ, ずっとバックアップ取ってなかったのだ. 有力な法則 「そこにしか無いファイルは, 必要になった時に壊れる」 というのがあるからな. いつまでも幸運が続くわけではない. しかしパラレルポートに接続するといっても, パラレルポートは キャラクタデバイス だから, マウントできねー! と思って, 最初はお先真っ暗だったのです が, 詳しい友達に訊いたら, 「なんか, カーネルのオプションの中にそんなのが あったぞ」というから, ちょっと探してみたら, ありました. カーネルの Documentation/Configure.htlp から, そこんところを和訳.

IOMEGA Parallel Port ZIP drive SCSI support
CONFIG_SCSI_PPA
このドライバは, パラレルポートに接続する IOMEGA の ZIP ドライブ (100MB のリムーバブルメディアです)のためのものです. このドライバと, その使い方に関する詳細な情報は, カーネルソースツリーの drivers/scsi/README.ppa にあります. また, sunsite から ftp できる文書, SCSI-HOWTO も読んで下さい. このドライバは, モジュールとしてコンパイルできます. つまり, 必要な場合だ け, 実行中のカーネルにロードしたり外したりできるわけです. パラレルポートに接続するタイプの ZIP ドライブか, あるいは ラインプリンタ とか パラレル IP を一つのパラレルポートで使い分けたい場合は, それぞれの ドライバをモジュールとしてコンパイルし, ドライバも必要に応じて使い分けな ければいけません. このドライバをモジュールとしてコンパイルするためには, この項で M と答え て下さい. また, モジュールに関しては, カーネルソースツリーの Documentation/Modules.txt を見て下さい. SCSI 接続の ZIP しか使わないの ならば, N で良いでしょう. SCSI disk support を使うことにしたのであれば, SCSI の ZIP のサポートは含まれています.

というわけで, もろそれ用のドライバがあるわけだ. また, パラレルプリンタと共存は できない. さらに, mini-howto に ZIP-Drive というドキュメントがある. これを見ると,

SCSI support?
CONFIG_SCSI

 SCSI generic support
CONFIG_CHR_DEV_SG
も y (あるいはm)にしないと駄目だ. 実際, modprobe で parallel Zip ドライ バをロードすると, 勝手に sd_mod もロードされる. また, sd_mod がロードさ れるためには, SCSI support が無いと駄目.

さて, これら 3つの項目を y あるいは m にしてカーネルをコンパイルすると, Zip 用のドライバができる. コマンドは, おなじみの

make dep ; make clean ; make zlilo ; make modules  ; make modules_install
だ. 私のマシンはノートパソコンなので, cpu も非力 だしメモリも無尽蔵にあるわけではない(そのわりには httpd が動いてたりして) . 一方 Zip なんて, そうそう使うデバ イスではないので, こんなのは当然 "m" ですな. どうせパラレルポートは 1個 しかないので, lp との共用を考えても ここはモジュールが当然の判断でしょ う. モジュールにした場合は, ドライバが /lib/modules/"version number"/scsi/ 以下にインストールされる. ppa.o が, ちゃんとあるかな?

コンパイルが終ったら, 再起動.

"m" にせずに, "y" にした人は, ドライブを接続して, メディアも入れた状態 で再起動した方が良いようだ. わしは "m" にした. "m" にし た場合は, モジュールをロードする時に, ドライブをちゃんと接続してからやら ないと, ロードできないので注意. モジュールにした場合は, ドライブをパラレ ルの口に繋いだら, root になって

modprobe ppa
 
その前に, lsmod してみると良いかも. lp が入ってたら, modprobe ppa す る前に,
rmmod lp
で, どけとこう. モジュールのロードは, うまく行くと何の返事も無い. 駄目な 時は, "cannot initialize hogehoge" みたいなメッセージが出る.

モジュールがロードされたり, デバイスがカーネルに認識されたら,

/dev/sda?
でアクセスできる. あとは tar で生書きするもよし, ファイルシステム作るの もよし. ただし, でかいファイルを扱うと, デフォルトのままでは並じゃなく遅い. 100Mbyte フルに使ってバックアップ取ったら, 30分かかった. モジュールのソースコードには, ウェイトを減らせばスピードアップ出来ますと か書いてあるので, ケーブルが短い人とかは, やってみると良いかも. insmod する時に, ある程度引数で指定する事もできる. これら詳細な情報に 関しては, カーネルソースツリーの drivers/scsi/README.ppa を見ると載って る. デフォルトではスピードは, ひと昔まえの cdrom くらいなのかな.

美術部関係で zip 使ってる人は居ないので, なんかあんまりメリット無いんで すが, ヨドバシカメラのデジタルプリントサービスは, zip によるデータの受 渡しが出来るので, そのうち超巨大な画像も出力してみたりして.

そうそう. とにかく容量の割には遅いので, 私の考える所では, ファイルシステ ムを作って, ファイル毎にバックアップを取るというのが良いような. その場合 は, ファイル名とかがめんどくさいこと限りないので, ファイルシステムには ext2 が良いような.

うまく行ったら, /dev/sda の permission とか group を設定したり, あるいは /etc/fstab を書いたりして, 使いやすくしよう.