WindowsXP/98のマルチブート
(2004/7/15)

※ここから先はやや難しい話になりますので、
・基本(プライマリ)パーティション
・拡張パーティション(より正確に言えば、拡張領域に作った論理パーティション)
・FAT
・NTFS
等の知識をご存じの方対象になります。
ご了承下さいm(_ _)m


さて、いきなりLILOやGRUBを使ったWindowsとLinuxのマルチブートは敷居が高そうですので、もっと簡単なWindows同士のマルチブートをやってみたいと思います。

これは非常に簡単です。なぜなら、WindowsNT/2000/XPはもともとWin9X系とのマルチブートに対応しているからです。
実際、私もWindows98SEとWindows2000のマルチブートを作ったことがありますが、普通にWindows2000をインストールすると全自動でマルチブート環境を作ってくれますので非常に簡単です。
ですが、これは、あとからNT系のWindowsをインストールするときに限ります。
この順番が逆の場合、9X系のWindowsはマルチブートに対応していませんので、NT系のWindowsは起動しなくなってしまいます。
このような場合、マルチブート環境の構築は標準のNTLDR(NTローダ)以外の特別なローダを使わないと不可能だと思っていたのですが、実は方法がないわけではないようなのです。
ということで、この逆の順番でマルチブート環境が構築できるか実験してみました。

今回は、WindowsXPとWindows98SEでやってみます。
まずは20GBのHDを用意して、3GB程度のパーティションを作成し、そこにWindowsXPをインストールしました。


さて、このあとに98SEをインストールするのですが、せっかくですから、WindowsXP上から、あらかじめ98SE用のインストール用パーティションを作成しておきましょう。(もちろん、DOSから行ってもいいのですが)

すでにプライマリパーティション(C:)があるので、その後ろに2Gのプライマリパーティションを作成し、FAT32でフォーマット。最後に忘れずにそのパーティションをアクティブにしておきます。↓


こうしておけば、G:(98SEにとってはC:)に98SEがインストール出来るはず・・・と思っていたのですが、ここで問題発生。

98SEのインストーラを立ち上げると、なぜか、「ドライブへの読み取りまたは、書き込み中にエラーが発生しました。」 なるエラーが出てしまいます。
過去に何回もWindows95/98をインストールしたことがある私ですが、こんなエラーに出会ったことはありません。
念のためにDOSを起動してパーティションの状態を確認してみると、C:がフォーマットが完了しているにも関わらず、DIRをしてみても中身が見れません。
う~ん。WindowsXPでフォーマットしたのが何か悪さしているのでしょうか? 原因はよくわかりませんが、インストールするパーティションが何かおかしな(DOSが理解不能な)状態になっているようです。
しょうがないので、DOSで再度パーティションを切り直して、フォーマット。(始めからそうしておけばよかった・・・)↓

これで通常通り、98SEがインストールできました。



