## Linux ATA RAID HOWTO

Murty
Rompalli

               murty@solar.m u r t y.n e t

芳賀
靖史
日本語訳

    yasufumi.haga@nifty.com

2.0
2002年 5月 10日
mr
主要な拡張
1.3
2002年 5月 7日
jyg
フォーマット修正
1.2
2002年 4月 30日
mr
細かい修正
1.1
2002年 4月 28日
ldl
いくつかの細かい修正、sgml の改善
1.0
2002年 4月 26日
mr
初版
2002年 4月 26日

RAID は今ではもう、高価な SCSI ディスクに限った話ではありません。 マザーボードメーカーは安価な IDE ディスク用に、 オンボードで RAID をサポートするマザーボードを、 どんどん売り出しています。これを ATA RAID といいます。 Promise Technology 社と HighPoint 社は、 そういう ATA RAID 市場で優位に立っている 2 社です。 この HOWTO 文書では、 インテルのペンティアム互換で、 （オンボード、あるいは個別のカードで）ATA RAID コントローラが付き、 シングルプロセッサ、ないしはマルチプロセッサになっており、 最低でもハードディスクが 2 台付いている、 そういうコンピュータに Linux をインストールする方法について説明しています。 現時点でこの文書が扱っているのは、 Promise FastTrack ATA RAID コントローラが付いたマシンに、 RedHat Linux 7.2 をインストールする場合のことだけです。

## はじめに

この HOWTO の目標は、 2 台のハードディスクで RAID 1 （ミラーリング）を設定し、 ミラーデバイスにブート可能な RedHat Linux オペレーティングシステムをインストールする方法を説明することです。 この目標を達成するため、次の二種類の方法を論じます。 1. Promise 社が提供しているドライバを使う。 2. Linux 本来の RAID を使う。 （Promise 社が提供しているドライバを使うという）最初の方法を選択する場合は、 RedHat 7.2 の CD に付いてくる、2.4.7-10 のカーネルを使わなければなりません。 一方、二番目の方法を選べば、最新のカーネル (2.4.18) にアップグレードできます。 ストライピングや他のディスク構成については、この文書では論じません。 でも筆者はそういった構成を作る時にも、この文書が役立つことがあるだろうと考えています。この文書でまだ扱っていないのは次のようなことです。 1. LILO ではなく、GRUB を使ってインストールする。 2. 最新の開発版カーネル (2.5.x) にインストールする。

まず最初に、難解な法律用語がちょぴり必要です。 最近の開発では、これがとても大事だということが証明されています。

### 著作権に関する情報

この部分の日本語訳は参考です。 正式なものは英文を読んで下さい。

© 2002 Murty Rompalli

This document is copyrighted © 2002 Murty Rompalli and is distributed under the terms of the GNU Free Documentation License and additional terms described below.

本文書の著作権(c) 2002 は Murty Rompalli が有しており、 GNU フリー文書利用許諾契約書 および下記の付加条件の下で配布する。

This Linux HOWTO document may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

本 Linux HOWTO 文書は、その全体ないし一部を、 物理的ないし電子的な如何なる媒体で再作成し、配布してもよい。 ただし、そのすべての複製には、 この著作権告知をそのままの形で掲載すること。 営利目的の再配布は、これを許可し、奨励するが、 そのような目的で配布する場合は著者に届け出てもらいたい。

All translations, derivative works, or aggregate works incorporating this Linux HOWTO document must be covered under this copyright notice. That is, you may not produce a derivative work from this HOWTO document and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at this address linux-howto@metalab.unc.edu.

本 Linux HOWTO 文書を組み込んだすべての翻訳物、派生物、 集積物は、この著作権告知の下で保護しなければならない。 すなわち、本 Linux HOWTO 文書を下に派生物を作成し、 その派生物の配布に際して、新たな制限を課してはならない。 条件によってはこの規定に対する例外も認められるので、 linux-howto@metalab.unc.edu 宛てで、 Linux HOWTO コーディネータに連絡をとってもらいたい。

In short, the author wishes to promote dissemination of this information through as many channels as possible but wish to retain copyright on this HOWTO document, and would like to be notified of any plans to redistribute this HOWTO document.

要約すれば、著者は可能な限りのチャネルを通じて、 この情報の普及をはかりたいが、 本 HOWTO 文書に関する著作権はそのまま保持したいと願っている。 それに、本 HOWTO 文書の再配布に関する如何なる案についても、 届け出てもらいたいのである。

### 免責条項

本文書の内容に対しては、如何なる責任も負いません。 その内容、例、その他諸々については、 ご自分の責任に於いて使用してください。 この文書は新しい版なので、 エラーや不正確な部分があるかもしれませんし、 その場合は、むろん皆さんのシステムに被害を与えることがあります。 ですから注意して進めて下さい。 その結果、まったく成功しそうになくても、 著者はそのことに対しては、なんら責任は負いません。

All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.

すべての著作権は、他に特に明記しない限り、 各々の所有者が保持しています。 本文書における用語の使用は、 商品商標、役務商標のいずれの合法性も犯さないものとします。

特定の商品名やブランド名を挙げても、 それらを推奨するものではありません。

危険を伴うインストールを行なう前には、 ご自分のシステムのバックアップを取り、 また定期的にバックアップを取ることを強くお奨めします。

### 新しい版について

本 HOWTO の最新版は、 http://www.murty.net/ataraid/ にある、著者のウェブサイトにあるので、 いつでも利用できます。 あるいは murty at solar . murty . net 宛てで、 著者に直接連絡して、 新しい版がないかどうか確認してもかまいません。

現時点では、本文書が利用可能なフォーマットは次のとおりです。

- HTML.

- プレーンテキスト.

- Adobe PDF.

- gzip で圧縮したポストスクリプト （US レター形式）.

- SGML ソース.

- gzip で圧縮した DVI ファイル.

- gzip で圧縮した TeX (jadetex で使用).

用紙の大きさですが、 これは様々なものが世界中で使われていることを覚えておいて下さい。 例えば、A4 と US レターはまったく違っています。 こうなると、ユニバーサルフォーマット (8.27x11in; 210x279mm) を使おうという気持ちも起きようというものです。

### 謝辞

貢献していただければ、お名前をここに載せますよ :)

Luc de Louw <luc at delouw.ch> SGML ソースのエラーを訂正してくれました。

Joy Y Goodreau <joyg at us.ibm.com> SGML ソースのエラーを訂正してくれました。

この版にて、次の方には是非謝意を述べさせていただきたいと思います。

Alain Portal <alain.portal at free.fr>, Service Commun de Microscopie Electronique の方で、査読と訂正を行なっていただきました。

### フィードバック

本文書に関するフィードバックは、無論大歓迎です。 今この文書が存在するのは、皆さんからのご意見があればこそなんです。 追加したいことやご意見、ご批評などは、 どうか次の宛先まで、電子メールでお願いします： murty at solar. murty . net。

### 翻訳について

