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ドライブを使用する方法について述べた ものです。 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はこれらのギャップ を埋めることを目的にしています。 このドキュメントは色々な人、特に以下の人達、が集めて提供している情報を まとめたものです。 Scot Wilcoxon, sewilco@fielday.mn.org Joe Mack, mack@ncifcrf.gov 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で使用したい場合、 <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を用いて配付が行なわれると思っておいて下さい。 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用ツールは http://www.torque.net/ziptool.htmlで入手可能です)。 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にコンパチブルのホストアダプタのリストがあります。 <http://www.iomega.com/techs/zip/what063.html> 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用ドライバを書くためにプロトコルの解析が始まっ ています。基本的なプロトコルの解析は完了していますが、いつドライバがで きあがるのかは分かりません。 私のウエブページ<http://www.torque.net/ez135.html>に注目していて下さい。 たまにベータテスターを募集しています。 6. 最新の情報を入手する このmini-HOWTOの最新版を私のウエブページに置くようにします。ここでチェッ クできます。 <http://www.torque.net/zip.html>. もっと一般的なZIP FAQのウエブページは(マッキントッシュに偏っていますが) ここです。 <http://earth.cnct.com/home/steveg/zip.html>. Iomegaのウエブページはここです。 <http://www.iomega.com/>. そして、PCに関する一般的なパラレルポートプログラミングに関する情報なら ここをたずねて見て下さい。 <http://www.lvr.com/parport.htm> 以上