既存のLILO によるマルチブート環境に Windows ME をインストールする方法 

第2版  2001年6月9日  R.川岸 <kawagisi@yk.rim.or.jp>


 目次

1. 概要
2. 重要:責任の放棄
3. 条件
4. 用意するもの
5. 手順
1. 概要
私は、20GB の EIDE ハードディスクに Windows 2000 と 7種類の Linux ディストリビューションの合計8個の OS をインストールし LILO で 切り替えてブートできる環境を構築し 1年半ほど運用してきました。参考:「20GBハードディスクで8個のOSをマルチブート」
ハードディスクは下記のような構成になっています。
/dev/hda1   3.0GB   [基本領域]  OS1: Windows 2000 [RC2]
/dev/hda2   2.0GB   [基本領域]  OS2: Linux(1)
/dev/hda3   2.0GB   [基本領域]  OS3: Linux(2)
/dev/hda4 (12.8GB)  [拡張領域]
/dev/hda5   0.2GB   [論理ドライブ]  OS4: Linux(3) /
/dev/hda6   0.2GB   [論理ドライブ]  OS5: Linux(4) /
/dev/hda7   0.2GB   [論理ドライブ]  OS6: Linux(5) /
/dev/hda8   0.2GB   [論理ドライブ]  OS7: Linux(6) /
/dev/hda9   0.2GB   [論理ドライブ]  OS8: Linux(7) /

/dev/hda10  2.3GB   [論理ドライブ]  OS4: Linux(3) /usr
/dev/hda11  2.3GB   [論理ドライブ]  OS5: Linux(4) /usr
/dev/hda12  2.3GB   [論理ドライブ]  OS6: Linux(5) /usr
/dev/hda13  2.3GB   [論理ドライブ]  OS7: Linux(6) /usr
/dev/hda14  2.3GB   [論理ドライブ]  OS8: Linux(7) /usr
/dev/hda15  0.1GB   [論理ドライブ]  linux swap

Windows 2000 [RC2] の評価期間が終了して使用できなくなったたため、代わりに  /dev/hda1 (DOS でいうところの C:) に Windows ME (Windows 98 からのアップグレード版)をインストールしようとしました。

簡単にできると思っていたのに思いのほか難航し、試行錯誤を繰り返した末にようやく目的を果たせました。私の知識不足、思い違い、思いこみが主たる原因で思わぬ遠回りをしてしまったわけですが、今回の反省として本来どのようにすべきだったのか、をまとめてみました。

2. 重要:責任の放棄
この文書は、GPL(GNU General Public License) に準じます。GPL はプログラムを対象にしたものであり、ドキュメントの場合はちょっと違うのかもしれませんが考え方として、そのような扱いとします。この文書の内容を自由に改変、配布してかまいませんがオリジナルの作者は、川岸 <kawagisi@yk.rim.or.jp> であることを明記して下さい。

  注意:この文書の内容は、以下に書いた通りにすれば、必ずうまくいくということを保証するものではありません。

また、記述内容に不備があり、それが原因であなたのシステムに不具合(例えば OS が起動できなくなったとか、ハードディスクの内容が全て消えてなくなってしまった等)が生じたとしても、私は一切の責任はとりません。あくまでも全てあなた自信の責任で行うのだということを承知の上で、この文書をご覧下さい。そんなことは承知できないぞ〜という方は、読まずに捨てて下さい。

前述のように私は色々と失敗を繰り返し最終的には目的を達成できたのですが、たぶんこのようにすればすんなりといったのだろう・・・という仮定で書いたに過ぎず、以下の記述通りに実行してうまくいくことを検証したわけではありません。このことを念頭におき、あくまでも参考程度にお読み下さるようお願いします。

この文書の間違いの指摘、改良のご意見、役にたったという感謝のメール・・等は大歓迎です。

3. 条件
(1) ハードディスクは1台(IDE)のみ
(2) LILO を使ったマルチブート
(3) Windows ME のアップグレード版を使用


4. 用意するもの

(1) Windows ME アップグレード版 CD-ROM
(2) Windows 98 CD-ROM
(3) Windows 98 起動用フロッピーディスク
(4) Linux 起動用フロッピーディスク
5. 手順

  ----------------
   バックアップ
  ----------------

 私は他の文書にも書きましたが、マルチブートとか新たな OS のインストールには、データの喪失、起動不可などの危険がつきまとうので重要なデータ(自分で作成したドキュメントとか設定ファイル、メールなど)は事前にバックアップしておきましょう。

実をいうと、今回の実験ではバックアップは取りませんでした。ところが案の定、一時的にどの OS も起動できなくなるという事態が発生してかなり不安になり、やっぱり手間を惜しまずバックアップしておくべきだったなぁと後悔しました。幸い元通り復旧することができたのでほっとしました。

参考になる(?)ことわざ: 油断大敵。注意一秒怪我一生。備えあれば憂い無し。急がば回れ。災害は忘れた頃にやってくる。用意周到。準備万端。石橋を叩いて渡る。

やっちまった後・・: 自業自得。後悔先にたたず。高い授業料。南無妙法蓮華経。南無阿弥陀仏。色即是空空即是色?

  ------------------------
   CD-ROMブートできない
  ------------------------
これが最初のつまづき、というか思い込み&勘違いだったのですが・・・

マザーボードの BIOS 設定でCD-ROMからブートするように設定し、Windows ME のCD-ROM (アップグレード版)でブートさせようとしたら、