英語をお使いにならない、 他の国々のユーザーの方々に、どうか援助をお願いします。 本文書を積極的に他国の言語に翻訳して下さい。 本文書を他言語に翻訳したり、翻訳したいと思っている方は、 どうか著者に知らせて下さい。 以下の翻訳作業が既に進行中です。

- フランス語訳がもうすぐ完成です。Alain Portal に感謝します。

## 必要条件

本節では、インストール開始前に準備するものを挙げていきます。

- DOS 形式でフォーマットした、未使用のフロッピーディスクを 2 枚。 Linux が動作しているコンピュータなら、 `mkfs.msdos /dev/fd0` とタイプすればフォーマットできます。

- Red Hat Linux 7.2 の CD1 とCD2（CD3 と CD4 に入っているのは SRPMS なので、不要です）

- インターネットに接続済みで、使用できること

- 動作する CD-ROM ドライブ装備で、 フロッピーディスクドライブ、 10Mbps/100Mbps のイーサネットカードをサポートしているコンピュータ

- 忍耐

## Promise 社のドライバーが入ったフロッピーディスクの準備

1. 下記の 2 サイトのいずれかから、適切なドライバをダウンロードし、 用意したフロッピーディスクに保存して下さい。 インターネットにつながっているコンピュータなら、どれでもできます。

   - シングルプロセッサ機用ドライバ

   - マルチプロセッサ機用ドライバ

2. このドライバの tar ボールが入ったフロッピーディスクを、 Linux が動作しているコンピュータのフロッピーディスクドライブに挿入し、 次のようにタイプして下さい。

       mount /dev/fd0 /mnt/floppy
       cd /mnt/floppy
       cp rhsmp-ft12014.tgz /tmp
       tar xvzf /tmp/rhsmp-ft12014.tgz
       cd /
       umount /mnt/floppy

3. 「Promise FastTrack ドライバ」と書いたラベルをフロッピーディスクに貼り、 いったん脇に置いておいてください。

## RedHat 7.2 CD の準備

### 注意

すでに Red Hat Linux 7.2 の CD1 と CD2 をお持ちなら、 この段階は飛ばして下さい。 それ以外は、ここを読んで、無料で入手する方法を覚えて下さい。

1. CD ライタードライブを正しく装備している Windows コンピュータにログオンしてください。 そして未使用の CD-R をその CD ライターに挿入してください。

2. ブラウザーで 次の Red Hat のウェブサイトを開きます： ftp://ftp.redhat.com/pub/redhat/linux/7.2/en/iso/i386/

3. `enigma-disc1.iso` というファイル（Red Hat 7.2 の最初のディスク）を見つけたら、 このファイルを Winodws のデスクトップに保存して下さい。

4. デスクトップに保存した iso イメージ上で、マウスの右ボタンをクリックし、 "Record to CD（訳注：「CD に記録」）を選択します。 すると iso イメージが CD-R に書かれ、ディスク 1 ができます。

5. ftp.redhat.com/pub に、 `enigma-disc2.iso` という名前で、二番目の iso ファイルがあるので、 これについても同じ手順を繰り返します。

6. できた CD-R が本当に読めるかどうか確かめて下さい。 "My Computer（訳注：Windows のデスクトップにある「マイコンピュータ」アイコン）"をクリックし、 その中にある CD ライタードライブのアイコンをクリックします。 これで CD-R の中身が見えるはずです。

7. RH 7.2 disk-1 および RH 7.2 disk-2 という CD-R のラベルを正しく作って、 貼って下さい。

## Red Hat 7.2 のインストール

この CD ができてしまえば、 自分の Linux システムに Red Hat 7.2 のインストールを始める準備は完了です。

1. コンピュータを再起動してください。そして画面上に FastTrack BIOS のプロンプトが出たら、 Cntrl-F を押して下さい。これで Promise FastTrack BIOS の設定画面に入ります。

2. BIOS の設定画面で、 "delete array," と "define array," および "choose Mirror." を選択します。

そして、Cntrl-Y を押して保存します。

- "Create Only" を選択後、ESC を押してリブートして下さい。 リブートが始まると、 今度は Promise FastTrack には、FastTrack コントローラにつながっている 2 台のハードディスクに、 1x2 の RAID Mirror が定義されているのが分かるはずです。

- Red Hat 7.2 のディスク 1 を CD-ROM ドライブに入れて、リブートします。

- ブートのプロンプトが出たら、次のようにタイプして下さい。

      linux noprobe

- さあ、インストールが始まります。"Add device（訳注：デバイスの追加）" を選んでください。 そして使用可能なドライバ一覧に Promise FastTrack があるかどうか確かめて下さい。 載っていなければ、F2 を押して、 フロッピーディスクから外部のドライバをロードします。 Promise FastTrack ドライバが入ったフロッピーディスクをフロッピーディスクドライブに挿入して、 "OK" を押して下さい。

- インストールを続けます。 パーティションは、さしあたり ext3 だけを選んで下さい。 ext2 が本当に必要なら、一番最後で作れます。

- 初めてブートフロッピーを作る場合は、 未使用のブートフロッピーディスクを挿入して下さい。 Red Hat のインストールプログラムがブートフロッピーディスクを作ってくれます。

  ### 注意

  "Skip boot disk creation（訳注：ブートディスク作成を飛ばす）" はクリックしないで下さい。 この段階を飛ばすと、もうブートフロッピーディスクは作れないので、 後できっと大変後悔することになります。

- インストールでブートローダーの設定になったら、選ぶのはどうか "LILO" だけにして、 GRUB をブートローダーにするのは止めて下さい。

  インストールが終ると、今度は「設定」画面になります。

- Cntrl-ALT-F2 を押して、 `tty2` に切替えて下さい。

- シェルのプロンプトで、次のようにタイプします：

      cd /mnt/sysimage/lib/modules/2.4.7-10/kernel/drivers/scsi

- `ls` とタイプして、 `ft.o` が存在することを確認して下さい。 無い場合は次のようにして、 手作業で `ft.o` というモジュールをインストールする必要があります。

  1. ドライバのフロッピーディスクがマウントされていることを確認して下さい。 フロッピーディスクのディレクトリに移り、 次のようにタイプします：

         mv module.cgz /tmp
         cd /tmp
         gzip -dc module.cgz | cpio -idumv

  2. これで、 `/tmp` の下に、 一群のディレクトリができたことがわかります。

         cd /tmp/`uname -r`
         cp ft.o /mnt/sysimage/lib/modules/`uname -r`/kernel/drivers/scsi

  3. シェルプロンプトで、次のようにタイプして下さい：

         less /mnt/sysimage/etc/lilo.conf

     これで、`lilo.conf` が正しそうかどうか調べて下さい。 特に、 `initrd=`行と、 それに対応する `initrd.img` ファイルが、 `/mnt/sysimage/boot` ディレクトリ下に存在しなければなりません。 これが無い場合は、次のようにして、手作業で作って下さい。

         /mnt/sysimage/usr/sbin/chroot /mnt/sysimage /sbin/mkinitrd \
         --preload jbd \
         --preload ext3 \
         --preload scsi_mod \
         --with ft \
         /boot/initrd.img 2.4.7-10

