次のページ 前のページ 目次へ

5. Promise Ultra33 IDE

これは 2つの UDMA チャネルを持っていて、4台までのドライブをサポート する PCI カードです。仕様、価格等の情報は以下の場所で調べてください。

http://www.promise.com

このカードは Gateway 2000 の初期の Pentium II システムに搭載されて いました。最近のモデルはどうだか分かりません。

最近の開発版のカーネル (現在は 2.1.108) には PCI IDE コントローラを サポートするための汎用のコードが入っていて、Promise Ultra33 は自動的 に認識されるはずです。しかし、安定版のカーネル (現在は 2.0.34) では、 パッチが必要になります。そのため、Linux のインストールをするのが少し 難しくなっています。

5.1 Promise を使って Linux をインストールする

Promise コントローラ用のパッチは存在します。しかし、あなたが Linux をインストールしたことがないのであれば、パッチを当ててカーネルを 再構築するのは「すごく簡単」とは言えません。 この章ではインストールの手順を紹介します。 なお、以下に示した、インターフェースの設定を読み出す方法を 教えてくれた Gadi Oxman に感謝します。

インストールディスクを使用してコンソールが使えるようにできるなら、
cat /proc/pci とタイプすることで Promise のインターフェースの設定を
表示させることができます。以下に例を示します。

    RAID bus controller: Promise Technology Unknown device (rev 1).
      Vendor id=105a. Device id=4d33.
      Medium devsel.  IRQ 12.  Master Capable.  Latency=32.
      I/O at 0xe000.   (a)
      I/O at 0xd804.   (b)
      I/O at 0xd400.   (c)
      I/O at 0xd004.   (d)
      I/O at 0xc800.   (e)

この読み出した値を使って、コマンドラインのパラメータとして
ide2=a,b+2 ide3=c,d+2 をカーネルに渡してやればよいのです。

(訳注: a,b,c,d には、それぞれのI/Oポートアドレスを代入してくださ い。上の例であれば、(b) = 0xd804 なので、b+2 の部分には 0xd804+2 つまり 0xd806 が入ります)

注意しないといけないのは、上に出てきた数字は必ずしもあなたのマシンで のものとは一致しないということです。

(訳注: BIOS やハードウェアの構成で変わります)

たとえば、上の例では、具体的にセットするべきパラメータは ide2=0xe000,0xd806 ide3=0xd400,0xd006になります。 もしかすると IRQの値を入れないとうまく動かないかもしれません。 上の例では、IRQ 情報を入れると、 ide2=0xe000,0xd806,12 ide3=0xd400,0xd006,12のようになります。 1番目のチャネルしか使用しないのなら (たとえば、Promise にドライブを 1つしか接続しないとか、2つのドライブをマスタ/スレーブで接続する場合)、 ide3 のパラメータは必ずしも必要ではありません。

Red Hat 5.1 の場合: まず、ブートディスク (boot diskette) を使って立ち上げ、 プロンプトで Enter キーを押します。 カーネルがロードされ、続いて言語やキーボードのタイプ、インストール方法 について質問が現われますのでそれらに答えてください。 やがてどこからインストールするのか (source media) を聞いてくる画面が 表示されます。 これはあなたの環境に合ったものであればどれを選んでもかまいません。 次にインストール先の選択 (Select Installation Path) の画面が現れますので、ここで Alt-F2 を押してコマンドプロンプトを 表示させます。 cat /proc/pci を実行し、表示された上記の各数字を書きとめ、 再びブートディスクから起動します。 今度は最初のプロンプトの画面で linux ide2= (ここに上記の数字が入ります。カッコは入れないで) ide3=(ここも同じく) と入力してください。 ここまでで、後は問題なくハードディスクへのインストールができるはずです。

(訳注: パラメータ部分の「カッコ」は入力しないように :-)。 また、それぞれの内容はコマンドパラメータのときと同じものです。 また、ide3 以降のパラメータは、前にも書かれているように、1チャネル しか使用しないのであれば省略可能と思われます(未確認ですが))

