手持ちのアプリやデバイスの関係で、32bitのWindows10に無償アップグレードしたくて、Windows7 64bit のPCに 32bitの Windows7をインストールしてみた。マルチOSで、デュアルブートするつもりではなかったので、64bit OSがインストールしてあったC:ドライブに、32bit windows7を新規にインストールしたところ、このようにブートマネージャーが現れるようになってしまった。
手抜きをせずに、C:ドライブのフォーマットを済ませてから行えばよかったのだが、win7のインストーラーがしてくれるものと思い込んでいたので、【新規インストール (カスタム)】 という形で再インストールする事になった。結果、以前の Windows のファイルは「Windows.old」という名前のフォルダで残り、「ProguramFiles(x86)」なんてフォルダーまで残ってしまった。ま、これらのフォルダーは少々面倒な手続きを踏む必要はあるものの、削除すればすむ事なので良かったが、問題は上記のブートマネージャーの出現なのです。 (参考:Windows.old フォルダーを削除する方法 魚拓)
どちらを選択して起動しても問題なくwindows7 32bit が起動する。インストール時にどこかで手順を誤ったか、それともインストーラーの仕組みなのか、OSはひとつ(Windows7 32bit)しかないのに LOADERには二つあるように書き込まれてしまったようだ。
一行分削除すれば解決するのは分かるが、いったいこの情報はどこに書き込まれているのか?
たしか以前のNTローダーは、起動ドライブ直下に在る boot.ini ファイルに書かれていたのをテキストエディタで編集した記憶があるが、windows7にこのファイルは見あたらない。調べてみました。
Windows Boot Manager に用いられる。BCD は、レジストリと同等のフォーマットを持つデータファイルに格納される。このファイルは、(EFI ファームウェアが用いられるマシン上で)EFI システムパーティション、または(PC/AT互換機ファームウェアを用いるマシン上で)システム・ボリュームの \Boot\Bcd パスのいずれかに配置される。
(ウィキペディアより引用)
このBCD (Boot Configuration Data) はバイナリーファイルなので専用のエディターが必要になり、Windows7ではbcdedit.exeというコマンドを使うそうです。
スタート → すべてのプログラム → アクセサリー → コマンドプロンプト(右クリックで「管理者として実行」)
bcdedit を実行すると現在の状況が確認できる。
C:\windows\system32>bcdedit
確かにブートローダーが2個あるので、current を残して、もう一方のIDを削除してみる。
c:\windows\system32>bcdedit /delete {8cd2d9b1-7c05-11de-842e-b4611d44fefa}
うまく削除できたようなので確認表示してみる。
c:\windows\system32>bcdedit
ブートローダーが1件削除されました。
これで、windows を再起動してみると思惑通り、ブートマネージャーは現れなくなりました。
他に、OS上で「Windows ブート マネージャー」の設定画面から、ブートマネジャーの入力待ち時間(初期設定は30秒)を短く変更する事でもそれなりの対応は出来そうでしたが、根本解決にはならないので、bcdeditコマンドを実行してみました。
コンピュータのプロパティ → システムの詳細設定 → 詳細設定タブ「設定」
ちなみに、今回はブートマネージャーの編集ですみましたが、BCD(ブート構成データ)ファイル自体が壊れてしまってマネージャーが立ち上がらなくなったようなときには、「システム回復オプション」から Bootrec.exe コマンドでトラブルシューティングするようです。
参考: 手動による Windows ブートローダーの復元 魚拓
Windowsの起動に関する問題をトラブルシュートし修復する方法 魚拓
やっとXPの仕組みを覚えたと思っていても、win7 には通用しない。で、今回のようなトラブルシューティングだけで半日を費やしてしまいます。こういった作業を繰り返してようやく win7 の仕組みを理解し始めても言ってる間に世の中は windows10 。ほんま、こりゃぁ大変だわ。
ということで、忘れないうちに備忘録しておきます。^^;