- では、フロッピーディスクと CD を抜いて、リブートしましょう。 この時、自分のコンピュータが無事に起動するよう、お祈りを捧げて下さい。

- ブートしない場合は、ブートフロッピーを入れてリブートし、 ログインしてください。それから以下のようにして修復します。

  1. `/boot/initrd.img` が存在することを確認して下さい。 それから、 `/lib/modules/2.4.7-10/kernel/drivers/scsi/ft.o` が存在することも確認して下さい （無ければ、先に説明したように、 こういったことを手動で直さなければなりません）。

  2. `/sbin/lilo` とタイプして下さい。

  3. では、フロッピーディスクを抜いてリブートしましょう。 Promise ドライバを使った新しいマシンでブートするはずです。

- `df -k` とタイプして下さい。 ハードディスクが、`/dev/hdaX` ではなく、 `/dev/sdaX` になっているのがわかるでしょう。 どうしてかというと、 Promise ドライバが厳密な意味でのハードウェア RAID ではなく、 実際には、ソフトウェアエミュレーション RAID の特別なタイプだからです。 （Promise RAID は BIOS のハックを通して動作します）

お使いのマシンが SMP の場合、 ユニプロセッサカーネルで起動する場合は、以下に示すように、 `initrdsmp.img` を手作業で作らなければなりません。

1. ご自分のマシンを `2.4.7-10` のユニプロセッサカーネルでブートする場合は、 以下のようにタイプして、 `2.4.7-10` カーネルで使用する `initrdsmp.img` を作って下さい。

       /sbin/mkinitrd \
       --preload jbd \
       --preload ext3 \
       --preload scsi_mod \
       --with ft \
       /boot/initrdsmp.img 2.4.7-10smp

   ### 注意

   initrd ファイルを作るコマンドを覚えるのが嫌なら、 筆者のスクリプト geninitrd をダウンロードして、手元に置いておいてください。

2. `2.4.7-10smp`（SMP カーネルセクション）用に、 適宜 `/etc/lilo.conf` を調整し、 `/sbin/lilo` とタイプして、 SMP カーネルでリブートして下さい。 `/etc/lilo.conf` がどのようになるかは、ここに示してあります。

これで、マルチプロセッサの場合の、 ちゃんと動く、SMP サポート付きの Red Hat 7.2 のマシンができました。 SCSI エミュレーションを使った、 Promise FastTrack の疑似ハードウェア RAID が動いていることに満足なら、 この先は読まなくてもかまいません。

Promise ドライバは SCSI エミュレーションなので、 CPU にかなり負荷をかけます。 ですから、Linux 本来の、本当の RAID を使い、 Promise の SCSI エミュレーションは止めたければ、 このまま読み続けて下さい。

## Linux 本来の RAID のインストール

最初に必要なのは、ネットワークの設定とインターネットへの接続です。 この時点ではまだ、Promise ドライバの SCSI エミュレーションで動作中です。 次に Linux 本来の RAID をインストールします。

1. www.kernel.org へ行って、 最新カーネル `2.4.18.tar.gz` をダウンロードして下さい。

2. カーネルの構成を行ないます。

       cd /usr/src/
       tar xvzf linux-2.4.18.tar.gz

       cd linux                 # tar で作ったばかりの、カーネルソースディレクトリに移る
       cp config.txt .config    #（下記の注意を見て、config.txt の入手先を見つけること）
       make menuconfig

   ### 注意

   実際にちゃんと動作する `cnofig.txt` は、 ここ からダウンロードできます。 無論、自分の要求に合うように、 テキストエディタで直接修正してもいいし、 先に説明したように、`make menuconfig` とタイプしてもかまいません。 でも、vi とか emacs で直接 `.config` を直そうとすると、間違いが起きやすくなります。 ですからお勧めなのは、 `make menuconfig` とタイプして、メニューインタフェースを使うことです。

3. カーネルの以下のオプションをすべて（モジュールではなく） 直接組み込むようにして下さい。

         ATA/IDE/MFM/RLL Support -->
       	<*> ATA/IDE/MFM/RLL Support
       	IDE/ATA/ATAPI Block Devices -->
       		<*> Enhanced ATA/IDE/MFM/RLL disk/cdrom/tape/floppy support
       		<*> Include IDE/ATA-2 Disk Support
       		[*] Use multi-mode by default
       		Include IDE/ATAPI CDROM support
       		[*] Generic PCI IDE chipset support
       			[*] Sharing PCI IDE interrupt support
       			[*] Generic PCI Bus master DMA support
       			[*] Use PCI DMA by default when available
       			[*] Intel PIIXn chipset support
       				[*] PIIXn tuning support
       		[*] Promise PDC202{46|62|65|67|68} support
       			[*] Special UDMA Feature
       			[*] Special FastTrack Feature
       		[*] VIA 82CXXX chipset support
       		<*> Support for IDE RAID controllers
       			<*> Support Promise Software RAID (fasttrack)

4. 上記のように、組み込むように設定したら、 自分の環境に合わせて、他に必要な部分を変更して下さい。

5. 変更が終ったら、そのカーネルの構成情報を保存して下さい。 現在のディレクトリの `.config` に保存されます。 このファイルは、ぜひバックアップを取っておいて下さい。 取らないと、後で後悔しますよ。 `.config` ファイルを未使用のフロッピーディスクか、 `/root` にコピーしてください。

6. いつもやっているようにして、カーネルをビルドし、 インストールします。次のようにタイプすればいいでしょう。

       make dep ; make clean ; make && make install
       make modules && make modules_install

`/etc/lilo.conf` を眺めて、新しいカーネル 2.4.18 がブートするように、 行が新たに追加されていることを確認して下さい。 この新しいカーネルに関しては、 `/etc/lilo.conf` には `initrd=` 行が無いということに注意して下さい。 つまり、現在の 2.4.7-10 カーネルとは違って、 この新しいカーネルは `initrd.img` に頼らずに、自分でブートします。

では、`/etc/lilo.conf` を以下のように調整しましょう。

1. `/etc/lilo.conf` にある、新しいカーネル用の root=/dev/sdaX という行を見つけて、 そこを `root=/dev/ataraid/d0pX` というように変更します。`X` というのは、 `1` から `16` までの数字です。 そして、変更内容を保存します。

2. 次のようにタイプします。

       /sbin/lilo

3. インストール中に ext2 パーティションを選んでいた場合は、 さしあたり、`/etc/fstab` にある、ext2 がある行をコメントにして下さい。 （一番良いのは、この全工程について、ext2 を忘れ去ることです）

4. フロッピーディスクと CD をすべて抜きとり、 以下のようにタイプしてリブートします。

       sync;sync;reboot

5. LILO のプロンプトが出たら、 `2.4.18` に対応する、新しいカーネルのラベルをタイプします。