ただし LILO のインストールはこれだけではうまく行きません。 LILO とカーネルにパッチを当てるまでは(詳細は後述)、 ブートフロッピーを用いて先ほどと同じパラメータをブートのたびに 手で入力して立ち上げてください。

Red Hat 5.0 での具体的な手順は以下のようになります。 まず、インストール用ブートフロッピー (Installation boot floppy) を 使って立ち上げ、ブートプロンプトで rescue と入力します。 いくつかのファイルをロードした後、サプルメンタルディスク (supplemental disk) を入れるようとの指示やらモニターやキーボードに ついての質問に答えていくと、最後にコマンドプロンプトの画面になります。 cat /proc/pci と入力し、先に述べた、設定に必要な数字を 書きとめます。それからマシンをリブートし、再びブートフロッピーから 立ち上げます。今度は、ブートプロンプトで linux ide2=(先に示したパラメータと同じ数字) ide3=(ここにも) と入力します。

(訳注: RedHat 5.1 の場合の訳注を参照してください。)

これで LILO 以外は問題無くハードディスクにインストールできるように なります。 後述のように LILO とカーネルにパッチを当てるまでは、 インストールに使用したブートフロッピーを使用して ブートのたびに先ほどと同じパラメータを入力し、 立ち上げなければなりません。

Slackware 3.4 での具体的な手順もほぼ同様です。 まず、あなたのシステムにあったブートディスクを使い、ブートプロンプト で何も入力せずに Enter だけ押します。 カーネルがロードされ、ルートディスクを入れるようにとの指示が現れます。 ルートディスクを入れ、ロードされるのを待ちます。root でログインし、 cat /proc/pci と入力し、先に示した数字を書きとめます。 それからマシンをリブートし、再度ブートフロッピーから立ち上げます。 今度は、ブートプロンプトで ramdisk ide2=(先に示した パラメータと同じ数字) ide3=(ここにも) と入力します。

(訳注: カッコそのものは入力しないように :-)。それぞれの内容は コマンドパラメータと同じものです。また、ide3 以降のパラメータは、 前にも書かれているように、1チャネルしか使用しないのであれば省略可能と 思われます (未確認ですが))

これで LILO 以外は問題無くハードディスクにインストールできるように なります。 後述のように LILO とカーネルにパッチを当てるまでは、 起動用にブートフロッピーを作成して ブートのたびに先ほどと同じパラメータを入力して 立ち上げてやる必要があります。

その他の Linux ディストリビューションの場合は、それぞれに応じて若干 変わってくるものと思います。ただ、その場合でも基本的なやり方は先に述べた ものと変わらないはずです。

重要: パッチ (これについては Promise 用のパッチを当てる の章で述べます) が入っていない状態では、カーネルがハードディスクに アクセスするためには、先に示したようなブートパラメータが必要 です。 そのため、LILO を設定する際にも (ハードディスクにインストールする場合でも フロッピーの場合でも) インストール時と全く同じパラメータを 指定するということがとても重要になります。きちんと設定されていないと システムはブートしません。 毎回ブート時に LILO にパラメータを入力して (たとえば、ブートする度に Shift キーを押して linux ide2=..... と入力して) 立ち上げることは可能です。 しかし、そのためには必要なパラメータを覚えていなければいけません。 おすすめなのは、できるだけ早くカーネルにパッチを当ててしまうという ことです。 パッチ入りのカーネルをブートできるようにしてしまえば、 もうブートパラメータなど気にしなくてもよくなるのです。 それに、私の知る限りでは、(make zdisk で作ったような) 純粋な カーネルブートフロッピーにブートパラメータを渡す手段はありません。 ブートパラメータを渡すためには、LILO やその他のローダ (例えば loadlin) を使わなければなりません。