Searching for Boot Record from CDROM.. Not Found
というエラーメッセージが出てブートできません。Linux, FreeBSD のインストール用 CD-ROM だとブートできるのに、どーしてだろ〜?と、かなり悩んでしまいました。

原因は、単純に「アップグレード版は CD-ROM ブートできるようになっていない」ためであることを、小川さんという方に教えて頂いてわかりました。

> CD-ROMのトップディレクトリに bootcat.bin とか bootimg.bin とかが無いので
> ご判断頂けると思います。マニュアル通り、起動用のフロッピーディスクを作って
> ブートして setup.exe とやれば OKですよね。

なぁ〜んだ、そ、そーだったのかぁ〜 。

失敗の原因:
(a) 当然 CD-ROM ブートだと信じて疑わなかったし、
(b) マニュアルもろくに読んでなかったし、
(c) 前記エラーメッセージは「CD-ROMの中にブートレコードが無いよ」ということを言ってるのに、私はこれを気にとめず、問題はマルチブートの設定にあるのだと思いこんで、

色々いじくって土壺にはまっていたのでした (^_^;;
CD-ROMの内容を確認したところ AUTORUN には対応しているものの、確かにブート関係のファイルはありませんでした。

教訓:マニュアルはよく読むこと、エラーメッセージの意味を考えましょう・・・って、これ基本中の基本的なことぢゃあないか。ま〜だまだ修行が足りないな ---> 自分

----------------
   Linux での処理
----------------
 (1) Linux 起動用フロッピーディスクでブートし、下記の例のように boot: のプロンプトで任意のパーティションを指定して Linux が起動できることを確認しておきましょう。こんなこと面倒だぁ、省略、しょーりゃく、などと言ってると痛い目に・・

boot: linux root=/dev/hda2 ro

(注)boot:  に続く "linux" という文字列は設定した内容 (/etc/lilo.conf) により異なります。

 (2) MBR(Master Boot Record) をフロッピーにセーブします。私は今回これをしなかったのですが、たぶん、それが原因で Linux の1つが起動できなくなったのだろうと思います。

MBR の退避

# dd if=/dev/hda of=/mbr bs=512 count=1
# mcopy /mbr a:
MBR の復元 (Windows のインストール完了後に行う)
# dd if=/mnt/floppy/mbr of=/dev/hda bs=446 count=1


 (3) Linux 上で Windows ME 用のパーティションを作成します。まず、

# fdisk /dev/hda

で fdisk を起動します。m コマンドでコマンドの一覧表示、p コマンドで変更前の現状のパーティション構成を確認します。

 t コマンドで /dev/hda1 (DOS の C: に相当) のパーティションID を "b" (Win95 FAT32) に設定します。"c" (Win95 FAT32(LBA)) ではないことに注意。

次に、a コマンドで /dev/hda1 をアクティブパーティション(DOS では活動区画と呼ぶ)に設定します。

p コマンドで /dev/hda1 が FAT32 で、且つアクティブパーティションであることを確認してから w コマンドで実際にハードディスクに書き込みます。w コマンドの実行後、ステータスが読めなかったというワーニングが表示されますが問題は無いようです。

q コマンドで終了後、変更を有効にするためにマシンをリブートします。


(4) Linux を起動し、/dev/hda1 に DOSのファイルシステムを作成します。

# mkdosfs -F 32 /dev/hda1
  --------------------
   Windows での処理
  --------------------
 (5) Windows 98 起動用フロッピーでマシンをブートし、以下の処理をします。Windows 98 起動用フロッピーでブートすると、C: はハードディスク、D: は RAMドライブ、E: は CD-ROM ドライブとなりました。
(5a) FDISK コマンドで C: ドライブが FAT32 で且つ活動区画になっていることを確認します。FDISK コマンドは、1枚目の起動用フロッピーに入ってます。
A:\> FDISK
私は、2枚目の起動用フロッピーが入ったままだったので、そんなコマンドはないよー、というメッセージが出てずいぶん悩みました。こう書くと「そんなの当たり前じゃないか、あほかお前は」と言われそうですが、一人でやってるとそんな単純なことにも気が付かず気が滅入ってしまうのです。

(5b) MBR を DOS 用にします。/MBR は隠しオプションです。

A:\> FDISK /MBR
(5c) C: ドライブをフォーマットします。
A:\> FORMAT C:
(5d) C: ドライブにシステムを転送します。
A:\> SYS C:
(6) Windows ME の CD-ROM をセットし、インストーラを起動します。
A:\> E:
E:\> SETUP

インストール作業中に、起動フロッピーディスクは **必ず** 作成しましょう。
インストールが終了したら、Windows ME が起動できることを確認します。

  --------------------
   マルチブートの設定
  --------------------
(7) Linux 起動用フロッピーで Linux をブートします。

(8) MBR を復元する。手順は前に書いた通りです。私はこれをやらなかったので Linux を起動できなくなりました。そこで別のパーティションにある Linux をフロッピーで ブートしました。

(9) /etc/lilo.conf を次の例のように編集(3行追加)します。

other=/dev/hda1
            label=winme
            table=/dev/hda

次に lilo コマンドで LILO をインストールします。/etc/lilo.conf を編集しただけでは何も変わりません。

# lilo

 (10) 変更を有効にするためにマシンをリブートして、Windows ME や Linux を切り替えてブートできるか確認します。