6. ブートが終ったらログインし、 `df -k` とタイプして、 そこにあるエントリが、 以前の `/dev/sdaX` から `/dev/ataraid/d0X` に変わったことを確認して下さい。

   ### 注意

   新しいカーネルのブート時に、 スワップデバイスのマウントに関するエラーがいくつか出るかもしれません。 これは無害です。 でも、`/etc/fstab` を修正して、 `sdaX` のエントリは、 いずれも `ataraid/d0pX` エントリに変える方がいいでしょう。

7. では、コンピュータをインターネットにつないで、 `lilo-22.tar.gz` （lilo プログラムの最新版）をダウンロードしましょう。

8. 次のようにタイプして、コンピュータから既存の lilo を削除します。 `rpm -e --nodeps lilo`

9. 以下のようにして、lilo の新しいバージョンをインストールします。

       tar xvzf lilo-22.tar.gz

       cd lilo-22	# tar で作ったばかりの、lilo のソースディレクトリに移る
       ./QuickInst.sh

10. システムからの質問には "Yes" と答えて下さい。

11. `/sbin/lilo` が作成されないというのは別ですが、 それ以外のエラーは無視して下さい。

12. 以下のように、`/etc/lilo.conf` を調整します。

    - `linear` を `lba32` に置き換えます。

    - "`compact`" の行を削除します。

    - `vga=` の行を、 `vga=normal` に変えます。

    - `boot=/dev/sda` の行を、 `boot=/dev/ataraid/dN` に変えます（`N` はルートファイルシステムが存在するパーティション番号です。 `df -k /` とタイプして、ルートパーティション番号を見つけて下さい）。

    - `default=linux-2.4.18` になっていることを確認して下さい。 （`linux-2.4.18` というのは、新しいカーネルをブートするのに指定したラベル `2.4.18` のことです）。

13. 変更内容をファイルに保存して、`/sbin/lilo` とタイプします。

14. システムをリブートし、幸運を待ちましょう。

`/etc/lilo.conf` は、最終的にこのようになります。

何もかも無事に行きましたね。 なら、祝宴だ！！

## 既存の Linux システムでのインストール

本節では運用中の Linux 機にあるかもしれない非 OS のディスクに、 Linux 本来の ATA RAID をインストールする方法を説明します。 ちなみに、非 OS ディスクというのは、 `/`, `/usr`, `/var`, `/boot` といった、Linux OS のパーティションが何も含まれていないディスクのことです。 言い換えれば、自由に使えるディスクが 2 台付いた、動作中の Linux 機があり、 その 2 台のディスクに ATA RAID ミラー （RAID 1）を設定したいわけです。 大切なデータをミラーデバイスに保存すれば、 そのデータは保護されます。 もちろん、他の RAID 1 同様、 データの読み込み中は、読み込み速度が改善しているのがわかるし、 ミラーデバイス上のデータを修正したり、そこに新しいデータを追加すれば、 書き込み速度が若干低下するのもわかります。 ですから、データディスクに対して、 書き込みよりも読み取りを頻繁に行なう場合は、 データディスクに RAID 1 を使うことをお勧めします。 サイトを滅多に変えないウェブサーバーのホスティングが良い例です。 そこでは、ウェブのコンテンツは滅多に修正されませんが、 かなり頻繁にユーザーのアクセスがあります。

以下は、お使いの RAID チップが Promise Technology 社製の場合に、 ATA RAID を非 OS ディスクにインストールする手順です。

- お使いの Promise RAID チップ／カードの、 IO アドレス番号と IRQ 番号を見つけて下さい。

- 次に、`/etc/lilo.conf` を修正して、 適切な Append 行 を追加します。

- そして、ataraid サポートを有効にします。 これは、Linux 機のスタートアップ時に ataraid モジュールを自動的にロードするか、 あるいはカーネルに ataraid サポートを組み込んでしまうか、 このいずれかで行ないます。

### Append 行

Promise FastTrack RAID も含めて、 アップグレードや障害復旧といったような、様々な作業を理解するため、 新たに Append 行 というものを導入します。

ブート時に LILO の boot: でわたす `ide` オプションはすべて、 文字列として一つにまとまると、 Append 行 を構成します。 `/etc/lilo.conf` の `append=` キーワード以降にある、 二重引用符で囲まれた `ide` オプションもすべて、 Append 行 を構成するものです。

例えば、Linux コンピュータのブート時に、boot: プロンプトで、

`linux-new ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none nousb expert root=/dev/hda3`

とタイプすると、Append 行 は次のような文字列になります。

ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none.

同様に、`/etc/lilo.conf` に次のようなセクションがあれば、

    image=/boot/vmlinuz-2.4.9-10
    	label=linuxold
    	read-only
    	root=/dev/hde9
    	append="nousb ide2=0x9400,0x9002 ide3=0x8800,0x8402"
    	initrd="initrd.img"

Append 行 は以下のようになります。

ide2=0x9400,0x9002 ide3=0x8800,0x8402.

RAID を使った Linux 機のブートに関する問題に遭遇する場合、 適切な Append 行 を使わざるを得ない場合があります。 ですから、Append 行 がどういうものかを決定し、 それを書き留めておくことが大事なことになります。 こうしておけば、後に障害復旧の際に役立つし、 カーネルを簡単にアップグレードしたり、 ハードディスクの追加／撤去を行なう時にも助かります。

### Append 行の決定

正しい Append 行 を決めるには、 まず最初に、すべての `ide` デバイスがどういうふうに接続されているのかを知っておく必要があります。 IDE デバイスは、ハードディスクでもいいし、ATAPI CDROM や その他のデバイス でもかまいません いったん Append 行 を決めてしまえば、 （ブート時の）boot: オプションに追加できるし、 あるいは `/etc/lilo.conf` の append パラメータに、文字列として割り当てることもできます。 この込み入った boot: オプションを覚えておいて、 毎回ブート時にそれをタイプするのが大好きなら別ですけど、 そうでなければ、二番目のやり方の方がいいでしょうね。 つまり、 `/etc/lilo.conf` にそのオプションを書いておきます。 `append="`自分の Append 行をここに書く`"` を追加して、そのファイルを保存し、それから `/sbin/lilo` コマンドを実行して、 新しい `/etc/lilo.conf` を有効にします。

理解を深めるため、 `ide` デバイスが次のようになっているとしましょう。

ide0
: `hda` , `hdb`（ハードディスク）

- `ide1`: `hdc` , `hdd` （ハードディスク、あるいは CDROM のような他のデバイス）

- `ide2`: `hde` （最初の空きディスク）

- `ide3`: `hdg` （二番目の空きディスク）