パッチの当たっていないカーネルやインストールプログラムでは、 正常にドライブを検出しているにもかかわらず ide2, ide3 をうまく扱えない場合があります。 この問題は、Slackware 3.4, RedHat 5.0 で発生することが確認されています。 見たところ RedHat 5.1 では改善されているようです。 先に挙げた方法で Linux がうまくインストールできない場合は、 ide2, ide3 の代わりに、ide0, ide1 を使ってみてください。 (このテクニックを教えてくれた Martin Gaitan に感謝します)。 この方法の原理は、カーネルに Promise Ultra33 のことをオンボード コントローラだと思わせてしまうというものです。(すでにオンボード コントローラがあった場合はそれらはカーネルからは見えなくなります)。 この方法を使うと、実際にドライブの結線を変えてしまったときと同様に 次章で紹介する手順でインストールすることができます。 注意しないといけないのは、インストールのための IDE CD-ROM をオンボード コントローラに接続しているのなら、その CD-ROM のつながっている コントローラを置き換えないようにしなければいけないということです。 そうしないと インストールができなくなってしまいます。CD が hda もしくは hdb であるなら、ハードディスクには ide1 を使うようにし、CD が hdc もしくは hdd であるなら、ハードディスクには ide0 を使うようにしてください。

5.2 Promise を使わずに Linux をインストールする

ソフトウェア的な細工をする方法ができないのなら、少し野蛮な手段を とらなくてはいけません。ここで紹介する方法がそれで、このやり方でもうまく いくはずです。ただし、このやり方では、コンピュータの箱を開けて中を いじらなければなりません。 注意: もし IDE ドライブをつないだり外したりするのにあまり詳しく なければ、コンピュータやハードディスク、Promise Ultra33 についてきた マニュアルを作業の前に読んでおいてください。もしどこかで失敗して、 そこでどうすればいいのか分からなくなってしまったら、申し訳ないですが、 そこでお手上げになってしまうかもしれません。

やるべきことはとても単純です。最近のマザーボードにはたいてい EIDE コントローラが組み込まれています。ハードディスクを Ultra33 から外し、 マザーボード上のコントローラのコネクタにつなぎかえます。 CD-ROM やテープドライブ、Zip ドライブがすでにマザーボード上のコントローラ に接続されていたのなら、未使用の側のチャネル(例えばプライマリの代わりに セカンダリ) に接続するか、とりあえず必要でないデバイス(たとえば Zip や テープドライブ)は、一時的に外してしまうというのが簡単でよいでしょう。 そして Linux をインストールします。 それから Promise 用の UDMA パッチをダウンロードし、カーネルに このパッチを当てます。(次の章を参照してください。)

これでドライブをPromiseにつなぎ直す準備が *ほぼ* できました。 安全のために、カーネルイメージ・ブートフロッピーを作成します (cd /usr/src/linux ; make zdisk と入力します)。 このフロッピーは、LILO が動かなかったときにシステムをブートさせるのに 使用します。安全のために、フロッピーは 2 つ作って、 1 つはとっておきましょう。

さて、ここで少し頭を使いましょう。たとえば、ハードディスクが 1 台きり しかなくて、それを Promise に接続する場合を考えます。多くの場合、この ハードディスクは /dev/hde になります。

(プライマリのオンボード (マザーボード上の) コントローラが hda, hdb に、セカンダリのオンボードコントローラが hdc, hdd になります)ハードディスクの台数を増やしたい場合は、Promiseの最初の チャネルが /dev/hdf、2 番目のチャネルのマスタが /dev/hdg、2 番目のチャネルのスレーブが /dev/hdh になります。

(訳注: ATA (IDE, EIDE..) の規格では、コントローラ 1 チャネルにつき 2 台までのドライブが接続できます (それぞれマスタ、スレーブと 呼ばれます)。 最近のマザーボードの多くは 2 チャネルのコントローラをオンボードで 持っているので、上に書かれているようになります。)

/etc/fstab を編集してハードディスクのパーティションに 関する全ての記述を書き換えます。 今は、インストールのため一時的にオンボードに接続されていたときの デバイスに設定されている (/dev/hda, hdb 等々) ので、これを Promise に接続し直した (戻した) ときの設定 (/dev/hde, hdf 等々) に変更します。 また、インストール時に接続を変えたデバイス (例えば CD-ROM や Zip 等) があって、それらをオンボードの元の位置に接続しなおすので あれば、ハードディスクと同様に設定を変更します。

