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からブートする。「次へ→コンピューターの修復→トラブルシューティング→詳細→コマンドプロンプト」を選択。
コマンド「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も同じドライブに配置される。
ドライブの構成が異なる場合は、先のコマンド中のpartition=c:の部分を適宜変更して実行する必要がある。
例えば、Windows 10を通常の手順で新規インストールすると、システムドライブとBOOTドライブの2つが作成され、BOOTドライブにはBOOTMGRがコピーされる。BOOTドライブは隠し属性となっていて、普段Windows上からは見えない。(わざわざBOOT用のドライブが作られる理由は、Vistaから追加されたBitLocker機能のため。)これにWindows XPをインストールすると、NTLDRは先頭のBOOTドライブにコピーされる。
なのでこの場合は、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は復旧可能)
まず、あらかじめ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の内容が正しく設定されていることを確認する。
参考サイト
- XPとのデュアルブート - Windows7移行まとめwiki - http://windows7.wiki.fc2.com/wiki/XP%E3%81%A8%E3%81%AE%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%96%E3%83%BC%E3%83%88
- ~インストールから設定・活用まで~ すべてが分かるWindows 7大百科 (26) 第2章 Windows 7のインストール - マルチブート環境の構築 (3⁄5) マイナビニュース http://news.mynavi.jp/special/2009/windows7/025.html
- 起動しない対策 http://www.mrfujii.jp/tips/6other/07notstart.htm
- アクティブなパーティションを変更するとシステムを起動できない https://support.microsoft.com/ja-jp/kb/228004
- 「boot.ini」の編集 - PCと解 https://pctrouble.net/boot/bootini.html