上記 2 台の空きディスク （`hde` と `hdg`） は、RAID 1 にしたいと思っているディスクで、 そこに、`/dev/ataraid/d0` という raid デバイスを作ります。 ここで `hdf` も `hdh` も 無いことに注意して下さい。 これが Promise チップ上で IDE/RAID ポートを使うやり方だからです。 2 台のハードディスクを同一の Promise コントローラの IDE ポートに接続するのは、 賢いやりかたじゃないですね。 上記の例で言えば、Promise Technology 社のカード上で、 プライマリマスターとセカンダリマスターに接続して使用しました。

自分のコンピュータにつながっている `ide` がどれほど多種多様なのか知らなければ、 `/proc/devices` や `/proc/ide/*` に目を通してみて下さい。 ブートログファイル `/var/log/bootlog` を念入りに調べるのも良いでしょう （あるいは、Linux システムのブート直後に、 `dmesg | more` とタイプしてもかまいません）。 こうすれば、使っている `ide` がわかります。 では、`less /proc/pci` とタイプして、 Promise Technology に関する適当な情報を見つけましょう。 `less /proc/pci` の出力だと、 Promise チップに関する以下のような情報がどこかにあります。

     Bus  0, device  17, function  0:
        Unknown mass storage controller: Promise Technology Unknown device (rev 2).
          Vendor id=105a. Device id=d30.
          Medium devsel.  IRQ 10.  Master Capable.  Latency=32.
          I/O at 0x9400 [0x9401].
          I/O at 0x9000 [0x9001].
          I/O at 0x8800 [0x8801].
          I/O at 0x8400 [0x8401].
          I/O at 0x8000 [0x8001].
          Non-prefetchable 32 bit memory at 0xd5800000 [0xd5800000].

この出力から分かるのは、 Promise Technology カードが両方の `ide` ポート （`ide2` と `ide3`） で IRQ 10 を使っているということです。 カーネルが PCI の IRQ 共有をサポートしている限り、 同じ IRQ を使ってもまったく大丈夫です。 Linux カーネルは、 デフォルトで PCI IRQ 共有をサポートするように設定されているんです。 また、このカードがいろんな IO アドレスを使っていることも分かります。 ブート時に Promise Technology 社製のディスクを正しく識別するために必要なのは、 IRQ 番号と、[ ] の外にある IO アドレス番号だけです。 この情報を紙に書いておいて下さい。 上記の出力の場合に書いておくのは、次の事柄です。

    IRQ1 = 10
    IRQ2 = 10
    IO1 = 0x9400
    IO2 = 0x9000
    IO3 = 0x8800
    IO4 = 0x8400

さて、今度は以下の情報を評価して、 正しい Append 行 が得られるようにしなければなりません。 その後でこのAppend 行をブート時に指定するか、 lilo の設定ファイルに明記しましょう。

    ideX=IO1,IO2+0x0002,IRQ1 ideY=IO3,IO4+0x0002,IRQ2

    ここで、ideX と ideY というのは、
    空きディスクが使っている、
    Promise カードの二つの IDE ポートです。

この例では、上記の Append 行 は次のようになります。

`ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10`

例えば、`/etc/lilo.conf` に従って `linux` というラベルが付いた、 バージョン 2.4.18 のカーネルをブートしたければ、 次の二つの方法のいずれかで、Append 行 を指定します。

1. ブート時に指定する場合

       boot: linux ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10

   この方法を選んだ場合は、Linux 機をブートするたびに、 `linux` というラベルの後に、 手作業でAppend 行 をタイプして下さい。

2. `/etc/lilo.conf` に明記する場合

       image=/boot/vmlinuz-2.2.18
       	label=linux
       	read-only
       	root=/dev/hda1
       	append="ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10"

   この方法を選んだ場合は、変更内容を有効にするため、 `/sbin/lilo` とタイプして、 lilo を一回実行しなければなりません。 そうすれば、ブート時に余分に何もタイプする必要がなくなります。

### RAID 1 の設定

Promise Technology 社製の専用ドライバ (`ft.o`) を使って RAID 1 を構築したい場合は、 Promise ドライバ (`ft.o`) を `/lib/modules/カーネルバージョン` にダウンロードし、 `modprobe -k ft` とタイプすればモジュールがロードできます。 そうすれば、 `/dev/sdc` とかそういったもので、新しい raid デバイスにアクセスできるはずです。 でも、これがうまくいかない場合は、 Append Line の内容を決めて、 `/etc/lilo.conf` に追加して下さい。 でも、RAID を既存の Linux システムに構築し、 Promise Technology 社の `ft` ドライバか、 Linux 本来の `ataraid` ドライバのいずれかを使うつもりなら、 `/etc/lilo.conf` で Append Line を使うことを強くお勧めします。 お使いのカーネルに ataraid サポートを組み込んでいる場合は、 ataraid モジュールをロードする必要はありませんが、 それ以外の場合は、 Append Line が入っている 新しい `/etc/lilo.conf` でいったんリブートすれば、 どちらかのドライバ（Promise Technology 社製のドライバ `ft.o` か、Linux 本来の RAID モジュール） をロードして、RAID を有効にできます。

お勧めは Linux 本来の RAID なので、これを詳細に見ていきましょう。 既存の Linux 機で Linux 本来の RAID を構築するには、 先に説明したように、`/etc/lilo.conf` に Append 行 を追加します。 では、`/sbin/lilo` とタイプして、変更内容を有効にして下さい。 続いてコンピュータをリブートします。 カーネルに ataraid サポートを組み込んでいなかったり、 `ataraid.o` モジュールが何らかに理由でロードに失敗した場合は、 リブート後、手作業で ataraid モジュールをロードしてください。 ataraid サポートをカーネル組み込みでコンパイルした場合 （この場合、ataraid はモジュールではありません）は、 すぐにフォーマットにかかって、ミラーディスク `/dev/ataraid/d0` を使いだせます。

でも、ataraid をモジュールとして別にコンパイルしている場合は、 `lsmod` とタイプして、 ataraid が表示されるのを確認して下さい。 表示されない場合は、 `modprobe -k ataraid` とタイプして、 手作業でそのモジュールをロードして下さい。 何もエラーが無ければ、 すぐにミラーディスク `/dev/ataraid/d0` を使い始めてかまいません。 いつもやっているように、フォーマットし、マウントしてから、使って下さい。

`/dev/ataraid/d0` が使えるということは、 やるべきことをうまくやり遂げたということになります。 ですから、 `/dev/hde` や `/dev/hdg`、それに 他のパーティションには、どうか直接アクセスしないで下さい。 Linux 自体ではできますが、それは止めて下さい。 いったん 2 台のディスクからミラーデバイスを作ったら、 直接ディスクをアクセスするのではなく、 必ずミラーディスクをアクセスするようにして下さい。

## カーネルのアップグレード

Promise FastTrack RAID を装備した、Linux 機のカーネルをアップグレードしようとするのは、 本節を念入りに読んでからにして下さい。 どのような形であれ、まったく Promise FastTrack を使っていないのなら別ですが、 使っている場合は、問題を回避するのにこの情報が必要になります。