次に例を示します。 CD-ROM が元々プライマリチャネルのマスタ (/dev/hda) に設定 されていたとします。 この場合、インストールのためにハードディスクをプライマリマスタに するためには、この CD-ROM をスレーブ (/dev/hdb) または セカンダリチャネル (のマスタ) (/dev/hdc) にしなければ なりません。 そして、インストールが終ったら、この CD-ROM の接続を元に 戻すのに伴って fstab 内の CD-ROM のデバイスの記述を /dev/hda に変更します。

LILOをお使いであれば、LILOを設定し直してドライブ指定を変更後のものに してやらなければいけません。 (LILOの設定についてはこの文書では触れません。 具体的な手順が知りたい方は、 LILO mini-HOWTO を参照してください)

(訳注: 日本語訳がJFの ここ にあります)

これを忘れると、ハードディスクからブートできなくなってしまい、先ほど 作っておいたブートフロッピーを使わざるを得なくなってしまいます。 この際、新しいパーティションからブートできるように設定してしましょう。 これには rdev コマンドを使用します。フロッピーをドライブに入れ、 rdev /dev/fd0 /dev/hde1 と入力します。 もちろん、これはルートパーティションが最初の UDMA ドライブの最初の パーティションにある場合の例です。もしこれと条件が違う場合 (たとえば、私の場合は /dev/hde7 です) は、それぞれの場合に 応じた正しいパーティション番号を使わなくてはなりません。

リブートします。これであとはうまく動作するはずです。

5.3 Promise 用のパッチを当てる

Promise Ultra33 のためのカーネルパッチが存在します。 これは、Gadi Oxman ( gadio@netvision.net.il) が作成したものです。

2.0.34 カーネル用のパッチは ここ で入手できます。 このパッチは 2.0.35 (この文書を書いている時点でまだプレリリース版 (最終でない、評価用)ですが) もしくはそれ以降のカーネルでは必要ありません。 もし古いカーネルをまだお使いでしたらアップグレードすることをお勧めします。 古いカーネルにはセキュリティー上の穴などいくつものバグを持っています。

(訳注: 新しいカーネルは「古いカーネルには無かった」バグが新たに 入り込んでいる可能性があります。 アップグレードする前には十分に情報収集をして、自分の責任で行いましょう)

RedHat ユーザーは、次のことに注意してください。 RedHat 5.1 のパッケージに含まれている 2.0.34 カーネルはプレリリース版 です。アップグレードすることをお勧めします。

パッチを当てるために、手の加わっていないカーネルを入手したいのであれば、 ftp.kernel.org から入手してください。

カーネルへのパッチの当て方、再構築の手順については、 Kernel HOWTO. を参照してください。 (訳注: JF に日本語訳があります。)

一度パッチを当ててしまえば、以下に書いたようにすれば DMA 転送が使えるようになります。

カーネルパッチの優位な点のひとつは、Triton (*) ドライバをカーネルに組
み込みさえすれば、バスマスタ DMA 転送 ("hdparm -d1 /dev/hdx") が使用
できるようになるということです。

(訳注: Intel Triton chipset のこと。カーネルを再構築する際のオプション で選択できるようになっています。カーネルの再構築に関する詳細は、JF にも 日本語訳のある、 Kernel-HOWTO (もしくはミラーサイト) を参照してください)

2.0.34 以降のカーネルでは自動的 UDMA が使えるようになるはずですが、 うまく動作しないこともあるようです。 なお、hdparm -Tt /dev/hdx でハードディスクの転送速度をテストする ことができます。 通常の UDMA ドライブでは 9.5MB/s 程度の値になります。

また、ブートに LILO を使用したいのであれば LILO にもパッチを当てなければなりません。 LILO のソースは、 ftp://sunsite.unc.edu/pub/Linux/system/boot/lilo/lilo-20.tar.gz から入手することができます。 また、LILO 用のパッチは、 http://pobox.com/~brion/linux/lilo-promise.patch から入手できます。


次のページ 前のページ 目次へ