PC Windows

2 台の各ハードディスクに Windows XP と 8.1 がインストールされたデュアルブートから 1 台外して Windows 8.1 だけで起動できるようにする

2016/08/03

ハードディスク

前回の記事でハードディスク 2 台でデュアルブートになっているのを 1 台にしてデュアルブートを解除することに決めたことを書きました。今回は、それを実際にやってみた結果です。

前提条件

対象の PC は BIOS ベースの PC で、MBR のパーティション構成です。

最近の UEFI ベースの GPT のパーティション構成ではないのであしからずご了承ください。

元は、Windows XP Home Edition 32 ビット と Windows 8.1 (無印) 64 ビットのデュアルブート構成です。

その他、詳細は前回の記事を参考にしてくだださい。

参考サイト

次のブログ記事を全面的に参考にさせていただきました。

Windows7が起動しなくなったので、ブートセクタを修復してみました。 その1 『Windowsディスクからの起動 』 (Tipstour)

Windows7が起動しなくなったので、ブートセクタを修復してみました。 その2 『diskpartコマンドでの修復』 (Tipstour)

ほとんどこのブログ記事と同じようにやりましたが、ただちょっと違う事をした部分もあります。

回復ドライブの作成

事前に Windows のコントロールパネルの回復から回復ドライブを作成しておきます。

Windows 8.1 の場合 CD や DVD は使えず USB メモリーを回復ドライブに使います。

今回の PC の Windows 8.1 は回復ドライブに 512 MB 以上の メディア を要求してきました。

自分で試行してみて分かったのですが、USB 接続の SD カードリーダー があれば SD カードを回復ドライブに使うこともできます。

ただ、自分の環境では SD カードから起動できることを確認しましたが PC の機種や SD カードリーダー の機種によっては上手くいかないかもしれないのでもしやるのなら起動できるか試行してみたほうがいいです。

Windows のインストールディスクがあればそれも回復に使えます。

システムパーティションをどこにするか決める

元のハードディスクの状態

ディスクの管理

画像は、Windows の「ディスクの管理」の表示です。

括弧の中に「システム」とあるパーティションがシステムパーティションです。

上の画像の場合「WINXP (D:)」がシステムパーティションになります。

システムパーティションは PC 起動時に PC のシステムが最初に読み込むパーティションです。

システムパーティションは BIOS で起動順位が最優先のドライブのアクティブとしてマークされているパーティションになります。

アクティブとしてマークは 1 台のハードディスクドライブにつき 1 つのパーティションだけ出来ます。

論理パーティションはシステムパーティションに出来ませんのでプライマリーパーティションになります。

論理パーティションとかプライマリーパーティションとかの説明は次のサイトを参照してください。

ディスク パーティションとは (Microsoft TechNet)

ハードディスクの構造とパーティション by eslab

「プライマリパーティション」と「拡張パーティション」の違い - PCと解

パーティション分けせずに Windows 7 以降をインストールすると「システムで予約済み」と名前がついたパーティションが出来てそれがシステムパーティションになるみたいです。

参考

