ZIP Drive Mini-HOWTO Grant Guenther, grant@torque.net v1.0, 15 April 1996 中井優一, ynakai@akashi.ac.jp 18, July 1996 Iomega ZIP ドライブはポピュラーなリムーバブルメディアです。SCSI イン ターフェースのものと、パラレルポートに接続するものの 2 つのバージョン があります。このドキュメントは Linux で ZIP ドライブを使用する方法につ いて述べたものです。 注意: この文書はかなり以前に書かれたものなので、いまどきの Linux 環境 にはあてはまらない箇所があります。 (JF Project) 1. イントロダクション 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 は これらのギャップを埋めることを目的にしています。 このドキュメントは色々な人、特に以下の人達、が集めて提供している情報を まとめたものです。 o Scot Wilcoxon, sewilco@fielday.mn.org o Joe Mack, mack@ncifcrf.gov o Byron Jeff, byron@cc.gatech.edu 彼らの重要な寄与と私が持ち込んだミスを許してくれることに感謝します。 2. ZIP ドライブ Iomega ZIP 100 ドライブには 3 種類あります。それらでは 3.5" フロッピー ディスクに似た 100MB の容量の特別なカートリッジを使用します。このディ スクは 2048 セクタ、96 シリンダで各セクタは 512 バイトになっています。 従って、普通 96MB であると言われています。 1 種類は SCSI インターフェースの内蔵型 5.25" ハーフハイトのもので、あ との 2 種類は青い軽量のプラスチック容器に入った外付けドライブです。電 源は外部アダプタで提供されます。外付けドライブは SCSI バージョンとパラ レルポートバージョンがあります。 すべてのドライブには前面に大きな押しボタンが付いています。これはディス クをイジェクトするのに使います。Linux はドライブを使用している間はドア をロックしますが、ドアがロックされている時にボタンが押されると ZIP ド ライブはソフトウエアがロックを解除すると記憶してディスクをイジェクトし ます。 2.1. SCSI バージョン ZIP ドライブの外付けバージョンには 2 つの DB25F コネクタと 2 つの設定 用スイッチがあります。1 つのスイッチはドライブのターゲットアドレス (訳 者注: SCSI ID と思われます) を選択するのに使用します。これは 5 か 6 に 限定されています。もう一つのスイッチはドライブがチェインの最後の場合 に、内部ターミネータを有効にするのに使用します。25 ピンの SCSI コネク タはよくあるマッキントッシュタイプの結線になっています。ドライブはマッ キントッシュタイプのケーブルと共に出荷されていますが、標準的なケーブル や変換器は、もしセントロニクスあるいは高密度コネクタを使用しているので あれば容易に入手できます。 私は内蔵 SCSI ドライブは見たことはありませんが、標準的な 50 ピン DIP の SCSI コネクタと同じ 2 つのスイッチが付いていると思います。 同じバス上で使用する他の SCSI デバイスとターゲットアドレスが競合してい ないことを確認して下さい。また、物理的にチェインの最後のドライブでは ターミネータが有効になっているか、外部ターミネータが付いていることを確 認して下さい。 もし内蔵の SCSI ディスクや CD-ROM を使用していて、ZIP ドライブを既存の SCSI アダプタに接続する場合、カード上に取り去るべきターミネータがない かどうか確認して下さい。SCSI バスの両端のみがターミネートされていなけ ればならないのです。もし、外部と内部に機器を接続している場合には、外部 機器の最後と内部機器の最後にターミネータがあれば良いのです。アダプタ カードのターミネータは必要ありません。 ケーブルがしっかり接続されていることを確認して下さい。 2.2. ZIP Zoom ホストアダプタ Iomega は ZIP Zoom という名前の SCSI ホストアダプタを販売しています。 これはアダプテック AHA1520 ファミリーの設計に基づいたものです。マッキ ントッシュタイプの DB25F 外部コネクタを持ち、ZIP ドライブに附属してい るケーブルが使用できます。 Linux は aha152x ドライバでこのアダプタをサポートしています。 2.3. パラレルポートバージョン パラレルポート ZIP ドライブも 2 つの DB25 コネクタを持っています。オス (DB25M) はコンピュータのパラレルポートからのケーブルを接続するためのも のです。もう一つ (メス、DB25F) はプリンタとチェイン接続するためのもの です。Linux では現在 ZIP ドライブとチェイン接続されたプリンタの同時使 用はできません。P ダブルモジュールとして使用可能です。設定用スイッチは ありません。 パラレルポート ZIP ドライブは多くのタイプのパラレルポートで使用できま すが、現在 Linux では標準か、双方向ポートしかサポートしていません。も し、使用するパラレルポートが設定スイッチ (ハードウエアか CMOS 設定か) を持っていればこのモードのどちらかに設定して下さい。 ケーブルがしっかり接続されていることを確認して下さい。 3. ZIP ドライブのためのカーネルの設定 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、 最後にホストアダプタのドライバをロードして下さい。 3.1. SCSI バージョン もし、すでにシステムに 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 にも述べられています。 3.2. 1.2.13 の PPA ドライバ もし、ZIP ドライブを安定したカーネル、バージョン 1.2.13 で使用したい場 合、 から 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 を用いて配付が行なわれると思っておいて下さい。 3.3. 現在のカーネルでの PPA ドライバ バージョン 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 を読んで下さい。 3.4. PPA コマンドラインパラメータ 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 4. ZIP ドライブを使用する カーネルに必要な設定がすべてなされているならば、ブート時にアダプタとド ライバを認識します。ドライバとしてローダブルモジュールを使用する場合、 モジュールがロードされた後に以下の話が適用できます。 ほとんどの部分では SCSI とパラレルバージョンは同じ振舞いをしますが、パ ラレルバージョンのほうがいくらか遅いと思われます。 4.1. ブート時のドライブの認識 システムがブートする時、アダプタやドライブやドライブ中のディスク等に関 する多くの情報を表示します。ドライブの中にディスクが入っていない時には このうちのいくつかの情報が表示されなくなり、ディスクを入れてドライブに アクセスした時のみに表示されます(アクセスして見て下さい)。あなたが初心 者ならば、ドライブにディスクを入れてブートすることを勧めます。その方が 混乱が少ないですから。 これらのメッセージがどこに現れるかはシステムの設定に依存します。ほとん どはシステムコンソールに表示されますが、/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 を チェックして下さい。 4.2. fdisk、 mke2fs、 mount 等 ZIP ドライブのドライブ名がわかれば準備は完了です。ドライブは通常の Linux のディスク管理命令で操作できます。fdisk (または cfdisk) でディス ク上のパーティションテーブルを操作できます。mke2fs で Linux で最も普通 に使用される ext2 ファイルシステムでパーティションをフォーマットできま す。mount を使えば、ディレクトリにフォーマットされたパーティションをマ ウントできます。 もしこれらのツールに慣れていないのならマニュアルページで勉強して下さ い。現在 fdisk には多くのまったく違ったバージョンが存在します。注意し て下さい。 普通のやり方を2つ述べます。 4.2.1. DOSフォーマットされたディスク Iomega のツールで作成された DOS ファイル構造の ZIP ディスクを持ってい る場合、パーティションチェックではディスクは /dev/sda4 というパーティ ションを一つ持っていると表示するでしょう。 マウントする場所、たとえば /zip を作って、MS-DOS ファイルシステムとし て次のようにマウントして下さい。 mkdir /zip mount -t msdos /dev/sda4 /zip ディスク上のファイルは /zip の中に現れます。ディスクがマウントされてい る間取り出すことはできません。操作が終了したら、取り出してディレクトリ から削除するために、次のようにアンマウントすることができます。 umount /zip 一度 /zip というマウントポイントを作ったら、もう一度作る必要はありませ ん。あとでマウントしたり、別の何かをマウントすることもできます。 4.2.2. ネイティブの Linux ディスクとして再フォーマット ZIP ディスクを消去して、Linux のネイティブのファイルシステムを作成した い場合、ディスク全体に対して fdisk を使用しなければなりません。 fdisk /dev/sda そして、( d コマンドで) 既存のパーティションを消去します。その後、n コ マンドで primary のパーティション番号 1 で新しいパーティションを作成し ます。それから、w でディスクにパーティションテーブルを書き込んで、q で 終了します。 そのパーティションをフォーマットします。 mke2fs /dev/sda1 ( 1 は fdisk でこのパーティションに与えた番号です)。これで次のように ディスクをマウントできます。 mount -t ext2 /dev/sda1 /zip (前に作成したマウントポイントを再び使用します)。 4.2.3. ZIP ツールディスク ZIP ドライブについてくるディスクを使用するには他にやらなければならない ことがあります。出荷時には、ソフトウエア制御のライトプロテクトが有効に なっています。ほとんどの人はそれを Linux で使用する前に DOS 上でプロテ クトを解除しています。Linux はロックされたディスクにはアクセスできませ ん。 Iomega のツールで解除しなければなりません。 ライトプロテクトの制御などの他の Linux ネイティブなツールもすぐに入手 できるようになるでしょう。(訳者注: ライトプロテクト解除の Linux 用ツー ルは で入手可能です)。 4.3. ディスクのイジェクト マウントされていない時にだけディスクをイジェクトできます。現在の所、 ディスクをイジェクトする Linux のコマンドはありません。従って、ディス クをイジェクトするにはドライブの前面のボタンを押して下さい。 Linux はロックが解除される前にディスクにすべてのデータが書かれることを 保証しています。 Iomega の特徴のいくつかをサポートするような SCSI とパラレルバージョン のものに対する Linux の ZIP ツール (ソフトウエアでのイジェクトやライト プロテクトのコントロール等を含む) に注目しておいて下さい。 5. しばしば聞かれる質問 (FAQ) 以下はわれわれがよく聞かれる質問です。人に聞く前にもう一度この答えを良 く読んで下さい。 5.1. ZIP ドライブからブートできますか? これはホストアダプタに何を使用しているかに依存します。もし、使用してい るホストアダプタがターゲット 5 あるいは 6 からブートできるようなコード を持った BIOS ROM を持っていれば、SCSI ZIP ドライブからブートできま す。パラレルポートドライブからはブートできません。 もしメインのディスク上に DOS があって、ZIP ディスク上の Linux をブート したい場合、LOADLIN ブートローダを使用すればブートできます。カーネルイ メージが DOS ディスク上になければなりませんが、Linux の残りのシステム は ZIP 上に置いておけます。使用するカーネルに正しいドライバが組み込ま れていることを確認しておいて下さい。 確認している範囲では、パラレル ZIP ドライバを含んでいるようなインス トールフロッピーを含むようなポピュラーな配付パッケージはありませんが、 これは Linux 2.0 が出れば変わるかもしれません。 5.2. なぜ Iomega はパーティション番号 4 を使うのですか? これは最も良くある質問の一つです。しかし、これに関するちゃんとした答え はだれにもわからないと思います。多分、ちゃんとした理由はないと思いま す。 5.3. ブート時にディスクをマウントしたいのですが? /etc/fstab に一行を加えるだけです。たとえば、ブート時に常にドライブに DOS ディスクが入っているとします。その場合、 /dev/sda4 /zip msdos defaults 0 0 と fstab に書きます。パッケージによっては fstab に書かれたパーティショ ンに fsck をかける場合があるかもしれません。この場合、もし違ったディス クを入れていたり、ディスクを入れていなかった場合など問題を生じるかもし れないことを知っておいて下さい。 5.4. ブート時にディスクが入っていないとどうなりますか? カーネルはパーティションテーブルを読もうとしますが、タイムアウトになり ます。全く心配することはありません。ディスクを入れて、それに対して操作 をしようとすればカーネルは現在はそこにディスクが入っていることに気付き パーティションテーブルを再スキャンします。 ヒント: ディスクを変えた時、新しいディスクのパーティション構造をチェッ クするために常に fdisk を用いると良いでしょう。 いくつかの SCSI ホストアダプタはシステムブートの最中にディスクのパー ティションテーブルを読もうとします。もし、これを無効にできないと、常に ドライブにディスクを入れてブートせざるを得なくなります。 5.5. ZIP ドライブではどのような SCSI アダプタが使用できますか? Iomega にコンパチブルのホストアダプタのリストがあります。 o 5.6. パラレルドライブを本当の SCSI ディスクとして使えますか? PPA-3 parallel-to-SCSI アダプタは Iomega が VPIO と呼ぶ単一の ASIC で 構成されています。これは ZIP ドライブの制御カードに載っています。そこ には本物の SCSI バスがありますが、通常の形態ではありません。 私は 2 つのカードを比べてみたことはありませんが、VPIO が SCSI バスが パッケージの外に拡張された時に必要になる電気的なバッファ回路の置き換え であるように思います。 5.7. パラレルドライブにプリンタを接続できますか? はい。しかし、現在同じパラレルポートで 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" 5.8. PPA で EPP/ECP をサポートする予定はありますか? ppa は元々はパラレルバスに関するコマンドプロトコルに対するテクニカルな 仕様を利用しないで開発されました。代わりに、DOS エミュレータがプロトコ ルのリバースエンジニアリングに使用されました。エミュレータの元でエンハ ンストモードで動作するドライバを得ることは可能ではありません。 Iomega のテクニカルリファレンスマニュアルが現在入手可能です。また、エ ンハンストパラレルポートチップのデータシートも持っています。従って、ド ライバをアップグレードすることも可能です。 5.9. PPA は Iomegaのパラレルポートテープデバイスにも使用できますか? いいえ。それらはフロッピーテープドライブで、SCSI は含まれていません。 多くの人が私の方法でプロトコルを決定し、これらをテープのドライバを開発 することに適用することに興味を示しました。その最初のステップは DOSemu の元で動作する DOS ドライバを作成することです。これに成功したといまだ 聞いていません。 5.10. PPA はパラレルポート SyQuest EZ135 で動作しますか? いいえ。EZ135 はシャトルポートパラレルから IDE への変換器を内蔵した IDE ドライブです。 パラレルポート EZ135 の Linux 用ドライバを書くためにプロトコルの解析が 始まっています。基本的なプロトコルの解析は完了していますが、いつドライ バができあがるのかは分かりません。 私のウエブページ に注目していて下 さい。たまにベータテスターを募集しています。 6. 最新の情報を入手する この mini-HOWTO の最新版を私のウエブページに置くようにします。ここで チェックできます。 o もっと一般的な ZIP FAQ のウエブページは (マッキントッシュに偏っていま すが) ここです。 o Iomega のウエブページはここです。 o そして、PC に関する一般的なパラレルポートプログラミングに関する情報な らここをたずねて見て下さい。 o 以上