2016年11月14日月曜日

論理パーティションにWindows OSはインストール可能?

ご無沙汰しています。


 たまたま手元にWindows7のライセンスがあったので、Linux Mint + Win10 + Win7 のトリプルブートを試し、そのときに躓いたある出来事を書きます。

1. 「Windows OSはプライマリパーティションにのみインストール可能」は本当か?


 もともと、私のPCにはWindows10とLinux Mintが入っていました。Windows10をクリーンインストールすると「システムで予約済み」、「OSパーティション」、「回復パーティション」という3つのパーティションが作成されます。この3つは「プライマリパーティション」と呼ばれる分類に入ります。そして、Linux Mintは拡張パーティション内に作成した論理パーティションにインストールしていました。つまり、この時点でHDDにはプライマリパーティションが4つ存在していました。(※拡張パーティションはプライマリパーティションと同等に扱われる)

 私がパソコンのマニュアルを読み漁っていた小学生の時には、マニュアルに「プライマリパーティションは一つのHDDに最大4つまで作成でき、OSはプライマリパーティションのみにインストールできる」という記述があったと記憶しています。MS-DOSベースのWindows Meのマニュアルだったので、当時はその通りだったのだと思います。(懐かしい)

 BIOS環境下で用いられるMBR(マスターブートレコード)のパーティションテーブルが扱えるパーティションの数は4つであり、現在もプライマリパーティションは4つまでしか作成できません。それ以上のパーティションが必要となった場合は、プライマリパーティションの一つを拡張パーティションとして割り当てて、その中に論理パーティションを作成するという手法で対処できます。ただし、MS-DOSベースが主流だった時代では論理パーティションにはOSをインストールすることはできなかったのです。



図1 Windowsで典型的なBIOSディスクパーティション

私は、「現状4つのプライマリ/拡張パーティションが存在するHDDに、更にWindows OSを入れるのは不可能ではないか。」と思い込んでいました。そこで、何か良い解決策がないかと検索を掛けてみると、驚愕の事実が発覚しました。

「Vista以降のWindowsを拡張パーティションにインストールする事が可能!」

 え?前提が覆りましたね・・・。
 この記述に従えば、最近のOSはプライマリパーティションだけでなく、拡張パーティション(論理パーティション)にもインストールする事が可能になっていたことになります。私の知識は間違いだったのでしょうか???

2. ブートストラップローダとブートローダ


 ここでコンピュータがブートする時のプロセスを勉強しなければなりません。(長いぞ~)

 かつてのBIOSベースのコンピュータでは、最初にMBRに書き込まれた「ブートストラップローダ」と呼ばれる小さなプログラムが読み込まれます。ブートストラップローダはMBRに書き込まれているパーティションテーブルを調べ、アクティブ(起動可能)なパーティションを探し出します。そして、ブートストラップローダがアクティブなパーティションのブートセクタ(PBR:パーティションブートレコード)に書き込まれた、更に大きなプログラム(IPL:イニシャルプログラムローダ)を呼び出すことでブートが続行されます。しかし、この方法ではパーティションテーブルに記述されているパーティションにしか飛ぶことが出来ないため、ブート可能なパーティションはやはりプライマリパーティションに限定されてしまいます。

 そこで天才は考えました。「IPLからもっと高度なブートを可能にするプログラムを呼び出せば良いのでは?」と。素晴らしい。ブートストラップローダから更に高度なブートストラップローダを呼べばいいっていう発想。拍手喝采。

 そのプログラムの名は。君の名は。「ブートローダ」。こっちのほうが馴染みがあるかもしれません。有名なものとしてはGRUB、NTLDR、Windows Boot Manager(以下。WBM)あたりでしょうか。

図2 ブートプロセス

 現在のBIOSベースのコンピュータの殆どがこのプロセスでブートします。ブートストラップローダ→IPL→ブートローダ、というようにどんどんプログラムを呼び出していく方式をチェインロードと言います。
 さて、ブートローダは高度なブートを可能にするプログラムです。ブートストラップローダとは違い、MBR上のパーティションテーブルではなく自前のパーティションテーブルを参照することが出来ます。即ち、パーティションを正しく指定すれば、プライマリパーティションだけでなく、論理パーティションにインストールされたOSも起動できる(!!!)。今回のミラクル(?)はこれが理由だったわけです。

 では、なぜVista以降から可能になったのか。それは採用しているブートローダがNTLDRからWBMに変更されたからだと推測されます。NTLDRでは以前のブートストラップローダと同様にプライマリパーティションからのブートのみに対応していましたが、WBMではよりブートの自由度が広がりました。BCD(Boot Configuration Data)に正しくロードするプログラムを記述すれば、論理パーティションやVHD(Virtual Hard Disk)からでもブートできます。
 ちなみに、Windowsのブートローダに限らずGRUBやLILOをインストールしてある環境では同様に論理パーティションからブートが可能です。

図3 EasyBCDによるBCDストアの編集


3. WBM万歳!!知識は常に新しいものを仕入れましょう


 今回のまとめをします。

 「MBR環境下でかつブートローダにWBMを採用している場合は、論理パーティションを作成しそこにOSをインストールすることができる!」です。なんだかスッキリしましたね。

図4 現在のパーティション構成


 知識は常に新しいものを取り入れていかないと、時代の流れに置いて行かれてしまいます。(置いてかれんだ~♪)正直、私のコンピュータの知識はWindows XPあたりで止まっていたのでしょう。情けない話ですね。


ということで、皆様もいろんなOSをインストールして楽しいマルチブートをお楽しみ下さい!!

4. 参考文献


「Q&A COLLECTION」

「Windows7が4つのマルチブート環境を作りたいのですが・・・・・」

「Windowsの起動ディスクとパーティション入門」

「OS のブートシーケンス」

「BIOS ベースの推奨ディスク パーティション構成」

「Windows Boot Manager」




0 件のコメント:

コメントを投稿