Image: Win10とXPのデュアルブートを組む No.2

Win10をインストールしたPCにWindows XPをインストールしてデュアルブートを組む手順。

Windows XPのインストール手順は省略。XPのインストールが完了した時点からの話とする。

XPをAHCIモードのHDにインストール / Win10とXPのデュアルブートを組む No.1 - Diary on wind

BOOTMGR用のブートセクタ(ブートストラップローダー)を書き込む

後からXPをインストールするとブートセクタがNTLDR用のものに書き換えられる。Windows Vista/7/8/8.1/10を起動可能なBOOTMGRは認識されなくなり、NT/2000/XPしか起動できなくなる。まずBOOTMGRを読み込まれるようにしてWin10を起動可能にする。

Windows 10(またはそれ以前Vista以降)のセットアップDVDからブートする。「次へ→コンピューターの修復→トラブルシューティング→詳細→コマンドプロンプト」を選択。

Image: Windows 10 トラブルシューティング コマンドプロンプト

コマンド「bootsect /NT60 All」を実行。コマンドプロンプトを閉じて再起動するとWin10が起動する。

ブートメニューにXPを追加する

ブートマネージャーがBOOTMGRになりWin10が起動するようになった。しかしXPは自動では追加認識されないので、自分でブートメニューに項目を追加する必要がある。

Win10でコマンドプロンプト(管理者)を起動。次のようにコマンドを実行する。

bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device partition=c:
bcdedit /set {ntldr} path \ntldr
bcdedit /displayorder {ntldr} /addlast

この時、NTLDR(とそれに付随するNTDETECT.COM、bootfont.bin、boot.iniを合わせ、以下NTLDRと呼ぶ。)の場所に注意しなければならない。上のコマンドは「現在のWin10上から見てCドライブの\ntldrファイルを読み込む」というブート項目を追加している。これは、XPセットアップ時にNTLDRはアクティブパーティションにコピーされるためである。この例では、1つ目のドライブ(C:)にWin10をインストール済みで、2つ目のドライブ(D:)にWinXPをインストールしたという2ドライブの環境を想定した場合である。BOOTMGRは1つ目のドライブに置かれるのでこれがアクティブパーティションとなり、NTLDRも同じドライブに配置される。

Image: 旧来の2ドライブ構成の場合のBOOTMGRとNTLDRの配置

ドライブの構成が異なる場合は、先のコマンド中のpartition=c:の部分を適宜変更して実行する必要がある。

例えば、Windows 10を通常の手順で新規インストールすると、システムドライブとBOOTドライブの2つが作成され、BOOTドライブにはBOOTMGRがコピーされる。BOOTドライブは隠し属性となっていて、普段Windows上からは見えない。(わざわざBOOT用のドライブが作られる理由は、Vistaから追加されたBitLocker機能のため。)これにWindows XPをインストールすると、NTLDRは先頭のBOOTドライブにコピーされる。

Image: 現行Windows標準ドライブ構成の場合のBOOTMGRとNTLDRの配置

なのでこの場合は、partition=に指定するドライブはBOOTドライブとなる。ところが、通常このBOOTドライブはドライブ文字が割り当てられていない。そこで、「ディスクの管理」ツールを使ってこれにドライブ文字を割り当てるか、またはbcdeditコマンドを実行してブートマネージャーのpartitionの値(partition=\Device\Harddisk\HarddiskVolume1 など)と同じ値を入れる。

bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device partition=\Device\Harddisk\HarddiskVolume1
bcdedit /set {ntldr} path \ntldr
bcdedit /displayorder {ntldr} /addlast

これでデュアルブート環境構築完了。私はこれにさらに、自動でXPから起動するバッチファイルを作った。

マルチブート環境にて次回のみ異なるOSから再起動する(bcdedit /bootsequence) (Win7/8)

ちなみに、最初に参照されるntldrファイルは”アクティブパーティションにある”NTDETECT.COMとBOOT.INIを参照する仕様なので、NTLDRを丸ごと他のドライブ(例えばD:)に移してpartition=d:としても起動しない。ntldrファイルのみを移して同様にした場合は正しく起動する。