カーネルのアップグレードは、 必ずデータのバックアップを取ってから行なって下さい。 また、`/etc/fstab` と `/etc/lilo.conf`, `/boot/vmlinuz-currentversion` それに、（もし initrdを使用していれば） `/boot/initrd.img` もバックアップを取って下さい。 カーネルをアップグレードする際は、 `/boot` 内の古いカーネルと、 その依存関係にあるファイル、 それに `/etc/lilo.conf` 内の対応する行は削除しないで下さい。 カーネルを、例えば 2.4.19 にアップグレードする場合は、 `/etc/lilo.conf` に別のカーネルセクションを作るだけにして下さい。 例えば、以下の行を `/etc/lilo.conf` に追加します。

    # 新品のカーネル 2.4.19 ブート用コードの開始

    image=/boot/vmlinuz-2.4.19
    	label=linux-new
    	read-only
    	root=/dev/ataraid/d0p12

    # 新品のカーネル 2.4.19 ブート用コードの終了

それに、boot: プロンプトで `linux-new` とタイプして （あるいは curses メニューモードで LILO を使っていれば、 メニューで強調表示されている `linux-new` を選んで）、新しいカーネルがブートできない限り、 `/etc/lilo.conf` にある `default=linux` 行も変更しないで下さい。

では、次の四種類のケースで、カーネルをアップグレードする、 実際の過程を見ていきましょう。

1. Promise Technology (`ft`) ドライバを使っており、RAID ミラーに OS がある。

2. Promise Technology (`ft`) ドライバを使っており、RAID ミラーに OS 以外のデータがある。

3. Linux 本来の (`ataraid`) ドライバを使っており、RAID ミラーに OS がある。

4. Linux 本来の (`ataraid`) ドライバを使っており、RAID ミラーに OS 以外のデータがある。

OS というのは"Operating System （訳注：オペレーティングシステム）"、 具体的には、この場合 Red Hat Linux オペレーティングシステムのことです。 Linux を `/dev/ataraid/d0p1` といったような、 ミラーされているパーティション （Promise Technology の専用ドライバを使っている場合は、 `/dev/sda1`） にインストールする場合、 これは RAID ミラーに OS を入れておけということです。 Linux 機 の RAID にあるのが `/` や `/boot` といった、 主要なパーティションだけでも、 RAID に OS がある（一例）といいます。

でも、 `/mydata1` や `/imp`、それに `/scratch` といったような、 空いているパーティションを活用する目的で、 ユーザーが作成したパーティションには、 Linux をインストールしたり、何らかの 標準的な Linux ソフトウェアパッケージを アップグレードしても、 デフォルトでは、何のファイルもインストールされません。 ですからそういったパーティションは Linux OS の一部とは言えません。 そういったユーザーパーティションにあるデータは、 どれでもユーザーデータ、または 非 OS データとなります。 OS パーティションとして作成するのを、 ext3 タイプのパーティションとスワップファイルだけにしておくのは、 うまい考えです。 非 OS パーティションについては、ext2 とか dos のような、 他のファイルシステムにしてもかまいません （同じ Linux コンピュータ上に、 Windows のような別のオペレーティングシステムがあったり、 ただ単に dos が大好きなだけだったりする場合です）。 でも、その必要が無ければ、ext2 を使うこともないでしょう。 OS パーティションや非 OS パーティション用に、 ext3 というもっと良いものが使えるのですから。

### Promise Technology (`ft`) ドライバを使っており、 RAID ミラーに OS がある場合

現時点で Promise Technology がサポートしているのは、 Red Hat 7.2 までのバージョンだけです。 Red Hat 7.2 では、デフォルトで 2.4.7-10 カーネル を使用しています。また、Linux と Promise が提供している ドライバをインストールする場合には、 `/etc/lilo.conf` で initrd.img （初期 RAM ディスクイメージ） を使う必要があることも覚えておいて下さい。 インストール時には、Promise ドライバのスクリプトが、 自動的に initrd ファイルを作成して、 `/etc/lilo.conf` を設定することになっています。 ですが、あいにくこれがちゃんと動作しないので、 手作業で initrd.img を作成し、 `/etc/lilo.conf` を自分で設定する必要があります。

デフォルトのカーネル 2.4.7-10 は使わざるを得ないもので、 ソースのコンパイルも、 `up2date` ユーティリティや `rpm` ユーティリティといったような、 自動アップグレードプログラムを使ったアップグレードも、 できないし、やらないでください。 もし、実際ほんとうにカーネルのアップグレードが必要ならやってください。 でもその時は raid は使わないで下さい。 Section 7.2 で説明したように、 Append 行 を `/etc/lilo.conf` に追加し、 ataraid モジュールをロードしない （あるいは ataraid を組み込まないようにしてカーネルをコンパイルする） ようにすればよいわけです。 こうすれば、カーネルを新しいバージョンにアップグレードし、 Promise Technology カードを簡単な IDE 拡張カードに使っているので、 RAID 機能を断念することになります。

Promise Technology が、もしこの先 2.4.19 用に新しいバージョンの `ft` をリリースすれば、 その時に、まず （手作業でコンパイルせずに、 `up2date` とか `rpm` を使って） カーネルを 2.4.19 にアップグレードし、 そして、その新しいバージョンの `ft.o` ファイルを `/lib/modules/kernel-2.4.19` に置けばいいのです。 さらに、`initrd-2.4.19` を `/boot` に置き、 `initrd=` 行を `/etc/lilo.conf` の新しいカーネルセクションに追加する必要もあります。 ご自分の Linux 機で Promise Technology 社のドライバを使っている場合、 それは OS が RAID ミラー上にあり、 Promise Technology 社が新しいカーネル用の、 新しいバージョンのドライバをリリースしなかったということです。 ですから、今お使いのカーネルを弄ぶのは止めて下さい。 いじり回してしまうと、そのコンピュータに深刻なダメージを与えて、 ブートもデータの取り出しもできなくなってしまいます。 これは覚えておいて下さい。

### Promise Technology (`ft`) ドライバを使っており、 RAID ミラーに OS 以外のデータがある場合

先のケース （Promise Technology (`ft`) ドライバを使っており、 RAID ミラーに OS がある場合） の説明は、ほとんどすべてこのケースにも当てはまります。 もちろん、今度は危険が及ぶのが OS ではなくて、 OS 以外のデータだということは覚悟のうえでしょう。 つまり、アップグレードに失敗してしまうと、 ブートはできますが、 RAID パーティションにあるデータは見えなくなるということです。 その他に、Promise の専用ドライバ (`ft.o`) のロード／アンロードに融通がきくようになります。 しかし、Promise Technology のドライバには何かと厄介なことがあるので、 何事もなく動作するという保証は何もありません。

Promise Technology が、 新しいバージョンのカーネルにふさわしいドライバをリリースしない限り、 どのような方法でも、カーネルのアップグレードはやらないで下さい。 2.4.7-10 カーネルのままでやらなくてはいけません。 いくつかの事例でコンピュータをブートするということを Section 7.2 で論じたように、 ひょっとしたら、Append 行 を追加する必要があるかも知れません。

