Intel Macでのブート環境回復

Intel MacにBoot Campを導入するとMac OS XとWindowsのデュアルブート環境を容易に構築できます。
更にそのWindows中にUbuntuのWubi機能を使用してUbuntuをインストールすることもできます。
その環境の場合、マシンブート後のMac OS XとWindowsのOS選択画面でWindowsを選択すると「Windowsブートマネージャ」画面が表示されます。
その「Windowsブートマネージャ」画面には例えば次のようなOS一覧が表示されます。
Windows 7 Ultimate
Ubuntu
ここでWindows 7 Ultimateを選択してEnterキーを押すとWindowsがブートします。
またUbuntuを選択してEnterキーを押すとUbuntuがブートします。

通常このような環境ではWindowsをブートできなくなることはほとんどありません。
しかしrEFItを導入して別のLinuxを別パーティションにインストールするとWindowsをブートできなくなることがあります。
(そのLinuxのブートローダをMBRにインストールしない場合でも同様)
WindowsブートマネージャからWindowsを起動する場合以下のようなエラーメッセージが表示されます。
The boot selection failed because a required device is inaccessible.
この場合はWindowsの「コンピュータの修復」が必要となります。
こういう状況ではrEFItメニューから[Start Partitioning Tool]を選択起動してみます。
多くの場合、GPTパーティションテーブルの内容とMBRパーティションテーブルの不整合が発生していることが分かります。
例えばMBRパーティションテーブルでのBoot CampパーティションのタイプがLinuxと表示されます。
rEFItはその不整合を検知して「そのLinuxをNTFS/HPFSに変更しますか?」という旨の質問を英語で出してくれます。
それに対してyesを応答するとこの不整合は見た目には解決したように見えてもWindowsをブートできない場合があります。
これはWindowsのブートローダが\Windows\system32\winload.exeを見つけられなくなっているためです。
(もちろんこのrEFITでの不整合解決でWindowsがブートできるようになるケースもあります)

ここではWindowsの起動修復手順と、WubiでインストールしたUbuntuの起動修復手順を紹介します。


1.Windowsの起動修復手順

Windows(Vista or 7)をブートできなくなった場合は次のように修復します。
(1)WindowsインストールDVDからのブート
(2)この時、Windows Boot Manager(英語表記)が起動されます。
(3)Windows Boot Managerのオプション選択ではデフォルトの「Windows Setup [EMS Enable]」を選択します。
(4)インストーラでの言語設定の次の画面([今すぐインストール]表示のある画面)では左下にある「コンピュータを修復する」をクリックします。
(5)「システム回復オプション」ダイアログで<修復して起動する>ボタンをクリックします。
(6)これでWindowsは修復されてWindowsのブートが可能となります。


2.WubiでインストールしたUbuntuの起動修復手順

上記のWindowsの起動修復だけ実行してもWubiでインストールしたUbuntuの起動では以下のようなエラーメッセージが表示されます。
The selected entry could not be loaded because the application is missing or corruput.
これはUbuntuをインストールしたドライブ中の\ubuntu\winboot\wubildr.mbrを見つけられなくなるためです。
このUbuntuをブートできなくなった場合は次のように修復します。
(1)まずWindowsを起動します。
(2)Windowsにログオン後、コマンドプロンプトでbcdedit /vを実行します。
(3)bcdedit /vではBCD(ブート構成データ)の内容が以下のように表示されます。
リアル モード ブート セクター
--------------------------------
identifier              {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}
device                  unknown
path                    \ubuntu\winboot\wubildr.mbr
description             Ubuntu
{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee} の部分ですが、
実際には例えば{441eeb8f-dba7-11de-aee5-e8e9ca200b9e} のように表示されます。
bcdedit /vでの表示で問題となるのはそのdevice項目の値が「unknown」になっていることです。
通常この値は「partition=C:」でなければなりません。
(4)そこでbcdedit /setでリアル モード ブート セクターのdevice項目の値を修復します。
具合的には以下のコマンドを実行します。
bcdedit /set {441eeb8f-dba7-11de-aee5-e8e9e} device partition=C:
(5)再度bcdedit /vでリアル モード ブート セクターの内容を確認します。
以下のように表示されれば修復完了です。
リアル モード ブート セクター
--------------------------------
identifier              {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}
device                  partition=C:
path                    \ubuntu\winboot\wubildr.mbr
description             Ubuntu
(6)これでUbuntuのブートが可能となります。

簡単ですが以上です。