grant@torque.net
ynakai@akashi.ac.jp
注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)
Iomega ZIP ドライブはポピュラーで、低価格で、性能はあまり良くありませんが、 ポータブルなリムーバブルディスクドライブです。ディスクの容量は 96MB で、 SCSI バージョンとパラレルポートバージョンの 2 種類があります。パラレルポート バージョンでも Iomega の独自の SCSI-over-parallel プロトコルにより SCSI デバイスとして使用できます。
このドキュメントでは Linux でどのように ZIP ドライブを使用するかを述べて います。ZIP ドライブは SCSI デバイスなので SCSI-HOWTO も読むことが重要です。 SCSI-HOWTO では SCSI システムに関して詳しく説明してあります。しかし、ZIP ドライブや、ZIP Zoom SCSI アダプタあるいは PPA-3 parallel-to-SCSI アダプタ に関する固有の情報は含んでいません。この mini-HOWTO はこれらのギャップ を埋めることを目的にしています。
このドキュメントは色々な人、特に以下の人達、が集めて提供している情報を まとめたものです。
彼らの重要な寄与と私が持ち込んだミスを許してくれることに感謝します。
Iomega ZIP 100 ドライブには 3 種類あります。それらでは 3.5" フロッピー ディスクに似た 100MB の容量の特別なカートリッジを使用します。このディスクは 2048 セクタ、96 シリンダで各セクタは 512 バイトになっています。従って、普通 96MB であると言われています。
1 種類は SCSI インターフェースの内蔵型 5.25" ハーフハイトのもので、あとの 2 種類は青い軽量のプラスチック容器に入った外付けドライブです。電源は外部 アダプタで提供されます。外付けドライブは SCSI バージョンとパラレルポート バージョンがあります。
すべてのドライブには前面に大きな押しボタンが付いています。これはディス クをイジェクトするのに使います。Linux はドライブを使用している間はドア をロックしますが、ドアがロックされている時にボタンが押されると ZIP ドライブはソフトウエアがロックを解除すると記憶してディスクをイジェクトします。
ZIP ドライブの外付けバージョンには 2 つの DB25F コネクタと 2 つの設定用 スイッチがあります。1 つのスイッチはドライブのターゲットアドレス (訳者注: SCSI ID と思われます) を選択するのに使用します。これは 5 か 6 に限定されています。 もう一つのスイッチはドライブがチェインの最後の場合に、内部ターミネータ を有効にするのに使用します。25 ピンの SCSI コネクタはよくあるマッキントッシュ タイプの結線になっています。ドライブはマッキントッシュタイプのケーブルと共に 出荷されていますが、標準的なケーブルや変換器は、もしセントロニクスあるいは 高密度コネクタを使用しているのであれば容易に入手できます。
私は内蔵 SCSI ドライブは見たことはありませんが、標準的な 50 ピン DIP の SCSI コネクタと同じ 2 つのスイッチが付いていると思います。
同じバス上で使用する他の SCSI デバイスとターゲットアドレスが競合していな いことを確認して下さい。また、物理的にチェインの最後のドライブではター ミネータが有効になっているか、外部ターミネータが付いていることを確認し て下さい。
もし内蔵の SCSI ディスクや CD-ROM を使用していて、ZIP ドライブを既存の SCSI アダプタに接続する場合、カード上に取り去るべきターミネータがないかどう か確認して下さい。SCSI バスの両端のみがターミネートされていなければなら ないのです。もし、外部と内部に機器を接続している場合には、外部機器の最 後と内部機器の最後にターミネータがあれば良いのです。アダプタカードのター ミネータは必要ありません。
ケーブルがしっかり接続されていることを確認して下さい。
Iomega は ZIP Zoom という名前の SCSI ホストアダプタを販売しています。これは アダプテック AHA1520 ファミリーの設計に基づいたものです。マッキントッシュ タイプの DB25F 外部コネクタを持ち、ZIP ドライブに附属しているケーブルが使用 できます。
Linux は aha152x ドライバでこのアダプタをサポートしています。
パラレルポート ZIP ドライブも 2 つの DB25 コネクタを持っています。オス (DB25M) はコンピュータのパラレルポートからのケーブルを接続するためのものです。 もう一つ (メス、DB25F) はプリンタとチェイン接続するためのものです。Linux では 現在 ZIP ドライブとチェイン接続されたプリンタの同時使用はできません。P ダブル モジュールとして使用可能です。設定用スイッチはありません。
パラレルポート ZIP ドライブは多くのタイプのパラレルポートで使用できますが、 現在 Linux では標準か、双方向ポートしかサポートしていません。もし、使用する パラレルポートが設定スイッチ (ハードウエアか CMOS 設定か) を持っていれば このモードのどちらかに設定して下さい。
ケーブルがしっかり接続されていることを確認して下さい。
Linux で ZIP ドライブを使用するには SCSI システムと SCSI ディスクと使用する
ホストアダプタをサポートしたカーネルが必要です。もし、カーネルの構築に慣れて
いないのならば、/usr/src/linux
にある README を読んで勉強して下さい。
最近のバージョンには Documentation というディレクトリにも役に立つ情報が
あります。
カーネルの構築は設定から始めます。ここで必要なカーネルのコンポーネント
を設定しておきます。カーネルの設定では make config
が普通使われ、
質問に答えていく形式でカーネル設定を行ないます。
最近のカーネルでは他の新しい方法も使えます。make menuconfig
では
メニューを用いたインターフェースで同じことができますし、make xconfig
では X 上で tk ツールキットを使った素晴らしい方法もあります。
カーネルの設定をしたら、make dep
と make zlilo
(もし LILO
を使用しないのなら make zImage
) で新しいカーネルをコンパイルして
インストールして下さい。もちろん、シャットダウンとリブートは忘れずに。
SCSI システムの一部あるいは全部をモジュールとして構築することもできます。
そうした場合、ZIP ドライブにアクセスする前には scsi.o
、次に
sd.o
、最後にホストアダプタのドライバをロードして下さい。
もし、すでにシステムに SCSI ディスクがあって、同じコントローラに ZIP ドライブ を接続した場合には、カーネル設定をしなおす必要はありません。そうでなければ 多分新しいカーネルを構築しなければならないでしょう。
SCSI バージョンの ZIP ドライブをサポートするカーネルを構築する場合、SCSI サポートと SCSI ディスクサポートを選択しなければなりません。また、使用する インターフェースカードのドライバも選択します。もし ZIP Zoom を使用する 場合には、aha152x のドライバを選んで下さい。
SCSI HOWTO にあるあなたのアダプタの説明と Linux のソースツリーの
drivers/scsi
サブディレクトリの中の README を読んで下さい。特に、
カーネルがアダプタを初期化する時に必要になるかもしれないコマンドライン
パラメータには注意して下さい。
たとえば、もしあなたが ZIP Zoom カードを使用する場合、次のようなコマンドを
ブートコマンドに付け加えるか /etc/lilo.conf
に入れておかなければ
なりません。
aha152x=0x340,11,7,1
これによりドライバに ZIP Zoom カードのポートアドレスと IRQ を教えることが できます。ジャンパーで設定したように指定して下さい。
LILO や LOADLIN でカーネルを設定するための情報は Paul Gortmaker の BOOTPROMPT-HOWTO にも述べられています。
もし、ZIP ドライブを安定したカーネル、バージョン 1.2.13 で使用したい場合、
ftp://gear.torque.net/pub/ppa.c から anonymous ftp でバージョン
0.18 のドライバを取って来る必要があります。ドライバをローダブルモジュールとして
コンパイルする方法は ppa.c
のソースの中に書かれています。
ほとんどの場合、新しいカーネルを構築しなければならないことに注意して下さい。 特に、Slackware (訳者注:3.0以前) に入っているコンパイル済みカーネルでは PPA は動作しません。SCSI サポートと SCSI ディスクサポートでカーネルを構築 して下さい。しかし、lp プリンタドライバのサポートは無しにして下さい。 1.2.13 では同じカーネル中で 2 つのドライバは同時には存在できません。
PPA ドライバをロードする時には、ポート番号と insmod
コマンドラインの
いくつかのタイミングパラメータを調整することができます。この調整については
ppa.c
ファイルの中のドキュメントに記述されています。デフォルトでは
ドライバは 0x378 のパラレルポートに接続されていると仮定します。
カーネル 1.2.13 に対するドライバでは機能拡張はまったく行なわれていません。 カーネル 2.0 が出た数カ月後にはこのドライバは消え去り、主にカーネル 2.0 を 用いて配付が行なわれると思っておいて下さい。
バージョン 1.3.74 以降、PPA ドライバはカーネルの標準的な一部分になっています。 1.3.78 あたりのカーネルでは変更がありましたが、1.3.85 以降ではドライバは バージョン 0.26 となり非常に安定しています。現在、Linux 2.0 に対する コードフリーズになっていますので、0.26 が次の安定版のカーネルには入ると 思います (訳者注:2.0.7では0.26です)。
PPA サポートのカーネルを構築するには、SCSI サポート、SCSI ディスクサポートを 含め、low-level SCSI adapters のリストから Iomega ZIP / PPA-3 support を 選んで下さい。ドライバをローダブルモジュールとして構築することもできます。
ドライバの調整を行なうために、/etc/lilo.conf
や insmod
の
コマンドラインパラメータを使用することができます。これらについてはカーネル
ソースツリーの drivers/scsi/README.ppa
に述べられています。次の
セクションに概要を載せておきます。
同じパラレルポートで lp と ppa ドライバを両方使用したい場合、両方をローダブル モジュールとして作成し、使用する時にどちらかをロードして下さい。両方はロード できません (訳者注: kerneld を使うと便利かもしれません)。
Linux のローダブルモジュールは日に日に強力になり、それに伴い複雑になって
います。始める前にカーネルソースツリーの Documentation/modules.txt
を
読んで下さい。
ppa をカーネルに組み込んだ場合、次のようにして LILO や LOADLIN のコマンド ラインでパラメータを調節することができます。
ppa=base[,speed_high[,speed_low[,nybble]]]
ここで、base
はパラレルポートの I/O アドレスで、speed_high
はドライバ中のあるファーストループのタイミング定数で、speed_low
は
同様のスローループのタイミング定数で、nybble
はドライバに 4 ビット
あるいは nybble モードを強制的に使用させるためのフラグです。
たとえば、デフォルトの状態は次のように書けます。
ppa=0x378,1,6,0
カーネルに必要な設定がすべてなされているならば、ブート時にアダプタと ドライバを認識します。ドライバとしてローダブルモジュールを使用する場合、 モジュールがロードされた後に以下の話が適用できます。
ほとんどの部分では SCSI とパラレルバージョンは同じ振舞いをしますが、パラレル バージョンのほうがいくらか遅いと思われます。
システムがブートする時、アダプタやドライブやドライブ中のディスク等に関する 多くの情報を表示します。ドライブの中にディスクが入っていない時にはこのうちの いくつかの情報が表示されなくなり、ディスクを入れてドライブにアクセスした時 のみに表示されます(アクセスして見て下さい)。あなたが初心者ならば、ドライブに ディスクを入れてブートすることを勧めます。その方が混乱が少ないですから。
これらのメッセージがどこに現れるかはシステムの設定に依存します。ほとんどは
システムコンソールに表示されますが、/var/adm/messages
のようなログ
ファイルに入ることもあります。もし、よそで見つけられない場合、普通、dmesg
コマンドでカーネルメッセージの最後の所は確認できます。
何か起きてだれかの助けが必要な場合、このログ情報は重要です。バグレポー トを送る場合にはできるだけ関連するログメッセージを送るようにして下さい。
カーネルのログメッセージがどのようになるかの例を示します。
scsi0 : PPA driver version 0.26 using 8-bit mode on port 0x378.
scsi : 1 host.
Vendor: IOMEGA Model: ZIP 100 Rev: N*32
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 6, lun 0
scsi : detected 1 SCSI disk total.
SCSI device sda: hdwr sector= 512 bytes. Sectors= 196608 [96 MB] [0.1 GB]
sda: Write Protect is off
Partition check:
sda: sda1
この出力は、1.3.87 のシステムにパラレル ZIP ドライブを付けた場合です。細かい 部分はホストアダプタや他にSCSIデバイスを持っているかどうかによって変わります。
表示されている最初の行はホストアダプタに対するローレベルドライバ (この
場合は PPA) からの初期化メッセージです。続くメッセージは SCSI バス上で
見つけたデバイスに関するドライブ認識情報です。5 行目はドライブに割り当てら
れたデバイス名です (この場合は、/dev/sda
)。最後の行はドライブ中の
ディスクのパーティションチェックの結果を表します(この場合 /dev/sda1
という一つのパーティションを持ちます)。SCSI アダプタや多くのディスクがある場合
には、そのレポートがカーネル中の異なったモジュールから送られ、各部には
もっと多くの情報が入ります。
もし、Iomega の生ディスクを使用している場合には、パーティションチェック
では /dev/sda4
という一つのパーティションが示されます。もし、他の
SCSI デバイスがある場合には、ZIP ドライブはたとえば /dev/sdb
の
ように現れると考えて、それらのメッセージをチェックして下さい。
このような行が現れない時は、ハードウエアかカーネルの設定が間違っています。 メールを送る前に慎重に調べて下さい。
scsi0:
の行が現れない時、ホストアダプタとドライバが正しく設定されて
いません。ドライバの中には何が悪いのかヒントを教えてくれるものがあります。
ドライバが検出されない場合、ケーブルの問題かも知れません。ドライブ名が
割り当てられない場合、カーネルを構築した時に SCSI ディスクサポートを指定
するのを忘れていると考えられます。
他のデバッグ情報については drivers/scsi
の README と SCSI HOWTO を
チェックして下さい。
ZIP ドライブのドライブ名がわかれば準備は完了です。ドライブは通常の Linux のディスク管理命令で操作できます。fdisk (または cfdisk) でディスク上の パーティションテーブルを操作できます。mke2fs で Linux で最も普通に使用される ext2 ファイルシステムでパーティションをフォーマットできます。mount を使えば、 ディレクトリにフォーマットされたパーティションをマウントできます。
もしこれらのツールに慣れていないのならマニュアルページで勉強して下さい。 現在 fdisk には多くのまったく違ったバージョンが存在します。注意して下さい。
普通のやり方を2つ述べます。
Iomega のツールで作成された DOS ファイル構造の ZIP ディスクを持っている場合、
パーティションチェックではディスクは /dev/sda4
というパーティション
を一つ持っていると表示するでしょう。
マウントする場所、たとえば /zip
を作って、MS-DOS ファイルシステム
として次のようにマウントして下さい。
mkdir /zip
mount -t msdos /dev/sda4 /zip
ディスク上のファイルは /zip
の中に現れます。ディスクがマウントされて
いる間取り出すことはできません。操作が終了したら、取り出してディレクトリか
ら削除するために、次のようにアンマウントすることができます。
umount /zip
一度 /zip
というマウントポイントを作ったら、もう一度作る必要は
ありません。あとでマウントしたり、別の何かをマウントすることもできます。
ZIP ディスクを消去して、Linux のネイティブのファイルシステムを作成したい場合、 ディスク全体に対して fdisk を使用しなければなりません。
fdisk /dev/sda
そして、( d コマンドで) 既存のパーティションを消去します。その後、n コマンド で primary のパーティション番号 1 で新しいパーティションを作成します。 それから、w でディスクにパーティションテーブルを書き込んで、q で終了します。
そのパーティションをフォーマットします。
mke2fs /dev/sda1
( 1 は fdisk でこのパーティションに与えた番号です)。これで次のようにディスク をマウントできます。
mount -t ext2 /dev/sda1 /zip
(前に作成したマウントポイントを再び使用します)。
ZIP ドライブについてくるディスクを使用するには他にやらなければならない ことがあります。出荷時には、ソフトウエア制御のライトプロテクトが有効に なっています。ほとんどの人はそれを Linux で使用する前に DOS 上でプロテクト を解除しています。Linux はロックされたディスクにはアクセスできません。 Iomega のツールで解除しなければなりません。
ライトプロテクトの制御などの他の Linux ネイティブなツールもすぐに入手で きるようになるでしょう。(訳者注: ライトプロテクト解除の Linux 用ツールは http://www.torque.net/ziptool.html で入手可能です)。
マウントされていない時にだけディスクをイジェクトできます。現在の所、ディスク をイジェクトする Linux のコマンドはありません。従って、ディスクをイジェクト するにはドライブの前面のボタンを押して下さい。
Linux はロックが解除される前にディスクにすべてのデータが書かれることを 保証しています。
Iomega の特徴のいくつかをサポートするような SCSI とパラレルバージョンのも のに対する Linux の ZIP ツール (ソフトウエアでのイジェクトやライトプロテク トのコントロール等を含む) に注目しておいて下さい。
以下はわれわれがよく聞かれる質問です。人に聞く前にもう一度この答えを良 く読んで下さい。
これはホストアダプタに何を使用しているかに依存します。もし、使用している ホストアダプタがターゲット 5 あるいは 6 からブートできるようなコードを 持った BIOS ROM を持っていれば、SCSI ZIP ドライブからブートできます。 パラレルポートドライブからはブートできません。
もしメインのディスク上に DOS があって、ZIP ディスク上の Linux をブートしたい 場合、LOADLIN ブートローダを使用すればブートできます。カーネルイメージが DOS ディスク上になければなりませんが、Linux の残りのシステムは ZIP 上に置いて おけます。使用するカーネルに正しいドライバが組み込まれていることを 確認しておいて下さい。
確認している範囲では、パラレル ZIP ドライバを含んでいるようなインストール フロッピーを含むようなポピュラーな配付パッケージはありませんが、これは Linux 2.0 が出れば変わるかもしれません。
これは最も良くある質問の一つです。しかし、これに関するちゃんとした答え はだれにもわからないと思います。多分、ちゃんとした理由はないと思います。
/etc/fstab
に一行を加えるだけです。たとえば、ブート時に常にドライブ
に DOS ディスクが入っているとします。その場合、
/dev/sda4 /zip msdos defaults 0 0
と fstab に書きます。パッケージによっては fstab に書かれたパーティションに fsck をかける場合があるかもしれません。この場合、もし違ったディスクを入 れていたり、ディスクを入れていなかった場合など問題を生じるかもしれない ことを知っておいて下さい。
カーネルはパーティションテーブルを読もうとしますが、タイムアウトになり ます。全く心配することはありません。ディスクを入れて、それに対して操作 をしようとすればカーネルは現在はそこにディスクが入っていることに気付き パーティションテーブルを再スキャンします。
ヒント: ディスクを変えた時、新しいディスクのパーティション構造をチェッ クするために常に fdisk を用いると良いでしょう。
いくつかの SCSI ホストアダプタはシステムブートの最中にディスクの パーティションテーブルを読もうとします。もし、これを無効にできないと、 常にドライブにディスクを入れてブートせざるを得なくなります。
Iomega にコンパチブルのホストアダプタのリストがあります。
PPA-3 parallel-to-SCSI アダプタは Iomega が VPIO と呼ぶ単一の ASIC で構成され ています。これは ZIP ドライブの制御カードに載っています。そこには本物の SCSI バスがありますが、通常の形態ではありません。
私は 2 つのカードを比べてみたことはありませんが、VPIO が SCSI バスが パッケージの外に拡張された時に必要になる電気的なバッファ回路の置き換えであるよ うに思います。
はい。しかし、現在同じパラレルポートで lp と ppa ドライバを同時に有効には できません。リソース共有プロトコルが設計されてインプリメントの初期段階 にはありますが、Linux 2.0 がリリースされる前には入手できないでしょう。
それまでは、プリンタと ZIP ドライブをチェイン接続した場合、lp と ppa ドライバ をローダブルモジュールと作成することにより、リブートすること無しに両方を 使用できます。モジュール化してあれば、プリントしたい場合にはlpドラ イバを insmod すればいいですし、ZIP ドライブにアクセスしたい場合には、ppa ドライバをロードすればいいのです。
もちろん、2 つパラレルポートがあれば一つをプリントに一つを ZIP ドライブに
使用できます。lp と ppa ドライバを含んでカーネルを構築し、カーネルコマンド
ラインに適当な設定コマンドを与えればよいのです。たとえば、LILO を使用して
いて、0x378 にプリンタを 0x3bc に ZIP ドライブを接続していたとします。
この時、次のような行を /etc/lilo.conf
に付け加えて下さい。
append = "lp=0x378 ppa=0x3bc"
ppa は元々はパラレルバスに関するコマンドプロトコルに対するテクニカルな 仕様を利用しないで開発されました。代わりに、DOS エミュレータがプロトコル のリバースエンジニアリングに使用されました。エミュレータの元でエンハンスト モードで動作するドライバを得ることは可能ではありません。
Iomega のテクニカルリファレンスマニュアルが現在入手可能です。また、 エンハンストパラレルポートチップのデータシートも持っています。従って、 ドライバをアップグレードすることも可能です。
いいえ。それらはフロッピーテープドライブで、SCSI は含まれていません。
多くの人が私の方法でプロトコルを決定し、これらをテープのドライバを開発 することに適用することに興味を示しました。その最初のステップは DOSemu の 元で動作する DOS ドライバを作成することです。これに成功したといまだ聞い ていません。
いいえ。EZ135 はシャトルポートパラレルから IDE への変換器を内蔵した IDE ドライブです。
パラレルポート EZ135 の Linux 用ドライバを書くためにプロトコルの解析が 始まっています。基本的なプロトコルの解析は完了していますが、いつドライバがで きあがるのかは分かりません。
私のウエブページ http://www.torque.net/ez135.html に注目していて 下さい。たまにベータテスターを募集しています。
この mini-HOWTO の最新版を私のウエブページに置くようにします。ここでチェック できます。
もっと一般的な ZIP FAQ のウエブページは (マッキントッシュに偏っていますが) ここです。
Iomega のウエブページはここです。
そして、PC に関する一般的なパラレルポートプログラミングに関する情報なら ここをたずねて見て下さい。
以上