### Linux 本来の (ataraid) ドライバを使っており、 RAID ミラーに OS がある場合

この場合は、 2.4.18 以降のどのバージョンのカーネルにも、 アップグレードしてかまいませんが、 方法はカーネルの再コンパイルにして、 `up2date` ユーティリティや `rpm` ユーティリティといったような、 自動アップグレード手法は何も使わないで下さい。 アップグレードには、前バージョンのカーネルソースディレクトリ (`/usr/src/linux-2.4.18/.config`) にある .config ファイルが必要になります。 2.4.18 の .config ファイルは、間違いなく保存してありますよね？

`.config` を `/usr/src/linux-2.4.19` にコピーしたら、 `make menuconfig` とタイプして、変更してもかまいません。 しかし、2.4.19 にアップグレードするだけで、 マシンのハードウェアが変わったわけではないので、 通常は変更する必要はありません。 でも `make menuconfig` とタイプして変更する場合は、 修正した .config ファイルを保存しておき、 バックアップも取ることを忘れないで下さい。 /root や フロッピーディスクに、安全に保存しておいて下さい。 以下がその手順です。

- 新しいカーネルを `/usr/src` に展開し、 トップディレクトリ名を `linux-2.4.19` に変えます。 これで、新しいカーネルソースのディレクトリが `/usr/src/linux-2.4.19`になります。

- `cp /root/config.txt .config`

- `make menuconfig` （必要な変更を行ないます）

- `cp .config /root/config-2.4.19.txt` （安全な場所に設定ファイルをバックアップします）

- `make dep ; make clean ; make && make install` （新しいカーネルをインストールします）

- `make modules && make modules_install` （新しいカーネルモジュールをインストールします）

- `/etc/lilo.conf` を編集し、新しいカーネルをブートする行を、新たに追加します。 新しいカーネルのラベルは、`linux-new` にします。 `default=` 行と、 現在動作中のカーネルに対応した行は削除しないで下さい。

- `/sbin/lilo` （`/etc/lilo.conf`内の変更を有効にします）

- `/sbin/lilo -R linux-new` （`linux-new` をデフォルトのブートカーネルにするよう、一回だけ指示する。）

- `sync;sync;reboot` （リブートし、うまくいくと期待して下さい。もしブートしない場合は、 いったん電源を切ってから、再度電源を投入して下さい。 それからログインして、なぜカーネルがブートしなかったのか、調べて下さい）

### Linux 本来の (ataraid) ドライバを使っており、RAID ミラーに OS 以外データがある場合

こういう場合にカーネルをアップグレードするには、 前説（Linux 本来の (ataraid) ドライバを使っており、 RAID ミラーに OS がある場合） で説明したものと同じ手順に従います。 問題に遭遇した場合は、 Append 行 を `/etc/lilo.conf` に追加する必要があるかもしれません。 自分の Append 行 が何かを見つける場合は、 Section 7.2 を見て下さい。

前節と同じことですが、自動化している方法 (`up2date` ユーティリティとか `rpm` ユーティリティ) では、カーネルのアップグレードはしようとしないでください。 前節で説明したように、カーネルを手作業でコンパイルし、 インストールして下さい。

## Promise FastTrack の RAID 機能無効化

この節を読んでいるということは、 Promise Technology FastTrach カードや、 あるいはマザーボードのオンボードチップの、 （以前はquasi-hardware RAID と言っていた） 疑似 RAID 機能にうんざりしているのかもしれませんね。

### ケースその 1 ：RAID を使わない OS

Promise FastTrack の RAID 機能を無効にして、 普通の平凡な IDE カードで使うことはできます。 非常に簡単です。次の手順に従って下さい。

1. まず Append 行を 正確に決めて下さい。 わからなければ、 Section 7.2 を見て下さい。

2. `/etc/lilo.conf` を修正して、 現在のカーネルのブートセクションに、 `append="`Append 行`"` を追加して下さい。 繰り返しますが、詳細は Section 7.2 を見て下さい。

3. `/sbin/lilo` とタイプして、リブートして下さい。

さあ、これでハードディスクが分かれて見えるはずだし、使うこともできます。 これまでに RAID ミラーにパーティションを作っていた場合は、 二つのメンバーディスクの各々に、 適宜パーティションがあるのがわかるでしょう。 RAID ミラーに格納してあったデータがあるのもわかるはずです。

### ケースその 2：RAID を使っている OS

`/` や `/boot`、 `/usr`、それに etc を RAID パーティションで使っている Linux コンピュータの、 RAID を無効にしたければ、 まず最初に、 `/usr/src/linux/.config` や `/etc/fstab`、それに `/boot/vmlinux` を含むデータのバックアップを取って下さい。 そして電源を切り、それから電源を投入して下さい。 boot: プロンプトが出たら、 `linux` に続けて Append 行 をタイプして下さい。 システムがうまくブートしない場合は、 緊急用のレスキュー／ブートフロッピーディスクを入れて、 フロッピーディスクから立ち上げて、 boot: プロンプトで、 `linux` とタイプし、 続けて、Append 行 をタイプして下さい。 それでもブートできない場合は、 安全に RAID を無効にすることはできません。 つまり、RedHat CDROM #1 から立ち上げて、 Linux を再インストールするしかないということです。 繰り返しになりますが、 boot: プロンプトで、 `linux` とタイプし、 続けて Append 行 をタイプして下さい。

Linux 機のブートがうまくいったら、 まずデータがすべて使用可能で、正しいことを確認して下さい。 場合によっては、 `/boot` にあるテキスト形式の設定ファイルと、 LILO のバイナリファイルが壊れているかもしれません。 もし壊れていれば、バックアップからリストアするか、 `/etc/lilo.conf` を再設定して、 `/sbin/lilo` を実行し、 カーネルの再コンパイルと再インストールを行なう必要があります （再コンパイルには無修正の .config、 つまり Promise RAID サポートを入れていないものを使って下さい）。

Linux 機が立ち上がり、ファイルがすべて無事なら、 `/etc/lilo.conf` に Append 行 を追加し、 `/sbin/lilo` を実行してリブートして下さい。

OS ディスクの RAID を無効にしたけれども、 後でやはり RAID を使いたくなった場合は、 データをバックアップしてから、Linux を再インストールして下さい。 このように心変わりをして、 Linux の OS ディスクに RAID を戻したくなった場合、 現在のデータを犠牲にしなければならないかもしれません。

## Tips and Important Notes

- 先に説明したように、 RAID のインストールを完了させるのに、 わざわざ KDE / GNOME や他の X ウィンドウシステムを使わず、 単純な テキスト端末を使って下さい。

- Cntrl-ALT-Fj を押せば、 `ttyj` に切り替わります。 ただし、`j=1,2,..6`。

- ほんとうに KDE/GNOME、 あるいは他の X ウィンドウシステムをスタートさせる場合は、 `tty7` で走らせて下さい。 Cntrl-ALT-F7 を押せば、そこにアクセス できます。

