  The Linux Ultra-DMA Mini-Howto
  Brion Vibber, brion@pobox.com
  v1.45, 6 July 1998
  中野 正剛 訳, sx3m-nkn@asahi-net.or.jp
  v1.45J, 12 July 1998

  この文書では、Ultra-ATA, Ultra33 とも呼ばれる Ultra-DMA 対応のハード
  ディスクドライブおよびコントローラを Linux 上で使うための方法を説明し
  ています。この mini-HOWTO の最新版は、以下の場所から HTML フォーマット
  のものを入手することができます。 http://pobox.com/~brion/linux/Ultra-
  DMA.html
  ______________________________________________________________________

  目次

  1. まえがき
     1.1 免責事項
     1.2 クレジット
     1.3 文書の履歴
     1.4 著作権について

  2. Ultra-DMA って何？ なぜそんなものを使うの？
     2.1 IDE と EIDE、そして ATAPI
     2.2 バスマスタ DMA
     2.3 Ultra-DMA、またの名を Ultra-ATA、またの名を Ultra33、 またの名を...

  3. UDMA ハードディスクを EIDE コントローラと組み合わせて使用する
  4. ハードディスクを UDMA コントローラと組み合わせて使用する
  5. Promise Ultra33 IDE
     5.1 Promise を使って Linux をインストールする
     5.2 Promise を使わずに Linux をインストールする
     5.3 Promise 用のパッチを当てる

  6. Intel TX オンボード UDMA コントローラ
  7. VIA VP2 とそのファミリーのチップセット
  8. UDMA 汎用
  9. それでも動かないとき
  10. このmini-HOWTOに書かれていないUDMAについての情報を持っている。

  ______________________________________________________________________

  1.  まえがき

  この文書の目的は、Ultra-ATA, Ultra33 とも呼ばれる Ultra-DMA 対応のハー
  ドディスクドライブおよびコントローラを Linux 上で使うための方法を説明
  することです。特に意識しなくてもこれらのデバイスは動いてしまうケースも
  あります。しかし、その場合も少し手を加えることで、より一層性能を上げる
  ことが可能です。また、場合によっては、ハードディスクにアクセスできるよ
  うにするだけでも途方も無く長い道のりになってしまうこともあるのです。

  1.1.  免責事項

  この文書に書かれている情報は (私の知る限りにおいて) 正確で、きちんと動
  作するはずです。しかし、綴りのまちがいもあるかも知れませんし、文書の転
  送中に謎のエラーが起きてしまうかも知れません。また、あなたのシステム上
  に互換性の問題がある可能性もあります。これらの理由から、ここに書かれた
  方法ではうまく動作しないかもしれません。そういうわけですので、ハード
  ディスクをいじり始める前に、大事なデータは必ずバックアップをとっておい
  てください。もしまだバックアップをとる習慣がないのでしたら、これからは
  とるようにしましょう。あなた自身のためです。

  1.2.  クレジット

  Brion Vibber (brion@pobox.com) - この文書を書きました。

  Gadi Oxman (gadio@netvision.net.il) - Promise 用 Ultra33 パッチと設定
  に必要な値を読み出す方法を見つけてくれました。

  John G. (prefect@ipass.net) - VIA VP2 用パッチと情報を提供してくれまし
  た。

  Giovanni (giovanni@sudfr.com) - UDMAを有効にする VIA 関連のパッチと情
  報を提供してくれました。

  Martin Gaitan - Promise で ide0/ide1 に設定するやり方を教えてくれまし
  た。

  Norman Jacobowitz - Bugged me to add info on the VP3 - VP3 の情報を付
  け加えるように忠告してくれました。

  Andre Balsa (andrebalsa@altern.org) - いくつかの一般的な UDMA に関する
  情報と Intel TX, SiS, VP1 用の汎用の UDMA 用パッチを作成してくれまし
  た。

  Masayoshi Nakano - 日本語に翻訳しました。

  Maxime Baudin - フランス語に翻訳しました。

  1.3.  文書の履歴

  v1.45, 6 July 1998: 若干のアップデート。 Promise Ultra33 のための Red
  Hat 5.1 と 2.0.34 カーネル用パッチに関する情報の追加。

  v1.41, 3 May 1998: タイプミスの修正、翻訳者をクレジットに追加。

  v1.4, 28 April 1998: UDMA用汎用パッチ、その他一般的な情報、著作権につ
  いての章を追加。

  v1.3, 5 March 1998: VIA VP3 の情報を追加、パッチの当て方の説明を改善、
  Promise 用パッチの場所を最新のものに変更。

  v1.2, 27 January 1998: Promise に関する情報の追加。

  v1.1, 21 January 1998: VIA チップセットに関する新しい情報の追加、
  Promise Ultra 33 を使わないインストール方法を追加、バスマスタと UDMA
  転送モードを有効にするための情報の追加。

  v1.0, 19 January 1998: SGML フォーマットで仕上げた最初のバージョン。

  1.4.  著作権について

  (訳注: この章は原文を併記します。内容については原文が優先されます)

  This document may be freely copied and distributed for informational
  purposes. It may not be modified, except for reformatting, without the
  permission of the author. If you wish to translate this document into
  another language you may do so, however you should contact the author
  first so that updated versions of this document can be sent out to
  translators as well as directly to the Linux Documentation Project.

  情報を提供するという目的で使用される限り、この文書を自由に複製し、配布
  して頂いてかまいません。フォーマットを変換することも問題ありませんが、
  著者の承諾無しに内容を書き換えることはしないでください。もし他の言語に
  翻訳したいということであればしていただいてかまいません。ただし、その際
  は前もって著者に連絡をしてください。そうしていただければ、今後、この文
  書をアップデートした際に、 Linux Documentation Project に送るのと一緒
  に訳者の方にもお送りすることもできるようになりますので。

  2.  Ultra-DMA って何？ なぜそんなものを使うの？

  ここでは IDE 関連の技術について簡単に説明します。

  2.1.  IDE と EIDE、そして ATAPI

  これらはドライブに関する古い技術です。現在、店で売っていたり実際に使わ
  れていたりするドライブのうち、SCSI でないもののほとんどが EIDE です。
  その中でも、現在入手できる大容量ドライブの多くは UDMA (Ultra-DMA) をサ
  ポートしています。

  2.2.  バスマスタ DMA

  バスマスタ DMA は、ハードディスクの転送速度を上げるための技術です。こ
  の機能を使うためには、マザーボード、BIOS そしてドライブがサポートして
  いなくてはなりません。

  この技術についてもっとお知りになりたい方は、下記のページを参照してくだ
  さい。

  http://developer.intel.com/design/pcisets/busmastr/FAQs.htm

  2.3.  Ultra-DMA、またの名を Ultra-ATA、またの名を Ultra33、 またの名
  を...

  Ultra-DMA はいろいろな呼び方で呼ばれますが、ここでは単に、UDMA と呼ぶ
  ことにします。

  UDMA は、最大 33.3 MB/秒 (EIDE の 2倍) というこれまで以上の転送速度を
  持ちながら、 SCSI に比べてはるかに低価格が実現できるという先進的な技術
  です。最近のコンピュータには、UDMA 対応のドライブとコントローラが搭載
  されていますし、UDMA をサポートしていない既存のシステムでも、 (例えば
  Promise Ultra33 のような) UDMA コントローラカードを増設することで、ス
  ピードアップをはかることが可能です。こういったカードの増設は UDMA をサ
  ポートしない古いドライブのパフォーマンスの向上にも有効です。

  UDMA の概略については、下記の場所に非常に良い情報があります。

  http://www.quantum.com/src/whitepapers/ultraata/

  ここで注意しないといけないのは、UDMA は通常の単なる DMA と比べてケーブ
  ルの長さ制限が厳しいということです。できるだけケーブルの全長は 30cm 以
  下になるようにしてください。

  3.  UDMA ハードディスクを EIDE コントローラと組み合わせて使用する

  これは簡単です。全ての UDMA ドライブは EIDE と完全に互換性があるので、
  EIDE コントローラに接続した場合は、従来のタイプのドライブと同じように
  動作します。 Linux からも何の問題もなく認識され、そのまま使用すること
  ができます。しかし、この場合の転送速度の最大値は、EIDE の限界である
  16.7 MB/秒に制限されてしまいます。

  4.  ハードディスクを UDMA コントローラと組み合わせて使用する

  この組み合わせについては、うれしい情報とうれしくない情報があります。う
  れしい情報とは、UDMA コントローラには UDMA 対応ドライブだけでなく従来
  の EIDE ドライブも接続することができ、さらには EIDE コントローラに接続
  したときよりもずっと大きな転送速度を出せる可能性があるということです。

  うれしくない情報とは、現行の安定版の Linux カーネルでは (少なくとも
  2.0.34 では) UDMA のサポートは十分とは言えず、PCI UDMA カードについて
  は全くサポートされていません。より良い UDMA サポートの機能を得たいのな
  ら開発版のカーネル (現在は 2.2.108) を使用するか、次にリリースされる安
  定版の 2.0.35 を待たなくてはなりません。しかし、この点については現行の
  カーネル用の UDMA サポート用パッチがいくつも公開されています。

  また、マザーボードに組み込まれるよりアダプターカードに載っていることの
  ほうが多いような、ある種の UDMA コントローラについては、使用するために
  パッチを当てるか多少の技を使うかしなければなりません。

  だからこそこの文書が存在しているのです。パッチの入手方法やちょっとした
  テクニックを説明するために。

  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
  <http://sunsite.unc.edu/LDP/HOWTO/mini/LILO.html> を参照してください)

  (訳注: 日本語訳がJFのここ <http://jf.linux.or.jp/JF/JF-ftp/euc/LILO-
  Mini-HOWTO.euc> にあります)

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

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

  5.3.  Promise 用のパッチを当てる

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

  2.0.34 カーネル用のパッチはここ
  <http://pobox.com/~brion/linux/promise34.gz> で入手できます。このパッ
  チは 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 <http://jf.linux.or.jp/JF/JF-
  ftp/other-formats/Kernel-HOWTO/Kernel-HOWTO.euc.html> (もしくはミラー
  サイト) を参照してください)

  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 から入手できます。

  6.  Intel TX オンボード UDMA コントローラ

  この情報を提供してくれた Gadiに感謝します。

       Intel TX チップセット用のバスマスタ DMA は 2.0.31 以降のカーネルで
       サポートされています。

  それより古いカーネルでは(例えば Slackware 3.4 では 2.0.30 です)、この
  コントローラはより低速の EIDE モードで動作しか動作しません。ただし、ど
  ちらの場合でもカーネルはこのコントローラを自動的に認識しますので、動作
  させるうえで問題となることはありません。

  TX チップセット用の UDMA フルサポートの機能は、 ``UDMA 汎用'' パッチに
  含まれています。

  7.  VIA VP2 とそのファミリーのチップセット

  このコントローラもパッチの当たっていないカーネルでも自動認識され、少な
  くとも EIDE モードでは動作します。しかし、これらのチップセットのどれか
  をお使いでしたら、パッチを当ててみてください。ハードディスクのもつ性能
  をより引き出すことができるようになるだけでなく、あのうっとうしい
  "unknown PCI device" というメッセージからも解放されるようになります。

  パッチの1つは、  http://www.ipass.net/~prefect/ で入手できます。これ
  は、 FIC PA-2007 と PA-2011 マザーボードで採用されている、VIA VP2/97と
  いうチップセット用のものですが、それ以外の(VPx のファミリーの)チップ
  セットでも、ものによっては動作します。なお、VIA VP3 という新しいチップ
  セットについては、このパッチで動作したとの報告があります。選択肢が増え
  ましたね。

  注意点は、このパッチがサポートするのはバスマスタモードのみで、全ての
  UDMA の機能がサポートされるわけではありません。しかしそれでも単なる
  EIDE モードよりは有用です。バスマスタ DMA を有効にする方法については、
  パッチの置かれているサイトにある指示にしたがってください。

  そして、UDMA の機能を完全にサポートした別のパッチが
  http://www.pyreneesweb.com/Udma/udma.html, から入手できます。このパッ
  チは、VIA VT82C586B 用に書かれたものですが、VP2, VX3, VPX, P6, AGP
  Apollo といったチップセットでも動作するはずです。インストールおよび
  UDMA を有効にするための手順は、上記の場所にありますのでそれに従ってく
  ださい。なお、あなたのマザーボードが潜在的に互換性の問題を持っているか
  もしれません。失っては困るデータは全てバックアップをとってから作業を行
  うようにしてください。ただし、一度動いてしまえば、あとは何の問題も起き
  ないはずです。

  VP1 チップセットについては、これらのパッチでうまく動作するかどうかは不
  明です。しかし、少なくとも ``UDMA 汎用'' パッチではサポートされていま
  す。

  8.  UDMA 汎用

  UDMA 汎用のパッチは、Mark Lord が作成した Triton DMA ドライバを Andre
  Balsa (andrebalsa@altern.org) が改造したもので、このパッチにより、以下
  のチップセットで UDMA の機能を使えるようになります。

  o  Intel TX

  o  SiS 5513 (これは SiS 5571, 5598 そしてたぶん 5591 チップにも組み込
     まれています)

  o  VIA VP1 (未テストですが)

  また、このパッチは他のチップセットをサポートするための拡張が容易なよう
  に設計されています。この UDMA 汎用パッチは 2.0.29 から 2.0.33 までの
  カーネルでうまく動作することが確認されていますが、2.0.32 より前のカー
  ネルでは多少設定が必要となるかもしれません。

  (また、Grand Unified (大統一) UDMA Patch と呼ばれている、より多くの
  チップセットをサポートするパッチのベータテストが現在行われています。こ
  のパッチが入手できるようになるのは、おそらく近々リリースされる 2.0.35
  カーネルのリリース後になるかと思います。)
  現在のカーネル用の UDMA 汎用パッチは
  http://pobox.com/~brion/linux/udma-generic-latest.tar.gz, からダウン
  ロードすることができます。使用法については、同梱されている INSTALL と
  UDMA.txt をお読みください。

  以下は作者からの注意点です。

       IBM 製の UDMA ドライブと良質のマザーボードの組合せでのデータ転送速度を
       測定 (hdparm -t -T として行いました) したところ、最大で約 10MB/s でした。

       Intel TX チップセットは、ハードディスクのデータ用の FIFO を 1 つしか持って
       おらず、それを 2 つの IDE コントローラで共有するようになっています。そのた
       め、2 台の UDMA ドライブを使用した場合には、1 台のドライブのみを使用したと
       きのようなパフォーマンスの大幅な向上は望めないでしょう。
       それに対し、SiS5598 は完全に独立した 2 つのコントローラを持っており、それ
       ぞれ専用の FIFO を備えています。そのため SiS5598 チップを使用したマザーボ
       ードでは、md ドライバ (*) と 2 台のドライブを使ってストライピングをするこ
       とで、理論的には 66MB/s のバースト転送に挑戦することもできるのです。
       SiS5571 は同じアーキテクチャのコントローラだと思います。VIA チップセットに
       ついては、私はデータシートを持っていないので何とも申し上げられません。

       (訳注: md については、JF の ROOT RAID HOWTO 等を参照してください)

       Mark Lord の作成した Linux IDE (U)DMA カーネルドライバは、特にセットアップ
       タイム (たとえばデータ転送のレイテンシ) の値が小さくなっています。
       これは (Linux ニュースサーバのような) 小さなデータ転送が頻繁に起こるような
       環境では効果的です。
       場合によっては性能面で SCSI をも上回ることもあるでしょう。

  9.  それでも動かないとき

  もし、この文書が全く役に立たなかったら、または何かうまくいかないところ
  があったら、どこでつまづいているのか、使用している UDMA コントローラ (
  オンボードでもアダプタカードでも) は何か、ハードディスクは本当に UDMA
  に対応しているのか (それともただの EIDE なのか)、どこにどういうドライ
  ブを接続しているのか (全てのドライブについて)、Linux のバージョン (
  ディストリビューション名とカーネルのバージョンも) は何か、その他の役に
  立ちそうなことを具体的に書き、 comp.os.linux.hardware に投稿してみてく
  ださい。すぐに役に立つ情報が得られるのではないかと思います。

  10.  このmini-HOWTOに書かれていないUDMAについての情報を持っている。

  すばらしい! 私の知らない情報をお持ちなら、ぜひ私 (brion@pobox.com) 宛
  てに送ってください。すぐにこの文書に反映させたいと思います。

  (訳注: 日本語版に関してお気づきの点等ありましたら、中野 正剛 sx3m-
  nkn@asahi-net.or.jp までお知らせください。なお、この文書の作成に当たっ
  て有益なご助言をいただいた、中野 武雄 さんほか JF の皆さんに感謝いたし
  ます。)

