Vistaと旧OSのデュアルブート設定(後で旧OSを認識させる)

例えば、Cドライブに「Windows XP」、Dドライブに「Windows Server 2003」を
インストールしている場合、Cドライブに「Windows Vista」をインストールすると、
BIOS起動時に、Dドライブにインストールしている「Windows Server 2003」を
選択することができなくなる。


これは、アクティブパーティション(ここではCドライブ)に、インストールされている
OSのシステムパーティションが管理されているためである。(Vista以前はBoot.ini)
また、VistaVista以前でブートを管理しているコンポーネントが異なる。
そのため、Vistaをインストールした場合、Vistaのブートマネージャに、
旧OSを認識させるため、以下のコマンド(bcdedit)を実行する必要がある。

1: >bcdedit -create {ntldr} /d "Windows Server 2003"
2: >bcdedit -set {ntldr} device partition=C:
3: >bcdedit -set {ntldr} path \ntldr
4: >bcdedit -displayorder {ntldr} /addlast

ポイントは4行目の「partition」に"D:"ではなく、"C:"を設定することだ。
勘違いする人が多いが、ここではアクティブパーティションを指定する。
では、どこで"D:"を指定するのかというと、従来の「Boot.ini」に記載し、
そして、この「Boot.ini」をCドライブに配置するのだ。
(一緒に「ntldr」と「NTDETECT.COM」も配置する必要がある。)


こうすることで、Vistaのブートマネージャから選択できるようになる。
また、「ntldr」、「NTDETECT.COM」は、インストールCDの「i386」に
格納されているが、「Boot.ini」は格納されいないため、自前で作成する必要がある。
自前で作成するのは面倒なので、こういったインストール作業の前に、該当するOSの
「Boot.ini」を退避させておくことをお勧めする。


また、「Windows Vista」だけでなく、「Windows Server 2008」も同様である。
(ちなみに、私は「Windows Server 2008」を評価しようとインストールしたら発生した)