2005/08/01 月
Windows 98/98 SE/Me/2000 をマルチブートする
現在ヒーヒー言いながら開発中の PC ゲームで、急に Windows 98/98 SE/Me も正式対応とすることになりました。泣きそうです。でも泣いていてもどうにもならないので、まずは動作テスト環境を準備するところから取り組みました。検討した結果、使っていなかった最低動作環境に近い PC を Windows 98/98 SE/Me/2000 のマルチブート PC にすることにしました。
Windows のマルチブートはちょっとクセがあります。Linux や FreeBSD などはどんなハードディスク構成&パーティション構成でも基本的には問題なく動きますが、Windows はおバカなのでそうもいきません。特に 9x 系(95、98、98 SE、Me など)は、その起動シーケンスのしょぼさから構成にかなりの制限があります。「98 と 2000 と Linux のトリプルブート PC を作ったことがあるから余裕だゼ」とかナメていたのですが、「あーでも 9x 系ってマルチブートできなかった気がする…」というあやふやな記憶の通り、実際にはかなり勉強する必要がありました。
おかげで無駄に詳しくなりました(^^;)。研究室や仕事でマルチブート PC をいくつか作っていたのである程度は理解していたつもりでしたが、この機会に BIOS 起動から OS 起動までの流れや、どうやってマルチブートを実現しているかという原理的なところまで理解することができました。Intel Mac になったらプライベートでも少しは役に立つかも知れませんね。パーティションやマルチブートでお困りの方はご用命下さい(笑)
というわけで、今回の構築の記録をエントリーにしてみました。以下に、基礎知識の仕入れ方、今回の要求と採用した方法、構築手順、問題と解決、他の方法の検討、市販ソフト紹介の順にまとめましたので、少し長いですが興味のある方はご覧下さい。
知識を仕入れる
マルチブートとハードディスクに関する詳しい知識を仕入れるには、「ブートとハードディスクのすべて」にあるドキュメントを一通り読めばほぼ OK だと思います。すばらしいドキュメントでかなりお世話になりました。予備知識がなくても理解できると思います。このエントリーに書いてある情報もほぼここを元にしていますので、読んでいてわからないことがあったらご参照下さい。
書籍では「PartitionMagic 8.0ではじめるハードディスク徹底活用マニュアル」などが参考になりそうです。「パーティションマジック」を使ってマルチブート環境を作るための本ですが、基本的な知識は他のソフトを使う場合でも十分役に立つと思います。
今回の要求
省コスト、省スペース、構築スピードに加えてちょっとのこだわりから、以下の要求を満たす PC を組むことにしました。
- Windows 98/98 SE/Me/2000 の4つの OS が起動する PC を構築したい
- 動作テスト用なので、なるべくクリーンで標準的な状態にしたい
- すべての OS を C ドライブから起動したい (そもそも Windows は厳密にはこれが必須)
- OS のシステムファイルを C ドライブにいれたい
- 1台の内蔵ハードディスクで運用したい (2台目からのブートは不安定だったりする)
- OS 以外はすぐに手に入るフリーウェアだけで構築したい
- 起動時の OS 選択を一回で済ませたい (頻繁に切り替えるため)
- あまり手間のかかる or 危険な作業はしたくない (ブート設定、起動用ファイル改造、動的パーティションテーブルとか)
結論から言うと、これらの要求すべてを満たすには「複数の基本領域を作って起動パーティションを切り替える」方法しかありませんでした。ただし、Windows に付属の FDISK などでは一つのハードディスクに基本領域となるパーティションは一つしか作れません。また、NT 系標準の OS ローダ (NTLDR) では起動パーティション (C ドライブになるアクティブなパーティション) を切り替えることはできません。FDISK が対応していないので当たり前ですが。上記要求を含めこれらを割と簡単に満たすフリーウェアが「MBM (Multiple Boot Manager)」です。
MBM は MBR (マスターブートレコード) に格納されるブートローダ&パーティションエディタです。区画テーブルエディタと呼ばれるパーティションエディタにより柔軟なパーティション構成を構築できます。そして、どのパーティションから起動するか (どのパーティションを「C ドライブ」にするか) を PC 起動時に選択できるようになります。その他に結構便利な機能としては、9x 系のインストール時に邪魔にならないように、対象外の基本領域を隠し領域にしたりもできます。MBR 領域である 512byte (正確には 446byte) に収まるプログラムですが、やたら使い勝手がよく重宝しています。フロッピーブートできるイメージも配布されているので、OS インストール&パーティションいじり用に1枚持っていると便利です。
MBM を使ったマルチブート環境の構築手順
- MBM のフロッピーイメージからブートディスクを作成し、そのブートディスクから起動
- MBM の区画テーブルエディタを使って、20GB のハードディスクを先頭から 1GB、1GB、2GB、2GB のパーティションを作成する
- 先頭からそれぞれ Windows 98、98 SE、Me、2000 を入れるパーティションにする
- 全部 FAT32 の基本領域 (パーティションタイブ:0C) として作成
- 今後のために容量全部を使わずに後半を残しておいた
- MBM のブートメニューを起動
- Windows 98 を入れるために1番目の基本領域をアクティブにして、他の基本領域を隠しパーティション (操作:M キー) にする
- MBM のブートディスクを抜いて、Windows 98 のインストール CD (ブート可能版) を入れて再起動
- この状態でインストールを始めると1番目の基本領域のみ C ドライブとして認識されるので普通にインストール
- インストールが終わったら MBM のブートディスクを入れて再起動
- MBM のブートメニューを起動
- Windows 98 SE を入れるために2番目の基本領域をアクティブにして、他の基本領域を隠しパーティション (操作:M キー) にする
- 以下同様の作業を Windows 2000 のインストールが終わるまで繰り返し
- すべての OS が入れ終わったら、MBM のブートディスクを入れて再起動
- MBM をハードディスクの MBR にインストール (メニューの 3 番)
- MBM のブートメニューで、すべての隠しパーティションを解除し、各パーティションにわかりやすい名前をつける
- MBM のブートディスクを抜いて再起動
- 起動時に MBM のブートメニューが表示され、選択したパーティションから OS が無事起動するようになったら構築完了
構築時に起きた問題
ブート可能なインストール CD がブートしない
これはマルチブート以前の問題なのですが(^^;)。ブート可能なインストール CD でセットアップしようと思ったらブートしなかったんです。もちろんブート順を最優先にして、です。少し前までは使えたので「おかしいなぁ」と思っていたら、「ブートに対応していない CD-ROM ドライブもあるよ」とかいわれたのでそういうものかと思い、周りの方々のご協力で Windows インストール用の各種ブートフロッピーを集めました。んで、あらためてフロッピーブートからインストールにチャレンジしてみると…。なんと起動後も CD を一切読みにいかないではないですか! いつの間にか壊れてますよ、これ…orz
しようがないので、他の PC についていた CD-ROM ドライブを借用してインストールを進めました。インストール中は待ち時間が多いので、勉強がてらその壊れたドライブを分解して掃除してみることに。分解作業はなかなか大変でしたが、分解中に明らかになる CD-ROM ドライブの機構に「おー、こうなっていたのか!」とかいちいち感動しながら一通り分解してみました。元に戻せるか心配になりながらも、ほこりだらけになっていた中をきれいに掃除して組み立て直したら…、なんと動きましたよ! 結構直るもんなんですね。微妙に変な音がしてますが(^^;
Windows インストール中にフォーマットで失敗する
3番目の基本領域に Windows Me を入れようとしたらすんなり入らなかったのでちょっと手こずりました。インストールの最初にパーティションをフォーマットするフェーズがあるのですが、そこで何も入っていないのに「ルートディレクトリにファイルが多すぎる」といったメッセージが表示され、インストールが中断する現象が発生しました。何回やってみても他の OS でフォーマットしてもダメ。よくわからないので勝手にパーティションのサイズと位置が悪いのかと思い、パーティションを切り直したり途中まで入れたのをまた入れ直したりしていたら、いつの間にかすんなり入るようになりました。うーん、原因不明。
あとで調べたら、これはインストールディスクから直接 oemsetup.exe を起動したときに発生する問題のようです。この問題はコマンドプロンプトから setup.exe を起動してインストールを行うことで回避できるそうな。問題発生の原因は結局わかりませんでしたが…。マルチブートに関係ない問題だと思うので、覚えておくとよいかも知れません。
パーティションサイズが足らなくなった
2GB で足りると思っていた Windows 2000 の基本領域が、アップデートをかける度に圧迫されてきました。これは Knoppix Linux を CD ブートしたのちに、parted を使って FAT32 領域を 2GB → 4GB にリサイズすることで解決しました。parted は Linux でしか動かないのが難点ですが、フリーウェアでここまでできちゃうんだからすごいです。parted 専用のブートディスクを作成することもできるので、MBM と同様に一枚作っておくのもいいかも知れません。僕と同じく KNOPPIX でもいいですけどね。何かと便利だし。
他の方法を検討してみる
上記のように MBM を使った方法で無事マルチブート環境を構築できました。ただ、この方法の欠点は基本領域数の上限が OS 数の上限になってしまうことです。通常であれば1つのハードディスクには基本領域を4つしか作れないので、必然的に入れられる OS の数も4つになります。今回はちょうど4つ入れればよかったので問題ありませんでしたが、それより多くなると他の方法をとらざるを得ません。
Windows 2000 のシステムファイルだけは D ドライブにあってもいいと割り切るなら、GRUB をいれて、Windows 2000 を論理領域にインストールするという手もあります。普通にやったら起動時の OS 選択が NTLDR などを使った多段方式になってしまいますが、GRUB では 9x 系を起動する時は bootsect.dos を直接ロードという手法がとれるので、これでいけると思います。論理領域は理論的にはいくつでも持てるので、Linux や FreeBSD を入れたいときはこれで何個でも入れられるはずです。でも、5つ以上の Windows をいれる場合はどうしても多段方式になっちゃうかな…?
Multi-FAT と呼ばれる起動時に起動用ファイルなどをいじる方法もありますが、ファイル構成が OS 間で干渉したりするので今回のようなテスト環境には向かない気がします。起動用ファイルをいじるのでそれなりに危険ですし、個人的にはちょっと気持ち悪いので、すでに MAX サイズの基本領域に入っている Windows をマルチブートにしたとき以外はパスしたいですね。
あとは、基本領域を4つより多く作る (というかあるように見せる) 方法もあったりします。この方法は、起動時に MBR に格納されているパーティションテーブル情報を動的に書き換えて、基本領域のどの4つを使うかを選択できるようにする仕組みで実現されています。フリーウェアでは SyMon で、市販のソフトでは「システムマネージャー 4 ブートイット 」でこの方法が使えます。今回はこれの利用も考えてハードディスクの容量を残してあるので、時間があるときにチャレンジしてみる予定です。MBM を使って手動でパーティションテーブル情報を書き換えても同じようなことができますが、ちょっと面倒だしミスったときにやばいです(^^;)
ただ、聖域に踏み込むまあまあ危険な手法ではあるので、この方法でやりたい場合はサポートのことを考えてシステムマネージャーを買ってきたほうがいいかも知れませんね。Multi-FAT みたいにファイルをいじるよりは、データ領域をいじらないこの方法のほうが安全な気もしますが。
マルチブートを可能にする市販ソフト
今回は一切使いませんでしたが、世の中には簡単にマルチブート環境を構築するソフトが販売されています。フリーウェアでやるとどうしても知識が必要だったり設定が大変だったりしますが、市販ソフトなら何も考えずに手軽にできます。高機能なパーティションエディタも同梱されているので、マルチブート目的でなくても持っていたほうがいいかも知れませんね。
システムコマンダー 8
市販ブートローダの元祖として超有名。機能もサポートも万全。とりあえずこれ持っていればマルチブートは安心です。
ノートン・パーティションマジック 8.0J
超老舗で使いやすいパーティションエディタとして有名ですが、ブートローダも装備してます。ノートン先生ブランドなのも安心。
System Selector 3
キヤノンシステムソリューションズ (旧住友金属システムソリューションズ) 製で微妙に親近感が(笑)。豊富な機能がありながらも値段が安いのが魅力。
システムマネージャー 4 ブートイット
最大 255 個の基本領域が作成可能なモンスターソフト。今回のようにクリーンなシステム構成にしたいときはオススメです。