- FastTrack RAID 用に、 Promise が提供している SCSI エミュレーションを使おうと決めているのなら、 バージョン 2.4.7-10 のカーネルを、 デフォルトで使わざるを得なくなることを覚えておいて下さい。 なぜなら、その他のソースコードは FastTrack では使えないからです。

- RH 7.2 のインストール中は、 選ぶファイルタイプは ext3 とスワップファイルだけにしてください。

- Promise の SCSI エミュレーションを止めて、Linux 本来の RAID を構築する場合、 `d0` という名前のミラーか、 `hde2`、`hdg3` 等々という名前の個々のディスクか、 そのいずれかのハードディスクへのアクセスが許可されます。 これは非常に重要なことですが、 絶対に直接ハードディスクに対して、その名前でアクセスしてはいけません。 その代わりに、対応するミラーパーティションをアクセスして下さい。 例：`/dev/hde3` や `/dev/hdg3` の代わりに、 `/dev/ataraid/d0p3` を使って下さい。

## 詳しい情報について

詳しい情報については、次のリソースを調べて下さい。

- http://www.geocities.com/ender7007/ にある Quasi-Mini-HowTo

- http://lhd.datapower.com/db/dispproduct.cgi?DISP?2751 にある LhD 製品のページ。 LhD Main Page に行って、 Promise FastTrack を検索することもできます。

- RedHat, Inc. の ATA RAID help document。 ataraid mailing list への参加もできるし、 the mailing list archive. で ataraid を検索することもできます。

- http://support.promise.com にある、Promise Technology 社のサポートウェブサイト。 このページ もチェックして下さい。

- Promise FastTrack の Linux Mandrake 用ヘルプは、 http://www.magic-lamp.org で利用できます。

## 日本語版謝辞

校正にあたり、JF プロジェクトの皆様にご協力いただきました。 特に、中谷千絵さんには貴重なアドバイスをいただきました。 この場を借りて御礼申し上げます。

## この文書の作り方

というわけで、どうやってこの HOWTO ができたか知りたいでしょ？ 皆さんはこの文書の SGML 版をダウンロードして、 中身をいくつか修正したのであれば、 どうやって HOWTO を作るんですか？ 知りたいですね。

筆者の場合は、最初に `nsgmls -s ataraid.sgml` とタイプして、 自分の SGML にエラーがないことを確認しました。 それから、`makehowto` というスクリプトを作って、 `./makehowto ataraid.sgml` というコマンドを実行しました。 以下が、`makehowto` スクリプトです。

    #!/bin/bash
    #
    # makehowto by Murty Rompalli
    # (c) All Rights Reserved

    # 非営利の使用については自由です。その他の目的で使用する場合は、すべて
    # 作者の許可が必要です。詳細は murty@solar.m u r t y.net 宛てに連絡して下さい。
    #

    function maketut() {
    echo;echo Creating Tutorial Files ...
    jade \
        -t sgml \
        -d /usr/lib/sgml/stylesheets/nwalsh-modular/html/ldp.dsl\#html \
        $1.sgml
    }

    function makehtml {
    echo;echo Creating html file: $1.html ...
    jade \
        -t sgml \
        -d /usr/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl \
        -V nochunks \
        $1.sgml > $1.html
    }

    function maketxt {
    	if [ -f $1.html ]
    	then
    		echo;echo Creating text file: $1.txt ...
    		lynx -dump $1.html > $1.txt
    	else
    		echo;echo $1.html not found, creating ...
    		makehtml $1
    		maketxt $1
    	fi
    }

    function makepdf {
    	[ -f $1.ps ] && gzip $1.ps

    	if [ -f $1.ps.gz ]
    	then
    		echo;echo Creating pdf file: $1.pdf ...
    		gzip -dc $1.ps.gz |
    		gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$1.pdf -
    	else
    		echo;echo $1.ps.gz not found creating ...
    		makeps $1
    		makepdf $1
    	fi
    }

    function maketex {
    echo;echo Creating TeX file $1.tex ...
    jade \
        -t tex \
        -d /usr/lib/sgml/stylesheets/cygnus-both.dsl\#print \
        $1.sgml
    gzip $1.tex
    echo $1.tex gzipped to $1.tex.gz
    }

    function makedvi {
    echo;echo Creating DVI file $1.dvi ...
    db2dvi $1.sgml  >/dev/null 2>&1
    echo See $1.log for errors
    gzip $1.dvi
    echo $1.dvi gzipped to $1.dvi.gz
    }

    function makeps {
    echo;echo Creating PS file $1.ps ...
    db2ps $1.sgml  >/dev/null 2>&1
    echo See $1.log for errors
    gzip $1.ps
    echo $1.ps gzipped to $1.ps.gz
    }

    #### メインプログラムの開始

    echo "
    makehowto utility for generating HOWTO from SGML file.
    (c) Murty Rompalli
    "

    [ x$1 = x ] &&
    echo "Error. Usage: $0 abc.sgml '{tut|html|pdf|tex|dvi|ps|all}'

    Option 'all' is default if sgml file is the only option supplied.

    Options:
    -------
    tut	Make complete tutorial, i.e., generate necessary html files
    html	Make a printable single HTML file
    pdf	Make a PDF file
    tex	Make a TeX source file, gzipped
    dvi	Make a DVI file, gzipped
    ps	Make a PostScript file, gzipped
    all	Generate all possible formats.

    " && exit

    file="`echo $1|sed 's/\.sgml$//'`"

    [ x$file = x ] &&
    echo Error. Usage: $0 abc.sgml '{tut|html|tex|dvi|ps|all}' && exit

    [ -f $file.sgml ] || {
    echo Error. $file.sgml does not exist
    exit
    }

    [ -r $file.sgml ] || {
    echo Error. $file.sgml not readable
    exit
    }

    if [ x$2 = x ]
    then
    	action=all
    else
    	action=$2
    fi

    case $action in
    tut|tutorial) maketut $file
    		;;
    html|htm) makehtml $file
    		;;
    tex|latex) maketex $file
    		;;
    dvi) makedvi $file
    		;;
    ps) makeps $file
    		;;
    text|txt) maketxt $file
    		;;
    pdf) makepdf $file
    		;;
    all) 	maketut $file
    	makehtml $file
    	maketex $file
    	makedvi $file
    	makeps $file
    	maketxt $file
    	makepdf $file
    	;;
    *) echo error
    	;;
    esac

    \rm -f $file.aux
    \rm -f $file.tex
    \rm -f $file.dvi

    echo;echo makehowto: Finished
    echo You can review $file.log and delete it.
    echo Thank you for using makehowto.
    echo

PDF 版を作りたいだけなら、 例えば、`./makehowto ataraid.sgml pdf` とタイプするだけでもかまいません。 `./makehowto` とだけタイプすれば、このスクリプトの使用法に関するヘルプが得られます。 この makehowto スクリプトをダウンロードする場合は、 ここをクリックして下さい。