2 デュアルブートのトラブルの原因と症状
3 デュアルブート起動トラブルの対処方法
4 bcdeditを使うための準備・基礎知識
5 bcdeditでのBCDストアの具体的な変更方法
6 Vistaインストール後のboot.iniファイルの編集方法
7 デュアルブートのトラブルの簡単な対処方法
1 VistaとXP・デュアルOSの注意点
WindowsVista のインストールについては、My Free-style PCサイト内の「Windows Vistaの導入」で詳しく説明していますが、WindowsXPがインストールされているパソコンに、後からVistaをインストールすると、簡単にVistaとXPのデュアルOSとなります。
もちろんハードディスクのWindowsXPがインストールされているシステムドライブとは別のパーティションに、Vistaをインストールすることになりますが、このときに以下の3点について注意が必要です。
1 XPがあるパーティションより後順位のパーティションに、Vistaをインストールする。
2 WindowsVistaインストール後に、WindowsXPを再インストールするとVistaが起動できない。
3 Windows98とXP、XP HomeとProなど既存のデュアルOS環境では、先にboot.iniを編集する。
(boot.iniの書き換えは、Vistaインストール後でも可能ですが少し面倒となります)
上記のような注意が必要な原因は、WindowsVistaでは起動プロセスが変更されたためであり、パソコンの電源を入れた後の主なプロセスの流れが下図のようにXPとは異なるためです。
Vistaを含むデュアルOS パターン1 Vistaを起動 |
Vistaを含むデュアルOS パターン2 XPを起動 |
XP以前のデュアルOS | |||
電源ON BIOSを起動 | 電源ON BIOSを起動 | 電源ON BIOSを起動 | |||
↓ | ↓ | ↓ | |||
MBR を読み込み | MBR を読み込み | MBR を読み込み | |||
↓ | ↓ | ↓ | |||
Bootmgr を実行 | Bootmgr を実行 | ↓ | |||
↓ | ↓ | ↓ | |||
BCD を読み込み | BCD を読み込み | ↓ | |||
↓ | ↓ | ↓ | |||
Winload を実行 | NTLDR を実行 | NTLDR を実行 | |||
↓ | ↓ | ↓ | |||
↓ | boot.ini を読み込み | boot.ini を読み込み | |||
↓ | ↓ | ↓ | |||
WindowsVista を起動 | WindowsXP を起動 | WindowsXP を起動 |
普通のWindowsパソコンは、BIOSを使用して起動プロセスが開始されます。
マザーボードのROM内にあるBIOSによって、ブートデバイスが検出されますが、ハードディスクがブートデバイスとして検出されると、その起動ハードディスクの先頭ドライブの先頭セクタにあるMBR(マスター・ブート・レコード)が読み込まれます。
このMBRには、起動に必要なブート実行コードとパーティションテーブルが含まれており、始めにMBRを読み込むことは、Windows VistaでもXPでも同じです。
マイクロソフトのVistaのヘルプでは、マスタ ブート レコード (MBR)は、「ハードディスク上の先頭セクタにあり、ディスク上のパーティションに関する情報を含むコンピュータ
コード。マスタブートレコードは、コンピュータの起動プロセスを開始します。」と書かれていますが、この説明は解り易いですね。
この後XPでは、システム(アクティブ)パーティションにあるNTLDR(OSローダー)を読み込み、NTLDRが「boot.ini」ファイルを読み込み、デュアル環境では起動OSの選択画面を表示させるという順に起動プロセスが進みます。
XPとVistaとは、MBRにあるブート実行コードが異なっており、Vistaでは、Bootmgr.exe (新しいWindowsブートマネージャプログラム) が読み込まれ、Bootmgr.exeが新しいブート構成データ BCD(Boot Configuration Data)ストアを解析し、起動OSの選択画面を表示させます。
ここでデュアルブート構成でインストールされている「Windows Vista」を選択すると(上の図の左) 、WinloadがOSの読み込みを処理し、「以前のバージョンのWindows」を選択すると(上の図の真ん中)、NTLDRに制御が渡されます。
そして「以前のバージョンのWindows」が、例えばWindows XPだけと一つであればXPがそのまま読み込まれ、「以前のバージョンのWindows」が複数あれば、Windows XPのOS選択画面が表示され、その中で、例えばXP Homeでも、XP proでもMeでも98でもインストールされていれば選ぶことができます。
つまりVistaをインストールする前からデュアルOS環境であれば、下の左の画像のVistaのOS選択画面に続いて、右の画像のXPのOS選択画面が表示されます。
VistaとXPの起動プロセスを比べると、boot.iniとBCDが同じ役割をし、NTLDRの役割をBootmgrとWinloadが分割して果たしています。
WindowsVista での新しいBootmgrとBCDの採用は、OSブートオプションや OSブートローダーへのパスのようなOS固有の設定から、既定のOSの選択やブートメニューのタイムアウトのようなブート設定を分離しているというメリットがあると説明されていますが、以前のWindowsと上の図のように起動プロセスが異なるために、デュアルOS環境ではトラブルが発生する原因となっています。
また、WindowsXPまでのデュアルOS環境では、boot.iniファイルがテキストファイルであるため、ユーザーがメモ帳などテキストエディタで簡単に書き換えることができました。Vistaをインストールした後でも、boot.iniファイルの書き換えはメモ帳で可能ですが少し難しくなります。
2 デュアルブートのトラブルの原因と症状
起動に必要なファイルの所在を整理したのが下の図であり、3台のHDDを使ってWindowsXP ProとHomeEdition、WindowsVista RC1とUltimateの合計4種類のWindowsをインストールしたデュアルOSの例です。
MBRは、3台のHDDのそれぞれの先頭ドライブの先頭セクタであり、3つのMBRがあることになります。ただし、起動プロセスを開始するのに使われるのは、起動HDDのMBRです。
WindowsXP では、システムパーティションに Ntldr、Boot.ini、NTDetect.comのファイルが保存されています。例えばXPを起動して、XPのシステムパーティションがC:ドライブとすると、C:ドライブ直下に置かれています。
ただし既定のフォルダの設定では、Ntldr等の保護されたオペレーションシステムファイルは表示されないため、フォルダの表示設定を変更する必要があります。
Vista でも、システムパーティションに Bootmgr とBootフォルダがあり、このBootフォルダ内にBCDファイルがありますが、Winloadは、VistaのインストールされているブートパーティションのWindowsフォルダ内のSystem32フォルダ内にあります。
なお、このWinload.exeは、ブート開始デバイスドライバとコアオペレーティングシステムファイル(Ntoskrnl.exe など) を読み込み、オペレーティングシステムに制御を渡します。またBCDストアを編集するためのツールであるbcdedit.exeも、System32フォルダ内にあります。
1 XPを再インストールするとVistaが起動しない
VistaとXPのデュアルOS環境で使用していて、後からWindows XPを再インストールすると、マイクロソフトの説明にあるように、Vistaの起動選択画面が表示されなくなり、Vistaを起動することができなくなります。
この原因は、WindowsXPのセットアッププログラムがMBRを上書きしてしまい、XPの起動プロセスに戻してしまうためです。しかし原因ははっきりしているため、その対処方法は簡単であり後述します。
2 Vistaをインストールした後にXPが起動しない
Vistaをインストールするときに、XPがあるパーティションより前の領域にパーテーィションを作成し、Vistaをインストールすると、マイクロソフトのヘルプとサポートでも説明されているように、XPが起動しないというトラブルが発生します。
ディスク番号が変われば、既存のOSが見つからなくて起動しなくなることは、当然のことであり、XP以前のデュアルOSでも同じ問題が発生しますが、boot.iniの書き換えで容易に対処できます。
しかし、このディスクの順番が変わったために、そこにはXPがないというトラブルとは別の原因で、XPが起動しないというトラブルが発生する場合があります。
この場合、デュアルブートのつもりでインストールしたのに、Vistaのシングルブートになってしまうという単純な問題であり、OS選択画面が表示されずに、いきなりVistaが立ち上がってしまうという症状です。
何度かテストしましたが、これはXPなど既存のOSがインストールされているパーティションより、序列として前のパーティションにVistaをインストールすると、セットアッププログラムが既存のOSを見つけることができないためデュアルOSとならないようです。
トラブルとなる場合、次のような状況で意図せずにシングルブートになることを確認しています。
・HDDが1台で、第2パーティション以降にXPがあり、先頭パーティションにVistaをインストールする
・HDDが2台以上あり、優先順位の高いHDDにVistaをインストールする
(例えば「ディスク1」の先頭パーティションにXPがあり、「ディスク0」の先頭パーティションにVistaを
インストールするケースです。)
これは既存のWindowsがどのバージョンでも同じで、たとえ既存のWindowsがVistaであっても同じようにトラブルとなりますが、おそらくシステムパーティション、つまり「ディスク0」の先頭パーティションにVistaをインストールするとトラブルが避けられないようです。
この他、Vistaインストールの際のトラブルは、ハード ディスク パーティションの選択またはフォーマットができない ことや、2台以上の初期化されていないHDDがパソコンにある場合のトラブルなども確認されていますが、こうしたトラブルはレアケースでしょう。
<スポンサーリンク>
3 デュアルブート起動トラブルの対処方法
Windows Vistaをインストールして使ってきたパソコンに、後からWindows XPを再インストールするとWindows Vistaが起動しなくなってしまうというトラブルが発生します。
これは同じMBRでも、VistaのMBRとXPのMBRは異なるためであり、Windows XPのインストール時にセットアッププログラムによって、MBR、ブート セクタ、およびブート ファイルの内容がすべて書き換えられてしまうためです。
この対処方法は、マイクロソフトのサポートページで説明されており、要はVistaのMBRに戻し、BCDを再構築するのですが、この説明では簡単そうではありません。
一般的な方法論としては、Vistaの起動トラブルを解決するため、次の3通りの方法がマイクロソフトのサポートページで説明されています。
<起動できないときの対処方法>
方法 1 | スタートアップ修復を使って、 MBRと起動プロセスを修復 |
方法 2 | Bootrec.exe を使って、MBRと起動プロセスを修復 |
方法 3 | Bootsect.exeとBcdeditを使って、MBRとBCDストアを再構築 |
いずれの方法も、Vistaのインストールディスクを挿入してパソコンを起動し、インストールの開始画面で、インストールに入るのではなく、「コンピュータを修復する」を選択して、右下の「システム回復オプション」の画面を表示させ、この画面から行います。
(XPを再インストールしてVistaが起動しない対処方法)
方法1は、右の画面の一番上のメニューの「スタートアップ修復」をクリックします。
このスタートアップ修復は、この後何もしなくても修復が試みられ、ブートセクタコードの破損を発見し、回復を正常に完了したと表示されました。
しかし、再起動後はXPも起動しなくなり、このXPの再インストールによりVistaが起動しないトラブルでは、事態がより深刻になるだけで役に立ちません。
方法2と方法3は、一番下のメニューの「コマンドプロンプト」をクリックしてコマンドを入力します。
方法2では、コマンドプロンプトに「bootrec.exe /fixboot」とこのまま入力し正常に完了、続いて「bootrec.exe /fixmbr」と入力し正常に完了、これで再起動後にVistaのOS選択画面が無事復活しました。
なお、次に説明する方法3の<MBRとBCDを再構築する方法>のうち「手順1」の実行だけでVistaのOS選択画面が復活します。
(Vistaをインストールした後にXPが起動しない対処方法)
次に、デュアルブートのつもりでインストールしたのに、Vistaのシングルブートになってしまうトラブルは、方法1でも方法2でも修復できません。
スタートアップ修復の結果は、「問題が検出されませんでした」と表示され、Bootrec.exeも操作は正常に終了してもトラブルは解決しません。
残るは方法3の<MBRとBCDを再構築する方法>ですが、同じコマンドプロンプトでの操作でも、方法3の場合は、Vistaがインストールされているパーティション内の Windowsフォルダ内のSystem32フォルダに移動し、そこにある編集ツールであるbcdeditを使います。
なお「コマンドプロンプト」の起動方法や「bcdedit」の操作方法について、よく解らない場合は、先に「4 bcdeditを使うための準備・基礎知識」と「5 bcdeditでのBCDストアの具体的な変更方法」に目を通してください。
<MBRとBCDを再構築する方法>
Vistaのインストールディスクにある「Bootsect.exe」と、VistaのインストールされているドライブのWindowsフォルダ内のSystem32フォルダ内の「bcdedit」を使って編集する方法を説明しますが、ドライブレターはそれぞれの環境で確認してください。
手順 1 | Windowsブートマネージャプログラムに制御を渡すブートコードを復元 |
手順 2 | BCD ストアにWindows XP用のエントリを作成 |
手順 3 | Windows XPのインストール先ドライブを指定 |
手順 4 | Windows XP用のエントリにブートローダー(ntldr)を追加 |
手順 5 | ブートメニューでの表示方法を設定 |
D:ドライブがWindowsVistaがインストールされているパーティション、G:ドライブがDVDドライブのドライブレターとして、具体的なコマンドプロンプトでの記述方法(フルパス)が、次の例示です。
手順 1 | G:\boot\bootsect.exe /NT60 All |
手順 2 | D:\Windows\system32\bcdedit /create {ntldr} /d "(任意のエントリ名)" |
手順 3 | D:\Windows\system32\bcdedit /set {ntldr} device partition=x: |
手順 4 | D:\Windows\system32\bcdedit /set {ntldr} path \ntldr |
手順 5 | D:\Windows\system32\bcdedit /displayorder {ntldr} /addlast |
この手順2の(任意のエントリ名)は、普通にVistaをインストールすると、「以前のバージョンのWindows」というエントリ名が使われますが、例えば「Windows XP」とか適当な名前を付けても良いでしょう。
手順3の「partition=x:」の「x:」は、ntldrのあるシステムパーティションであり、C:ドライブにntldrがあれば、「partition=C:」と記述します。
VistaのMBRに戻し、BCDを再構築するために、マイクロソフトのサポートページで説明されている手順ですが、Vistaのシングルブートになってしまうトラブルの場合は、手順1と手順2が不要で、手順3〜5を実行すれば解決する場合もあるし、また逆に、このまま実行しても結果は回復できない場合があります。
詳しくは「5 bcdeditでのBCDストアの具体的な変更方法」で説明しますが、システムパーティションのあるHDDを取り外したり、Vistaインストール時にシステムパーティションをフォーマットしたりすれば、もともとのNTLDRがなくなり、bcdeditでの手順3の設定が不可能なためです。
bcdeditを使う前に、コマンドプロンプトの使い方や、Vistaを通常起動してコマンドプロンプトでbcdeditを使おうとしても、アクセス拒否されるなど少し使い方が難しいので、次の「bcdeditを使うための準備・基礎知識」で詳しく説明します。
4 bcdeditを使うための準備・基礎知識
起動トラブルほど深刻な事態でなくても、VistaのOS選択画面を編集したいことも多いでしょう。
この編集方法は、次の3通りの方法がありますが、「起動と回復」ダイアログボックス、システム構成ユーティリティ Msconfig を使う方法では、限られた事項の変更しかできません。
そのため、ここではブート構成データの編集ツールであるbcdeditを使う方法を説明します。なお方法1と方法2は、後述の「7 デュアルブートのトラブルの簡単な対処方法」で説明しています。
方法1 | 起動と回復ダイアログボックスで変更 | 既定のOSの変更 タイムアウト値の変更 |
方法2 | システム構成ユーティリティで変更 | 既定のOSの変更 タイムアウト値の変更 エントリーの削除 |
方法3 | コマンドラインツール Bcdedit で編集 | 新エントリーの追加 エントリーの修正、削除等全て可能 |
Bcdedit.exeはコマンドラインツールであり、「コマンドプロンプト」を起動する必要がありますが、コマンドプロンプトの起動方法は、次の3通りの方法があります。
<コマンドプロンプトの起動方法>
起動方法 1 | WindowsVistaインストールディスクのシステム回復オプションから起動 |
起動方法 2 | WindowsXPまたはVistaの起動時に起動選択オプションから選択 |
起動方法 3 | WindowsXPまたはVistaを通常起動してからcmd.exeを起動 |
起動方法1は、前に説明したVistaのインストールディスクを使う方法ですが、パソコンが全く起動しないトラブルのときの常套手段です。
起動方法2は、パソコンの電源を入れた後の起動時に、F8キーを押し起動オプション選択画面から「コマンドプロンプト」を選択しますが、インストールディスクを使うより早く起動ができます。
起動方法3は、XPまたはVistaのどちらかが起動できる場合に限られますが、そのWindows上の、スタートメニュー→アクセサリ→コマンドプロンプトと順にクリックして起動するか、「ファイル名を指定して実行」で「command」または「CMD」と入力するか、あるいは起動したWindowsフォルダ内のSystem32フォルダ内の「cmd.exe」ファイルをWクリックするか、いずれの方法でも可能です。またVistaでは検索で「cmd」と入力しても表示できます。
ここでは、起動方法3により、「コマンドプロンプト」を起動して、 Bcdedit での編集方法を説明しますが、「コマンドプロンプト」を使い慣れていない方のために、基礎的な操作方法を先に説明します。
「コマンドプロンプト」は、WindowsパソコンでDOSのコマンド(命令文)が使えるように残されているものであり、DOSのコマンドラインの入力方法の知識が少し必要です。
<Vistaを起動したVistaのコマンドプロンプトの画面>
Vistaが起動可能なときは、Vistaを立ち上げてコマンドプロンプトを起動することができます。
ただし普通にVistaが起動した状態で、コマンドプロンプトを起動しても、bcdeditで使うブート構成データ ストアが開けずアクセス拒否されて使えないため準備が必要です。
Vistaでセキュリティ強化されたアクセス権限に起因する問題ですが、「スタート」→「コントロールパネル」→「ユーザーアカウントと家族のための安全設定」→「ユーザーアカウント」と順にクリックし、「ユーザーアカウントの制御の有効化または無効化」をクリックし表示される画面の「ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」のチェックを外し、UACを一時的に無効にしておく必要があります。
上の画面は、Vistaのスタートメニュー→アクセサリ→コマンドプロンプトと順にクリックするか、検索で「CMD」と入力して表示させたコマンドプロンプト画面です。
上の画面は、VistaのWindowsフォルダのSystem32フォルダ内にある「cmd.exe」をWクリックして表示させたコマンドプロンプト画面であり、前の画面と比べると3行目が、「C:\Users\asugi23>」と、「C:\Windows\System32>」と異なっています。
実は、この後どちらの画面からも、「bcdedit.exe」と入力するとbcdエディタが起動します。
本来はbcdエディタがSystem32フォルダ内にあるため、この画面の「C:\Windows\System32>」という状態から「bcdedit.exe」と入力し起動することがセオリーですが、「bcdedit.exe」コマンドは、Vistaから起動した「cmd.exe」と同じSystem32フォルダ内にあり、あらかじめ定義されているため、コマンドの入力のみで起動できます。
<XPを起動したXPのコマンドプロンプトの画面>
XPが起動可能なときは、XPを立ち上げてコマンドプロンプトを起動することができます。
上の画面は、XPのスタートメニュー→アクセサリ→コマンドプロンプトと順にクリックして表示させたコマンドプロンプト画面です。ここで「bcdedit.exe
/?」と入力しても、上の画面のようにコマンドとして認識されていません。
なぜなら「bcdedit.exe」は、XPのあるC:ドライブのWindowsフォルダ内にはなく、VistaのあるE:ドライブにあるWindowsフォルダ内のSystem32フォルダ内にあるためです。(この例で E:ドライブは、Vistaがインストールされているドライブであり、それぞれの環境で異なります。)
そのためディレクトリ(フォルダ)を E:\Windows\System32 に移動しなければなりません。
ドライブの移動は「e:」と入力しEnterキーを押せば移動します。続いてフォルダの移動は、「cd」コマンドを使い、「cd \Windows\System32」と入力しEnterキーを押せば移動できます。
なお文字は、カーソルが点滅している位置に入力できますが、間違えたときは「BackSpace」キーでやり直すことができます。また矢印キー「←」、「→」でカーソル位置を変更できます。
上の画面は、XPのWindowsフォルダ内のSystem32フォルダ内にある「cmd.exe」をWクリックして表示させたコマンドプロンプト画面です。
XPから起動したコマンドプロンプトからは、どうせVistaのWindowsフォルダ内のSystem32フォルダ内にディレクトリを移動する必要があるため、どういう方法でコマンドプロンプトを起動しても同じと思えますが、実は、XPの場合も、bcdeditを使う場合は、前の画面より、こちらの画面から入っていった方が良いでしょう。
なぜかというと、前の画面から入ると、初めてコマンドプロンプトを起動した場合、画面右側のスクロールバーが表示されないので使い難いという状況となり、必ずしもそうなるとは限らないかもしれませんし修正できますが、実行プログラムである「cmd.exe」を直接起動した方が無難のようです。
この後、前に説明した方法と全く同じように、ディレクトリを「E:\Windows\System32」に移動して「bcdedit.exe」を使う準備は完了です。
<コマンドプロンプトの使い方・補足説明>
これまでの説明で、DOSのコマンドは、ディレクトリ(フォルダ)を移動する「cd」コマンドを説明しましたが、この「cd」コマンドで、「cd e:\windows\system32」と入力し、ドライブの移動も兼ねて、一気にディレクトリを移動することも可能です。
さらにフルパスで「e:\windows\system32\bcdedit /?」と入力すれば「cd」コマンドを省略し、いきなりbcdエディタのヘルプを表示させることができます。
一般的にbcdeditの使い方の説明は、フルパスで説明されていることが多いでしょうし、このファイルの説明でも前に説明した<MBRとBCDを再構築する方法>では、フルパスで記述しています。
なおコマンドプロンプトの終了は、DOSの「exit」コマンドを使い、「exit」と入力しEnterキーを押すことが正しい終了方法です。
<コマンドプロンプトの起動方法の結論>
Vistaが起動している状態では、そのWindowsフォルダ内のSystem32フォルダ内の「cmd.exe」をWクリックして起動すると、やはり解り易いでしょう。
XPが起動している状態でも、そのWindowsフォルダ内のSystem32フォルダ内の「cmd.exe」をWクリックして起動し、その後、カレントディレクトリをVistaの「\System32」に移動しておくと、以降は「E:\Windows\System32」の入力が不要であり、手間が省けて解り易いでしょう。
なおVistaを起動したときは、Vistaのインストールされているドライブは「C:ドライブ」であり、XPを起動したときは、XPがインストールされているドライブが「C:ドライブ」で、Vistaがインストールされているドライブが「E:ドライブ」となっているというこの事例のように、Windows上のドライブレターは、そのWindowsが振るため異なります。
一般的にフルパスで説明することが多いのは、現在のディレクトリ、つまりカレントディレクトリに関わらず実行できること、ゆえにコマンドプロンプトをどのように起動しても良いので説明し易いためです。
しかしコマンドプロンプトを使う側は、DOSの知識のあるユーザーは常にカレントディレクトリを意識するでしょうし、また慣れていないユーザーにとっても、フルパスでは入力ミスをしそうですから、先に、カレントディレクトリをVistaの「\System32」としておいた方が安全でしょう。
よって以降は、Vistaから起動したコマンドプロンプト画面では「C:\Windows\System32>」と表示された状態、XPから起動したコマンドプロンプト画面ではVistaがE:ドライブにインストールされているとすると「E:\Windows\System32>」と表示された状態、つまり直接「bcdedit.exe」コマンドを入力できることを前提に、bcdエディタの使い方を説明します。
5 bcdeditでのBCDの具体的な変更方法
<bcdedit.exeで最初に確認すること>
始めに、bcdedit.exeの使い方を確認するために、そのヘルプを表示すると良いでしょう。
コマンドのヘルプを表示するためには、「/?]と入力するのが通例であり、「bcdedit.exe /?」または「Bcdedit /?」と入力します。
なおオプション「/?」は、この場合は一文字スペースを空けなくても良いのですが、オプションやパラメータを重ねる場合、例えば、「bcdedit /? /id」のように入力する場合は間にスペースが必要であり、常にスペースを入れた方が良いでしょう。
右の画面が bcdedit.exe のヘルプです。
ボリュームの多いヘルプであり、スクロールバーで戻して順に目を通してください。
「ストア内のエントリの操作のコマンド」〜「ブートマネージャを制御するコマンド」は時々使いそうな操作が並んでいます。
実際に bcdedit を使うためには、操作コマンド毎のさらに詳しい使い方を知っておく必要があります。
例えば、エントリーを削除(delete)しようと思えば、先に「bcdedit /? delete」と入力し、そのヘルプを見てください。
コマンドプロンプトでは、「/?」を多用し、コマンドラインの記述方法を確認しないと使えないことが通例です。
次に、作業を始める前に現在のエントリを確認し、GUIDと呼ばれる識別子を知っておくことが必要です。
そのため「bcdedit /enum」と入力してください。実は、単に「bcdedit」と入力しEnterキーを押しても「bcdedit /enum」と同じ結果が返され、それだけ常に使われるコマンドなのです。
「bcdedit /enum」で表示される結果では、次のエントリ(登録項目)が表示されます。
「Windowsブートマネージャ」のエントリ ・・・・一つ
「WindowsレガシOSローダー」のエントリ ・・・一つ
(レガシーとは古いというような意味で、以前のWindows用のOSローダーNTLDRのエントリです)
「Windowsブートローダー」のエントリ ・・・・・複数
(インストールされているビスタの数だけエントリがあります)
それぞれのエントリで、まず確認することは、表示の一番上の識別子名identifire(ID)、次のdeviceの存在するパーティション、次のpathのディレクトリへのパスであり、この表示を見れば、例えばWindowsレガシOSローダーはntldrというエントリ名が使われ、C:ドライブ直下にあり、「以前のバージョンの Windows」用にOSローダーのntldrが使われるということがわかります。
また「Windowsブートローダー」は、Vistaのインストールされているドライブにあり、前に図説したようにVistaのインストールされているドライブのWindowsフォルダ内のSystem32フォルダにあるVista用のOSローダーであるWinload使われることが確認できます。
identifire(ID)を良く見ると、「defalt」や「ntldr」と記述されているものと、{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}と16進数の英数字で記述されているものがあります。
Bcdeditでは、16進数の固有の識別子(GUID)でエントリを区別するのが本来ですが、例外として既知の識別子が用意されており、うち普通のパソコンで既知の識別子は「bootmgr」、「ntldr」、「default」が表示されるぐらいでしょう。
なお「default」は既定のエントリであり、パソコンの電源を入れたまま放置すれば起動するOSのエントリとなります。他の既知の識別子など詳しく知りたければ「bcdedit /? id」と入力してください。
平たく言うと、エントリの名前が、16進数が並んでいる固有の識別子(GUID)のものと、「ntldr」と既知の識別子になっているものがあり、Vistaのブートローダーのエントリーは{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}と16進数ですから、特に複数のVistaをインストールしている環境では区別することが面倒です。
もちろん「ntldr」エントリは、略称のようなものですから、本来の16進数の識別子(GUID)を持っており、{466f5a88-0af2-4f76-9038-095b170dc21c}が「ntldr」の固有の識別子、言わば本名です。
「bcdedit /enum」に「/v」オプションを付し、「bcdedit /enum /v」と入力すると、全てのエントリーのidentifire(ID)が既知の識別子ではなく、16進数の英数字で表示されます。
なお、「bcdedit /enum」に「all」と「/v」を付し、「bcdedit /enum all /v」と入力すると、「休止状態から再開」、「Windowsメモリテスタ」、「デバッガ設定」など通常起動時以外のためのエントリ項目も表示されますが、こうした項目は触らない方が良いでしょう。
もう一度、「bcdedit /enum」と入力し、エントリ項目を表示させておいてください。
なおVistaからコマンドプロンプトを起動し、現在起動中のVistaのエントリ名を編集する場合は、「bcdedit /enum /v」と固有の識別子(GUID)名を表示させてください。
さて準備は完了で、具体的にBCD ストアのエントリの編集方法、つまりVistaの起動OS選択画面の編集について、慣れるために簡単な順に説明します。
1 タイムアウト値の変更 /timeout | |
bcdedit /timeout 10 OS選択画面の表示時間が長いと、起動待ちの時間が長くなるので10秒と短く変更します。 |
これは説明するまでもなく簡単で「この操作を正しく終了しました。」と表示されて完了です。なお「timeout」と「10」の間に一文字分のスペースが空いており、この場合はスペースが必要です。
このスペースを取るかどうかということは、慣れている方は、コマンドとパラメータの間にスペースを空けると直感的に解るのでしょうが、もし解らなければ、「bcdedit /? /timeout」と入力し、ヘルプの事例を確認してください。
ヘルプの事例を見て、スペースが空いているところは空ける、それが簡単で良いでしょう。
2 既定のエントリの変更 1 /default | |
bcdedit /default {ntldr} 電源を入れ放置したまま起動する既定のOSを、Vistaから「以前のバージョンのWindows」に 変更します。 |
これも前の説明を読まれていれば、何も疑問はないでしょうね。
お決まりのことですが、念のため「bcdedit /? /default」と入力し、ヘルプを確認してください。
さて、ここまで済んだら一度パソコンを再起動してみて、OSの起動選択画面が変わっていることを確認してください。きっと次に進む自信が持てることでしょう。
3 既定のエントリの変更 2 /default | |
bcdedit /default {1f1cb2d6-7827-11db-a912-f35dc36d283c} { }内の識別子は固有のもので異なります。 電源を入れ放置したまま起動する既定のOSを、「以前のバージョンのWindows」からVistaに 戻します。 |
前に説明したように、Vistaのエントリは、既知の識別子がなく、16進数のGUIDを記述する必要があります。Vistaのエントリの識別子の長い文字列をメモして、間違えないように入力するのは大変と思いませんか。
しかし「コマンドプロンプト」でもコピーして貼り付けることができます。
右の画面のように、コマンドプロンプト画面のメニューバー上の左上端のアイコンをクリックします。
そのプルダウンメニューの「編集」→「範囲指定」をクリックします。
その後、コピー元のビスタの識別子の文字列をクリックして選択しEnterキーを押します。
そしてカーソルの点滅しているところに右クリックから貼り付けることができます。
つまり、先に「bcdedit /default」と入力し、一文字スペースを空けてカーソルが点滅している状態で、コピーの範囲指定し、そのまま貼り付けると簡単にコマンドラインが入力できます。
一度コピーの仕方を覚えれば難しくはありません。
前に事前準備として、「bcdedit /enum」または「bcdedit /enum /v」と入力し、エントリ項目を表示させておくように説明しましたが、これはコピーをして貼り付けて使うことを想定しての準備です。
なお、上の画面はXPから起動したコマンドプロンプトの画面ですがVistaから起動したコマンドプロンプトでも「範囲指定」して「貼り付け」る方法は同じです。
4 OS選択画面の表示順の変更 /displayorder | |
bcdedit /displayorder {ntldr} /addfirst 起動OS選択画面の表示順の最初(一番上)に「以前のバージョンのWindows」を追加します。 なお、このntldrエントリが既にある場合は、表示順を一番上に変更します。 |
|
bcdedit /displayorder {ntldr} /addlast 起動OS選択画面の表示順の最後に「以前のバージョンのWindows」を追加します。 なお、このntldrエントリが既にある場合は、表示順を最後に変更します。 |
|
bcdedit /displayorder {1f1cb2d6-7827-11db-a912-f35dc36d283c} {ntldr} 起動OS選択画面の表示順を、「Vista」、「以前のバージョンのWindows」の順に指定します。 |
上の3つの書式例のうち最後の3番目は難しそうに見えますが、起動OS選択画面に上から表示したい順に並べるだけ、上の例ではVistaのGUID、次いで「以前のバージョンのWindows」用の既知の識別子ntldrを並べるだけと単純なものです。ここではエントリが2つの例ですが、3つでも4つでも順に並べれば、並べた順に上から表示されます。
ただし、エントリが3つあって、例えば「以前のバージョンのWindows」用、「Vista ultimate」用、「Vista HomePremium」用と上から順にエントリがあり、「以前のバージョンのWindows」を真ん中に表示したいという場合でも、「/addfirst」を使い「Vista ultimate」用または「Vista HomePremium」用のエントリを一番上に持っていけば可能というように、少し考えれば手間をかけずに簡単にできるでしょう。
なお、「/displayorder」は表示順が変わるだけで、既定のOSは変わりません。
5 既存のエントリの削除 /delete | |
bcdedit /delete {1f1cb2d6-7827-11db-a912-f35dc36d283c} { }内の識別子は固有のもので異なります。 起動OS選択画面に表示される一つのVistaのエントリを削除します。 |
削除の場合は、エントリそのものの削除に加えて、表示順序から除外するかどうかのオプションの選択の問題があり、少し難しいので先に「bcdedit /? delete」と入力しヘルプを見てください。
上の例では、起動OS選択画面の表示順からも除外されますが「/nocleanup」を付すと表示順に残しておくことができます。
なお、表示順からも除外する場合は、「/nocleanup」を指定しないと「/cleanup」が付されているとみなされますから、あえて「/cleanup」を付す必要はありません。
また、既知の識別子のエントリを削除する場合は、「/f」オプションを付さないと削除できないようになっており、「以前のバージョンのWindows」用のエントリを削除する場合は「bcdedit /delete {ntldr} /f」と入力します。
将来、XP以前のWindowsを使わなくなったときには、「以前のバージョンのWindows」用のエントリを削除することができますが、WindowsXPを使い続ける当分の間は、「以前のバージョンのWindows」用のエントリを削除してはいけません。
6 OS選択画面のエントリ名称の変更 /set | |
bcdedit /set {識別子} description "Vista RC1 Seagate200" { }内の識別子は固有のもので、Vistaの16進数の識別子を記述してください。 識別子で指定したVistaのエントリの表示名称を、「Vista RC1 Seagate200」に変更します。 |
「/set」コマンドでは、いろいろなことができ、何をするのか区別するためにTYPESが用意されています。TYPESは、{識別子} の後に記述しますが、上の例では、エントリの説明を定義するためのTYPESの「description」を使って、起動OS選択画面でのVistaのエントリーの表示名称を変更しています。
「bcdedit /? /set」で書式を確認し、「bcdedit /? /types」でTYPESの種類を調べることができます。
なお次の説明の新規エントリの追加でも「/set」コマンドを使いますが、このとき使うTYPESは、「device」と「path」であり、OSローダーのあるパーティションとパスを設定します。
「description」も「path」も、文字列(string)で記述するため、その文字列内に例えば"Vista RC1 Seagate200"のようにスペースを含む場合は、二重引用符 ("") で囲む必要があります。
上の書式例では長くなって見にくいので省きましたが、識別子は{eecfa32a-c733-11db-9210-c793dd20ce3d}と昨年11月にインストールしたVistaの評価版(RC1)のものです。
前にも説明したようにVistaのエントリーの識別子(ID)は、固有のもので異なりますから、Windowsブートローダーのパーティションを確認し変更するエントリの識別子(identifier)をコピー(範囲指定)して貼り付けると間違いがなくて安全です。
Vista Ultimate、Vista HomePremium、Vista RC1など複数のVistaをインストールしている場合は、起動OS選択画面に、「Microsoft Windows Vista」ばかり並んでいても区別しにくいため、表示名称を変更すると便利です。なお上の例では、どのHDDにインストールされているかも解るように表示名を付けています。
7 新規エントリの追加 1 /create | |
1 bcdedit /create {ntldr} /d "(任意のエントリ名)" 2 bcdedit /set {ntldr} device partition=x: 3 bcdedit /set {ntldr} path \ntldr 4 bcdedit /displayorder {ntldr} /addlast x:はntldrがあるシステムパーティションです。 「以前のバージョンのWindows」用のエントリを新たに作成するためには、上の4行のコマンド ラインを順番に実行します。(もちろん番号は不要です) |
「/create」は、既知の識別子「ntldr」を指定したときは、後は「/d」でエントリの表示名称を付けるだけと簡単です。
「/set」は、「device」でntldrがあるパーティションを指定、「path」でパスを記述しますが、ntldrは存在するパーティション(ドライブ)直下にあるため、「\ntldr」と入力するだけとこれも簡単です。「/displayorder」は、このエントリを表示順の最後に追加する場合は「/addlast」です。
上の例は、前に「デュアルブート起動トラブルの対処方法」で<MBRとBCDを再構築する方法>を説明しましたが、そのうちbcdeditでのエントリの作成部分と同じです。
右の画面のように、Vistaのシングルブートになるトラブルの場合は、手順2〜3の3行を実行すれば起動OS選択画面が復活します。
ただし、システムパーティションにntldrがないと操作が実行できません。
そのため、他のXPを使用しているパソコンからでも構わないので、事前に ntldr、boot.ini、NTDETECT.COM の少なくとも3つのファイルをフロッピーにでもコピーしてシステムパーティションに移しておく作業が必要になります。
なおBoot.iniファイルは、パソコンのディスク構成に合わせて編集する必要がありますが、Vistaの起動OS選択画面が復活した後からでも修正可能です。
こうして組み込んだ以前のWindows用の起動OS選択画面は、日本語フォントが組み込まれていないため英語版になりますが、実用的には問題ないでしょう。
8 新規エントリの追加 2 /create | |
1 bcdedit /create /d "Windows Vista" /application osloader 2 bcdedit /set {識別子} device partition=x: 3 bcdedit /set {識別子} path \windows\system32\winload.exe 4 bcdedit /displayorder {識別子} /addlast 5 bcdedit /set {識別子} osdevice partition=x: 6 bcdedit /set {識別子} systemroot \windows 7 bcdedit /set {識別子} nx optin { }内の識別子は固有のもので異なります。X:はwinloadのあるブートパーティションです。 Vista用の新規エントリを作成するためには、上の7行のコマンドラインを順番に実行します。 |
Vista用の新規エントリの作成は、「bcdedit /create /d "Windows Vista" /application osloader」で新しい識別子(GUID)が作成され、以降この識別子を使って、ntldrの新エントリーを作る同じ手順で4行のコマンドラインを実行し、新しいエントリが作成されて起動OS選択画面に「Windows Vista」とエントリが表示されても、このエントリからVistaは起動しません。
他のWindowsブートローダーのエントリをよく見ると、他に設定されている項目として「osdevice」、「systemroot」、「nx」があります。
これらを「/set」コマンドで既存のエントリの記述と同じように指定してみました。
その結果、新しいエントリが作成でき、この新しいエントリから無事Vistaを起動することができました。
右の画面は、この後半部分の操作画面です。
このように、同じような文字列の入力が続く場合、矢印↑キーを押すと前に入力した文字列が表示されます。一旦、前に入力した文字列を表示させて、異なる部分のみ修正すると作業が楽になります。
マイクロソフトの「ブート構成データエディタについてよく寄せられる質問」では、Vistaの新エントリを作成する場合は、「/copy」コマンドを使う方法が説明されています。
この「/create」を使う方法が基本と思いますが、マイクロソフトのヘルプとサポートを探しても、どこにも詳しい説明はありません。
そのため確認が取れていないことがあり、同じ方法でVistaの新エントリーを作成する場合は、自己責任で行い、トラブルがあっても自分で対処してください。
6 Vistaインストール後のboot.iniファイルの編集方法
WindowsXP までの起動OS選択画面は、Boot.iniファイルを書き換えることで編集ができます。
このBoot.iniファイルは、前に図説したように、システムパーティションにあり、例えばXPを起動して、システムパーティションがC:ドライブとすると、C:ドライブ直下に置かれています。
なおVistaを起動しても、以下の説明と同じように編集できますが、Vistaではユーザーアカウント制御(UAC)を無効にしておく必要があり、「スタート」→「コントロールパネル」→「ユーザーアカウントと家族のための安全設定」→「ユーザーアカウント」と順にクリックし、「ユーザーアカウントの制御の有効化または無効化」をクリックし表示される画面の「ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」のチェックを一時的に外す必要があります。
このシステムパーティションには、Boot.iniだけでなく、Ntldr、NTDetect.comを合わせて、3つのWindowsの起動に必要なファイルが保存されています。
ただし、既定のフォルダの設定では、Ntldr等の保護されたオペレーションシステムファイルは表示されないため、次のようにフォルダの表示設定を変更する必要があります。
フォルダのメニューバーの「ツール」→「フォルダオプション」と順にクリックし、フォルダオプションの画面で「表示」をクリックします。
・ 「システムフォルダの内容を表示する」をチェックする
・ 「すべてのファイルとフォルダを表示する」をチェックする
・ 「登録されている拡張子は表示しない」のチェックを外す
・ 「保護されたオペレーションシステムファイルは表示しない」のチェックを外し、注意が表示され
ても「はい」をクリックする
なお、例えば「boot.ini」ファイルの書き換え後は、フォルダオプションの表示タブで「既定値に戻す」をクリックすれば戻せます。
システムパーティション内の「boot.ini」ファイルが見つかったら、右クリック→プロパティをクリックし、このプロパティの画面で「読み取り専用」のチェックを外します。これで従前どおりテキストファイルとしてメモ帳で自由に編集することができるようになります。
システムパーティション内の「boot.ini」ファイルをWクリックすると、メモ帳が起動し、「boot.ini」ファイルの内容が表示されます。
Vistaインストール後は、下の例のように上部にWarniningのコメントが書き加えられており、Boot.iniは、XP以前のWindowsで使われるもので、Vistaのbootオプションの編集は、BCDEDIT.exeを使うようにという注意書きが表示されています。
でも、Vistaの起動OS選択画面で「以前のバージョンのWindows」を選択した後に、続けて表示されるXP用の起動選択画面は、このboot.iniファイルでしか書き換えることができません。
boot.iniファイルの記述の修正方法 | (注)実際のファイルは文字色は付いていません |
; ;Warning: Boot.ini is used on Windows XP and earlier operating systems. ;Warning: Use BCDEDIT.exe to modify Windows Vista boot options. ; [boot loader] timeout=30 ←例えば「10」に変更すれば、タイムアウト値を10秒と短くすることができます default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ←既定のOSは( )内の番号で変更可能 [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Pro Maxtor" /NOEXECUTE=OPTIN /FASTDETECT multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /NOEXECUTE=OPTIN /FASTDETECT |
「default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS」は、「ディスク 0」、「パーティション1」にあるWindowsが既定のOSであることを指定しており、この場合rdisk(0)を、rdisk(1)に番号のみ変更すれば、既定のOSがMicrosoft Windows XP Pro MaxtorからMicrosoft Windows XP Home Editionに変わります。
「Microsoft Windows XP Pro Maxtor」、「Microsoft Windows XP Home Edition」のOS選択画面での表示文字は、もちろんメモ帳でファイルを開いていますから自由に書き換えることができます。
また、OS選択画面での表示順も、次のように、このテキストファイルの記述の上下の順番を変えるだけで可能であり、エントリの削除も、そのエントリのテキストを削除するだけです。
[operating systems]
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Microsoft Windows XP Home Edition"
/NOEXECUTE=OPTIN /FASTDETECT
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Pro Maxtor"
/NOEXECUTE=OPTIN /FASTDETECT
エントリの追加も、既存のエントリをどれか一つをコピーして付け加え、rdisk(0)partition(1)の、ディスク番号とパーティション番号を、そのエントリで起動するWindowsのドライブを指定するように変更し、OS選択画面での表示文字は解りやすいように適当に変更すれば良いでしょう。
そして「boot.ini」ファイルの書き換え終了後は、「上書き保存」して完了です。
なお、boot.iniで行う基本的な編集作業については、XPと同じであり、「WindowsXP環境の移行」でも説明していますので、もしこの説明が解り難かったら参考にしてください。
<システム構成ユーティリティでの起動OS選択画面の編集>
限られた項目であれば、XPを起動し「ファイル名を指定して実行」で「msconfig」と入力し「OK」をクリックして起動するシステム構成ユーティリティの「BOOT.INI」タブの画面で修正が可能です。
この右の画面で変更できるのは次の事項です。
1 タイムアウト値
2 既定OSの指定
3 表示順の変更
使い方は難しくないのですが、「既定OSの指定」と「表示順の変更」は、先に画面上部の枠内でエントリを選択する必要があります。
右の画面では 現在 rdisk(1)partition(1)にあるMicrosoft Windows XP Home Editionが選択された状態にあり、このエントリは、既定のOSではないため「規定値に設定する」が選択できます。
表示順は、現在2つのエントリのうち下に表示されているため「上へ移動」が選択できます。 なお、一番下に表示されていて、これ以上は下に移動することができないため、「下へ移動」は選ぶことができない状態になっています。
またタイムアウトは、中段の右側にあり、数字を入力すれば変更できます。エントリの追加や削除ができないことや表示名が変更できないことが不自由ですが、取り敢えず簡単に修正できるように用意されています。
7 デュアルブートのトラブルの簡単な対処方法
マイクロソフトの起動プロセスの説明は、BIOS以前の問題、つまりHDDの増設、接続ポートの変更、BIOSでのHDD起動優先順位の変更などは、触らないことを前提に説明されています。
しかし、自作パソコンではHDDを3〜4台接続し、BIOS以前の変更も容易であり、HDDの数が多いと認識順には注意が必要ですが、場合によっては起動HDDを変更して、新たに起動プロセスを再構築することもできます。
Windowsは所詮HDD内に保存されていること、またWindowsの起動以前にBIOSが起動するため、BIOS以前の対応で、デュアルブートの起動トラブルを防いだり解決できるのであれば簡単でしょう。
<BIOSとWindowsのHDDの認識>
WindowsXPでは、BIOSの起動優先順位が大きな意味があり、WindowsXPをインストールするときのセットアッププログラムが表示するHDDのディスク番号は、下の表のとおり接続ポートは無視し、BIOSの起動優先順位と同じです。
接続ポート | BIOS 起動優先順 |
WindowsXPセットアップ | WindowsXP ディスクの管理 |
Vista セットアップ |
Vista ディスクの管理 |
|
Seagate 320 | port 0 | 3 | E | ディスク 1 | ディスク 0 | ディスク 0 |
Maxtor 300 | port 1 | 1 | C | ディスク 2 | ディスク 2 | ディスク 3 |
Hitachi 160 | port 2 | 2 | D | ディスク 3 | ディスク 3 | ディスク 1 |
Seagate 200 | port 3 | 5 | G | ディスク 4 | ディスク 4 | ディスク 4 |
Maxtor 80 | IDE | 4 | F | ディスク 0 | ディスク 1 | ディスク 2 |
実は、WindowsXPのセットアッププログラムでは、ディスクの順番ではなく、パーティション毎のドライブレターを振っており、起動優先順位が1位のMaxtor300GBのHDDの先頭パーティションをC:ドライブに、起動優先順位が2位のHitach160GBのHDDの先頭パーティションをD:ドライブに、以下同じように、先頭パーティションのドライブレターを起動優先順位が高い順に、E、F、Gと割り振っています。
これは基本MS-DOS領域と拡張MS-DOS領域の問題があり、ドライブレターは基本MS-DOS領域を優先するため、それぞれの第2パーティション以下のドライブレターは、その後になるという理屈があるのですが、要はWindowsXPのインストールの際は、初めからパーティション単位で起動優先順位が高い順に規則どおりに並ぶことになります。
つまりWindowsXPでは、ディスクの序列だけでなく、パーティションのドライブレターまでインストール前に解り、そのとおりになるという安心感がありました。
ただし、WindowsXPインストール後のXPのディスクの管理でのディスク番号は、IDEとSATAの優先順位は別として、SATA接続のHDD間では、マザーボードの接続ポート順にきれいに並びます。なおIDE接続間のディスクの序列は、プライマリ、セカンダリ、マスター、スレーブという区別がはっきり付いています。
これがViataのインストールのときは、パーティションではなくディスクの順番を振っており、それはそれで良いのですが、何度も試した結果このディスクの順番に規則性は無く、接続ポート1位、つまり「ディスク0」のHDD以外は適当にディスクの順番を振る、どれもHDDは並列に扱っているようです。
VistaのエディションUltimateとHomePremiumの違いでもディスクの順番が異なるし、同じエディションで接続ポート順と起動優先順を合わせて何度か試しても、いつも同じディスク番号になるとは限らず、結局いいかげんに順番を付けているとしか思えない状況であり、上の表でも、Vistaのディスクの認識順は、そうなることが多いケースであり、必ずそうなるとは限りません。
先頭ディスクである「ディスク0」さえ固定すれば、他は規則をあてはめる必要がない、同じに扱うという考え方は悪いことではないのですが、XPとのデュアルブート構成で後からVistaをインストールする場合は、XPのあるパーティションより後順位のパーティションにVistaをインストールしないとトラブルが発生するため、事前に解らないことは困ったものです。
実はBIOSの方も、マザーボードに搭載されているBIOSにもよるのでしょうが、SATA接続のHDDの起動優先順位は、そのまま使う初期設定で接続ポート順になるとは限らないようです。
またSATA接続のHDDは、接続ポートを意識せずに増設したり、外したりしても支障がないため、適当にケーブルを接続し、後から取付けたHDDが「ポート0」になっている場合もあり、取り付け取り外しを繰り返すたびに、そのHDD以外のHDDも含めて起動優先順位が振り直され、想定しないディスク順になることがあります。
なお起動優先順位1位のHDDしか起動することができないのではなく、起動優先順位が高い順に、システムパーティションを探して起動できるために、通常のHDDの増設で、起動しないということが無いようになっています。
<Vistaのインストールの際のトラブルの予防>
Vistaを含むデュアルブートにするためには、先にXPをインストールし、その後にVistaをインストールする必要があります。
使用していたXPを残す場合は、もちろん後からVistaをインストールすることになりますが、そのときにも前述の理由で注意が必要であり、初めにBIOSの設定画面を確認して、HDDの接続ポート順と起動優先順を控えておくと良いでしょう。
そして、Vistaのインストール中に表示されるディスクの順位も確認して、いずれの順位でも、XPのあるディスクより、後順位にあたるディスクのパーティションにVistaをインストールすることが無難でしょう。
もし後順位の適当なディスクがない場合は、Vistaのインストールを一旦中止し、次の方法でやり直した方が良いでしょう。インストールの中止方法は、XPでは「F3」キーを押しますが、Vistaではウィンドウ画面の右上の×マークを押せば中止することができます。
1 | XPのディスクの管理でシステムパーティションのあるHDDのディスク順位を確認 |
2 | システムパーティションのあるHDDが「ディスク0」となるよう接続ケーブルを装着 |
3 | BIOSの起動優先順位を接続ポート順と同じに合わせる |
この変更の後、XPが起動するかどうか確認し、正常に起動すれば、再度Vistaのインストールを行います。
なおシステムパーティションは、起動に必要なNtldr、boot.ini、NTDetect.comなどのあるパーティションで、Windowsがあるパーティションはブートパーティションであり、マイクロソフトが使う用語としては区別されています。
つまりWindowsXPがシングルブートでHDDの先頭(プライマリ)パーティションにインストールされていれば、WindowsXPのあるパーティションがシステムパーティションでありブートパーティションとなります。
しかしXP以前からデュアルブートであれば、ブートパーティションは複数ありますが、起動に必要なNtldr等のあるシステムパーティションは一つだけしかないことが想定されています。
しかし、HDDを取り付けたり、取り外したりを繰り返してWindowsをインストールしていると、旧システムパーティションがアクティブなパーティションとして残っていることもあり、起動しないトラブルの原因となる場合もあります。
もし変更の後、起動しなければ、一旦接続ケーブルと起動優先順位を元に戻して起動し、XPのディスクの管理を開いて、再度システムパーティションがどのHDDか確認してください。そして他にアクティブなパーティションがあれば、「ファイル名を指定して実行」で「diskpart」と入力して起動し、以下の手順で非アクティブにして、再度上の手順でやり直してみてください。
右の画面のように、コマンドプロンプトで「diskpart.exe」が起動するため、次の順番に入力します。
1 list disk
2 select disk (番号)
3 list partition
4 select partition (番号)
5 inactive
「list disk」と「list partition」は、ディスク番号とパーティション番号を確認するために使います。
それぞれ続いて確認した番号を、selectで指定しますが、このときに番号の前にスペースを入れる必要があります。
右の画面は「ディスク 4」の「パーティション 1」を非アクティブに変更している例ですが、スペースは、文字列の間にも必要であり、画面を参考にしてください。
なお、アクティブに変更するのは、この最後の手順の「inactive」を「active」と置き換えて入力すれば可能ですが、「ディスクの管理」でも可能であり、その方が簡単です。
通常は、起動HDDの先頭パーティションがシステムパーティション(アクティブ)になっており、このHDDのBIOSでの起動優先順位が後順位であっても、それより前の順位のHDDにアクティブなパーティションがなければ起動します。
新規にXPをインストールし、続けてVistaをインストールする場合も、HDDの接続ポート順と起動優先順を合わせて、XP、Vistaの順にインストールすることをお勧めします。
<トラブルとなった後の対処法>
デュアルブートにするつもりでVistaをインストールしたのに、Vistaのシングルブートになってしまうトラブルは、まだインストールしたばかりであれば、Vistaを再インストールした方が早いでしょう。
この再インストールするときは、前に説明したように、XPのあるパーティションより後順位のパーティションに、Vistaをインストールする必要があり、そのためには、HDDの接続ポートや起動優先順位を変更しなければならないケースも想定されます。
もちろんVistaを再インストールする場合は、前に「Vistaのインストールの際のトラブルの予防」で説明したことは注意してください。
その際にシステムパーティションの確認が重要であり、Vistaのディスクの管理を開いて、システムパーティションの直下に、ntldrなど起動に必要なファイルがあるか確認し、もし無い場合は少し面倒ですが、「5 bcdeditでのBCDの具体的な変更方法」の新規エントリの追加で説明したように、他のXPを使用しているパソコンからでも構わないので、事前に ntldr、boot.ini、NTDETECT.COM の少なくとも3つのファイルをフロッピーにでもコピーしてシステムパーティションに移しておく作業が必要になります。
他にも、XPを別のパーティションに仮にインストールし、MBRを意図的に上書きさせ、その後Vistaを再インストールして、またVistaのMBRに戻すという解決の手順はありますが、手間はかかります。
なお、この仮にインストールする方法は、マイクロソフトのサポートでも、「並列にインストール」する方法として紹介されています。
Vistaをインストールしているパソコンに、後からXPをインストールして、Vistaが起動できないトラブルは、Vistaをインストールして、しばらく使ってきた状態であれば、Vistaの再インストールは避けたいところでしょう。
そのため、前に説明した「システム回復オプション」からコマンドプロンプトを起動し、起動プロセスの修復を行うことがセオリーであり、まず「bootrec」コマンドで修復を試みることになりますが、これはコマンドプロンプトで次のコマンドラインを入力するだけであり、それほど難しくはないでしょう。
なお、コマンドプロンプトの起動方法は、前述の「4 bcdeditを使うための準備・基礎知識」を参照してください。
bootrecコマンドの使い方 | |
bootrec.exe /fixboot 起動プロセスの修復 bootrec.exe /fixmbr MBRの復元 |
もし、「bootrec」コマンドで解決できない場合は、「bootsect.exe」でMBRを、「bcdedit.exe」でBCDストアを再構築する方法もありますが、コマンドプロンプトでの作業が自信がないのであれば、いっそのことVistaを別のドライブに仮にインストールして起動プロセスを再構築する方法が簡単です。
もちろん、XPのあるパーティションより後順位のパーティションにVistaをインストールする必要がありますが、このインストールにより新たな起動プロセスが構築され、起動OS選択画面が復活します。
この起動OS選択画面さえ復活すれば、仮にインストールしたVistaは、そのドライブをフォーマットして消しても構いません。
その結果、起動OS選択画面での既定のOSの変更は必要です。また仮にインストールしたVistaの不要なエントリは、削除しなくても良いようなものですが、気になるのであれば、Vistaの「システム構成ユーティリティ−」で簡単に削除することができます。
<Vistaの起動OS選択画面の簡単な修正方法>
Vistaの起動OS選択画面は、限られた項目ですが、Vistaの「起動と回復」または「システム構成ユーティリティ−」で修正できます。
Vistaの「起動と回復」は、「コントロールパネル」→「システムとメンテナンス」→「システム」と順にクリックし表示される「システム」の画面が入口です。
この「システム」の画面の中段右にある「設定と変更」をクリックし表示される「システムのプロパティ」の「詳細設定」タブの画面下段の「設定」ボタンをクリックすると右の「起動と回復」画面が表示されます。
ここで、既定のOSの変更とOSの一覧を表示する時間(タイムアウト値)の変更が可能です。
既定のOSは選択するだけ、タイムアウト値は秒数を入力するだけと簡単に変更できます。
必要なときに修復オプションを表示する時間は、通常変更する必要がないと設定となっています。
スタートメニューの検索で「msconfig」と入力し、Enterキーを押すと表示される「システム構成」画面の「ブート」タブをクリックすると右の画面が表示されます。
この画面で設定可能な項目は、既定のOSの変更とタイムアウト値の変更に加えて、エントリの削除が可能です。
ただし、エントリの削除は、既定のOSと現在起動中のOSはできません。
Vistaインストール後の「以前のバージョンのWindows」を選択したときに表示されるXP以前のVistaの起動OS選択画面の編集方法は、前述の「6 Vistaインストール後のboot.iniファイルの編集方法」を参照してください。
なお、「Windows Vistaの導入」でVista のインストールの方法、手順、インストール後の確認や初期設定について詳しく説明しており、サイト内「Windows初心者コーナー」の「Windows7への乗り換え」では、Windows7に乗り換える適切な時期や方法を検討するために必要な情報を提供していますので参考としてください。