XPを削除・Win10を残してデュアルブート構成を解除する方法

XPを削除してデュアルブート構成を解除する方法は簡単。

Win10でコマンドプロンプト(管理者)を起動。次のようにコマンドを実行する。

bcdedit /delete {ntldr}

これでブートメニューからXPの項目は削除されたので、あとは「ディスクの管理」ツールでXPのパーティションを削除してCドライブを拡張するなり、フォーマットしてデータ用ドライブに変えるなりすればよい。NTLDRのファイルは削除してもしなくても良い。

Win10を削除・XPを残してデュアルブート構成を解除する方法

こちらは厄介。なぜなら、XPのブートに必要なデータは全てWin10のブートドライブに置かれているから。XPのドライブのデータが失われてもWin10は起動できるが、逆にWin10のドライブのデータが失われるとXPも起動できなくなる。(XPのブート情報さえ設定し直せばXPは復旧可能)

Image: デュアルブート構成からWin10を削除

まず、あらかじめXPの回復コンソールが利用できる環境を用意しておく。

XPを起動。ブートドライブにあるNTLDR(ntldr, NTDETECT.COM, bootfont.bin, boot.ini)をXPのドライブに退避する。

「ディスクの管理」ツールでXPのパーティションをアクティブにマーク。Win10のドライブをフォーマット(消去)または削除する。(XPより前のドライブを削除してそのままの場合boot.iniのパーティション番号が合わなくなるので、書き換えが必要になる。)

回復コンソールを起動して、FIXBOOTコマンドでXPのドライブにNTLDR用のブートセクタを書き込む。

以上.

(追記:回復コンソールFIXBOOTコマンドの代わりにWin10のbootsect /nt52コマンドでも良いかもしれない。)

トラブルシューティング

“Network boot …”, “PXE …”, “DISK BOOT FAILURE”, “INSERT SYSTEM DISK AND PRESS ENTER”, “Operating System not found” といったメッセージが表示される

HDD、CDドライブ、HDD、USBなど全てにブートストラップが見つからないと、起動可能なデバイスがないとしてこのように表示される。原因はアクティブパーティションの設定誤りか、ブートストラップのデータ破損、HDDそのものが何らかの原因で認識できていない。アクティブパーティションの設定誤りの場合は、WindowsのセットアップCDから起動してDISKPARTコマンドを使って設定を書き換える。

“Windows Boot Manager”というタイトルで、”File: \Boot\BCD Status: 0xc000000f Info: The Boot Configuration Data for your PC is missing or contains error”と表示される

BCDストア(BOOTMGRの設定ファイル)がBOOTMGRと同じドライブに見つからない。現行Windows標準ドライブ構成でBootドライブでなくWin10のシステムドライブをアクティブにすると、このような症状になる。

“Windowsブートマネージャー”というタイトルで、”File: \ntldr Status: 0xc000000f Info: 必要なファイルが見つからないか、ファイルにエラーがあるため、アプリケーションまたはオペレーティングシステムをロードできませんでした”と表示される

BCDストアのブート情報の設定誤り、またはntldrファイルにエラーがある。bcdeditコマンドで設定したdevice partitionやpathの値が間違っている可能性が高いので、まずは設定誤りを疑う。

「オペレーティングシステムの選択」画面でXPを選択すると、再起動した後一瞬文字が表示され、再度再起動が掛かって「オペレーティングシステムの選択」画面に戻る

bootfont.binが見つからないとこの症状になる。アクティブパーティションにNTLDRの必要ファイル(bootfont.bin, boot.ini, NTDETECT.COM)があることを確認する。

“次のファイルが存在しないかまたは壊れているため、Windowsを起動できませんでした: Windows root\system32\hal.dll. 上記のファイルをインストールし直して下さい”または”コンピュータ ディスク ハードウェア構成の問題のため、Windowsを起動できませんでした”と表示される

boot.iniで指定されているパーティションにWindowsが存在しないか、またはboot.iniが読み込まれていない。アクティブパーティションにboot.iniがあることを確認し、boot.iniの内容が正しく設定されていることを確認する。

参考サイト


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!