Windows 7のインストールにおけるパーティション構成とデュアル/マルチブート (ITAYA's Home Page)

今回は、システムパーティションがあるハードディスクを取り外すので、もう 1 台のドライブの方にシステムパーティションを作ることになります。

Windows がインストールされているパーティションをシステムパーティションにすることも出来ますしそれ以外のパーティションをシステムパーティションにすることもできます。

ただし、BitLocker を使って Windows がインストールされているパーティションを暗号化したい場合は、Windows がインストールされているパーティションとは別のパーティションをシステムパーティションにする必要があります。

BitLocker は Windows 8.1 (無印)や 10 Home のエディションでは使えないです。

自分は、可能性は低いがもしかしたら将来 Pro にして BitLocker を使うかもしれないと思ったので Windows がインストールされているパーティションとは別のパーティションをシステムパーティションにすることにしました。

システムパーティションのサイズを決め作成する

Windows 10 はシステムパーティションのサイズが 350 MB 以上必要で、クリーンインストールでインストールした場合は 500 MB 確保されるようです。

参考

Win10へのアップグレード「システムで予約済みのパーティションを更新できませんでした」 HDDからSSDへ換装済み - マイクロソフト コミュニティ

Windows10:クリーンインストール 【桜PC情報】

Windows Vista だと BitLocker の機能を有効にしたときに準備ツールが実行され Windows がインストールされたパーティションとは別にシステムパーティションが作られ、そのサイズは 1.5 GBのようです。

参考

ASCII.jp:Vistaの暗号化機能 BitLockerを本気で試してみた (3/6)|ここが変わったWindows Vista 100連発!

500 MB あれば恐らく問題ないと思われますが Vista が 1.5 GB 確保しているので大は小を兼ねるでおおよそ 1.5 GB 確保することにしました。

パーティションを操作するソフトは、いろいろありますが、今回自分は、Windows の「ディスクの管理」でパーティションを操作して目的のパーティションを Windows 8.1 がインストールされたハードディスクに作成しました。

パーティションをアクティブとしてマーク

目的のパーティションができたら、Windows の「ディスクの管理」でそのパーティションを右クリックして「パーティションをアクティブとしてマーク」をクリックしてアクティブにします。

最初の参考サイト(Windows7が起動しなくなったので、ブートセクタを修復してみました。 その2 『diskpartコマンドでの修復』 (Tipstour))では、Windows が起動できない状態のため、diskpart コマンドを使って行っています(>diskpart から >exitまでの部分)が、今回は、Windows を起動できているので、Windows の「ディスクの管理」でパーティションをアクティブにしました。

以後ここでは、このパーティションをシステムパーティションと呼びます。

問題のハードディスクのケーブルを抜く

トラブルを避けるために「高速スタートアップ」は無効にしてから PC をシャットダウンします。

PC のケースの蓋を開けて、今回問題が起きている Windows XP のハードディスクを PC に認識させないようにするためにケーブルを抜きます。

ケーブルを抜く前に PC の電源プラグをコンセントから抜きます。

ハードディスクに接続されている電源ケーブルか SATA ケーブルのどちらかを抜いておけば良いようですが、今回は両方抜きました。

今までは、マザーボードの SATA 0 に Windows XP のハードディスクが接続されていて、SATA 1 に Windows 8.1 のハードディスクが接続されていました。

今回、Windows 8.1 のハードディスクは SATA 0 に接続し直しました。

回復ドライブを PC に接続して PC 起動

先に作った回復ドライブ(USB メモリー)を PC に接続して起動するのですが、この時、PC が回復ドライブから起動するように PC を操作する必要があります。

この操作は PC の機種によって違うのですが、今回の PC は、起動する時に F 12 キーを押すと、ドライブの一覧が表示され、そこから、回復ドライブ(USB メモリー)を選ぶと回復ドライブから起動します。

スタートアップ修復を実行

とりあえず初めにスタートアップ修復を実行、画面には、「スタートアップ修復で PC を修復できませんでした。」と表示されました。

ここで再起動してみましたが、起動しませんでした。

コマンドプロンプトでコマンド実行

コマンドプロンプトで先の参考サイトの通りのコマンドを実行します。

先の参考サイトでは diskpart コマンドを使ってパーティションをアクティブにしていますが今回は先に Windows の「ディスクの管理」でアクティブにしているので次の 2 つのコマンドだけを実行しました。

bootrec /fixboot

このコマンドは PBR (パーティションブートレコード)を回復します。

bootrec /fixmbr

このコマンドは MBR (マスターブートレコード)を回復します。

ここで再起動してみましたが、起動しませんでした。

再度スタートアップ修復を実行

再度スタートアップ修復を実行、画面には、「スタートアップ修復で PC を修復できませんでした。」と表示されました。

システムパーティションを見てみたら Temp というフォルダが作られその中にスタートアップ修復のログが残っていました。

スタートアップ修復は通常は C:\Windows\System32\LogFiles\Srt\ にログを残します。

スタートアップ修復が Windows の場所を認識できないときは、システムパーティションに Temp フォルダを作ってその中にログを残すのかもしれないです。

ここで再起動してみましたが、起動しませんでした。

ここで道を外れる

先の参考サイト(Windows7が起動しなくなったので、ブートセクタを修復してみました。 その2 『diskpartコマンドでの修復』 (Tipstour))のようにもう一度スタートアップ修復を実行すればそれで起動できるようになったかもしれないのに、他のサイトで得た情報を元に違うことをしてしまいました。

BCD (ブート構成データ)の再構築

コマンドプロンプトで次のコマンドを実行しました。

bootrec /rebuildbcd

このコマンドは BCD (ブート構成データ)を再構築するコマンドです。

このコマンドを実行したらハードディスクのシステムパーティションに Boot というフォルダが作られその中に BCD というファイルが一つ出来ていました。

この状態で再起動しても起動しませんでした。

3 回目のスタートアップ修復を実行

3 回目のスタートアップ修復を実行、画面には、「スタートアップ修復で PC を修復できませんでした。」と表示されました。

ここで再起動してみましたが、起動しませんでした。

bootmgr (ブートマネージャー)の回復

システムパーティションを見てみたら bootmgr が無かったので、コマンドプロンプトで次のコマンドを実行して Windows 8.1 がインストールされているパーティションから bootmgr (ブートマネージャー)をシステムパーティションにコピーして回復しました。

xcopy f:\bootmgr c:\ /h

f: は Windows 8.1 がインストールされているパーティションです。

c: はシステムパーティションです。

f: と c: は環境によって変わります。

xcopy でなくて普通の copy コマンドでも良かったもしれないです。

bootmgr は回復ドライブにもあるのでそこからコピーしても良いです。

この状態で再起動したら、なんと起動しました。

元のシステムパーティションは、Boot フォルダの中に en-US とか ja-JP とかのフォルダがあってそれらも必要なのかと思っていたら無くても起動しました。

システムパーティションは、bootmgr と Boot\BCD の 2 つのファイルがあれば起動するみたいです。

続きは次回

この後、再度スタートアップ修復を実行したりシステムパーティションに Windows RE を入れたりしたのですが続きは次回書きます。

-PC, Windows