さて、やっっっと本題です(^^;
この状態では、98SEしか起動しません。これをマルチブートにするために、NTLDR(NTローダ)を導入するのですが、NTLDRを導入せずとも、切り替える方法はあります。
(16ビット/32ビットにかからず)Windowsは、「アクティブな基本パーティションから起動される」という法則があります。

つまり、上の写真の通り、領域2がアクティブ(状態が"A")になっているので、98SEが起動しますが、これをfdiskで領域1をアクティブにしてあげればWindowsXPが起動します。
そして98SEに戻すには、XP上で「ディスクの管理」からその逆の操作をすれば、次回の起動からは98SEが起動するようになります。
この方法、一番基本的かつ単純なやり方ではありますが、切り替えに手間がかかります。

さて、これをメニューで切り替えて起動できるようにするには、修復セットアップを使ってNTLDRを復帰させればOKとのことです。(詳しくはこちら)
ですが、今回はまったく別のパーティションにそれぞれのOSをインストールしているので、NTLDRが入っている領域1はノータッチです。当然NTLDRはそのままあるはずです。
念のためにfdiskで領域1をアクティブにして起動すると、何事もなかったようにXPが起動しました。

・・・であれば、あとはboot.iniファイル(OSを選択する画面の情報)を編集してあげればいいだけのように思えます。
ちなみに、もともとのboot.iniは以下のようになっていました。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
※boot.iniの記述の意味はこちら参照のこと

ですから、boot.iniファイルを、
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

C:\="Windows98SE"
のように編集すれば良さそうに思えますが、実はそうではありません。
この記述は、あくまでC:\に、dossect.dosファイルという、98SE用のブートセクタを退避したファイルが存在することが前提です。
dossect.dosというファイルは、XP等のOSをインストールする際に、既存のWindows9X環境を検出したときに自動作成されるものなので、今回のようなケースでは当然作成されていません。
ダメモトでやってみましたが、一応選択メニューは出るものの、やっぱり98SEを起動しようとするとエラーになって止まってしまいます。
それでは、と以下のようにしてみました。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows98SE"
かなり強引。
当然ダメでした。_| ̄|○
ヤバイ。行き詰まってしまいました。

そこで、もう一度勉強し直してみました。
・・・すると、絶望的な記述が!(「Cドライブが既にNTFSの場合」
要するに、Windows9X系とWindowsNT系を(NTLDRで)マルチブートさせるには、C:がどちらでも読み込めるファイルシステムでなけばならないということです!!
今回はWindows98SEとWindowsXPですから、両者が理解できるファイルシステムはFAT16もしくはFAT32になります。
私はWindowsXPをNTFSでインストールしてしまいました。
「ということは、マルチブート不可ということですか!?」
(この記事ボツですか!?)

いきなりマルチブートの罠にはまってしまいました(T_T)。dossect.dosのあるなし以前の問題です。このままでは手動でアクティブパーティションを切り替えるマルチブート(前述)しか手がありません。

確かに、98SEの環境に後からXPをインストールする際は、当然ファイルシステムはFAT32でしょうからいいのですが・・・。もちろん、XPをFAT32でインストールする事はできたはずですが、わざわざFAT32でインストールする人はいないでしょうし、メリットもありません。
そんな後ろ向きのマルチブート環境は却下!
・・・とは言ってみたものの、じゃあ、どうすればいいのでしょう?

これを解決する方法は、いくつかあることはありそうです。
① NTLDRを98SEの領域にインストールする。
  →そんなことできるのでしょうか?
    いや、もしできたとしても、dossect.dosが生成できなければ意味がありませんので無意味でしょう。

② アクティブパーティション切り替え機能があるブートローダを使う。
  →NTLDRは、アクティブパーティション切り替え機能を装備していないのですが、世の中にはアクティブパーティション切り替え機能をもつブートローダがあります(というより、NTLDR以外のブートローダは大抵装備しているようです)。
これをインストールすれば、手動でパーティションを切り替えることなく、NTLDR同様に、メニューから選択するだけで切り替えることができるようになります。


まあ、①の方法も不可能ではないのかも知れませんが、最終的な目的は、Windows98/XP/Lindowsのマルチブートです。
でしたら、やっぱり②の方法のほうがずっとスマートですね。Lindowsに付いているブートローダのLILOは、アクティブパーティションの切り替え機能を持っていますので、おあつらえむきです。
ということで、Windows環境の構築はここまで。
次にLindowsとのマルチブート環境の構築に行きたいと思いますが、試行錯誤が多かったので、わかりにくい記事になってしまった気がします。(^^;
ですので、現在のパーティションの状態をまとめておきましょう。。


~まとめ~
作成したパーティションは、以下の通りです。
ファイルシステム インストール
されているOS
パーティションサイズ パーティション種別 パーティション作成方法 XP起動時の
ドライブレター
98SE起動時の
ドライブレター
NTFS5 Windows XP 約3G 基本 XPインストーラ C: -(不明なパーティション)
FAT32 Windows98SE 約2G 基本 DOS D: C:

ここで注意して欲しいのは、パーティション種別です。どちらも「基本パーティション(プライマリパーティション)」になっています。
これがもし、「拡張パーティション」ですと、その領域に入っているOSが起動できません。これは、Windowsのブートローダの制限で、「アクティブな基本パーティション」にインストールされたOSしか起動できないからです。
逆に言うと、作成したパーティションはどちらも基本パーティションですので、アクティブパーティションを切り替えるだけで、相手に影響を与えることなくそれぞれのOSが起動するということです。
※今回は敢えてノーマルではない方法でのマルチブート環境に挑戦しましたが、98SE→XPの順番で構築すれば、これほど苦労することはありません。

(余談:拡張パーティション)
拡張パーティションと、その対語の基本パーティションというのは、非常に違いがわかりにくいと思いますが、すでに拡張パーティションにしなければならない理由がなくなりつつあります。
確かにDOSの時代においては、基本パーティションは、一つのハードディスクに1つしか作れないという制限があったので、複数パーティションを作成する際にはどうしても2つ目以降は拡張パーティションにしなければならなかったのですが、その制限も最近はかなり解消されていますので、基本パーティションにしておいて困ることはまずありません。実際、私もWindows98時代あたりから、拡張パーティションのお世話になった記憶がありません。
ですので、DOS/Windowsで作成できるパーティションには基本パーティションと拡張パーティションがある程度のことは知っておいたほうがいいと思いますが、実際に作成するパーティションは何か特別な理由がない限り基本パーティションにしておいたほうが便利だと思います。

<前へ  Home  次へ>