前日まで何の問題なく動いていた Windows 11 が、ある日の朝起動すると突然ブルースクリーンになってしまいました。スタートアップ修復など一通り試みるも失敗。試行錯誤の末、何とか修復できました。ダメだったことも含めて、自分用のメモとして残しておきます。
もくじ
トラブルの内容
トラブルの内容は次の通りです。
- ある日、Windows を起動すると、いきなり自動修復が始まり失敗。「PC が正常に起動しませんでした」と表示される。
- 回復ツール(青い画面のメニュー)で「スタートアップ修復」「システムの復元」「更新プログラムのアンインストール」を試したものの、ことごとく失敗し、状況は変わらず。
- コマンドプロンプトを起動してディスクの内容を確認すると、知らぬ間に Windows のドライブレターが
C:
からF:
に変わっている(謎)
原因の推測と、調べて知ったこと
- コマンドプロンプトから
F:
(元々はC:
で、Windows が入っている)の内容は見えているので、ハードウェアの故障よりも、ブート情報(Windows を起動するときに必要な情報)がおかしくなっている可能性の方が高そう。確証はないけれども。 - そもそも、ストレージのパーティション スタイルには、「MBR(Master Boot Record)スタイル」と「GPT(GUID Partition Table)スタイル」がある。
- ほとんどすべての Windows PC は、BIOS と UEFI(Unified Extensible Firmware Interface)のどちらかのブートモードで起動している。そして、MBR は BIOS をサポートし、GPT は UEFI をサポートしている。
- 今回トラブルを起こした PC は UEFI によるブートなので、GPT スタイルを使用していた様子(今頃・・・)。ということで、MBR のことは以降考えないようにする。
- 最近の Windows では、Windows Boot Manager というブートローダーが、BCD(Boot Configuration Data、ブート構成データ)を読み込んで起動する。ということは、BCD を修復することができれば、起動するようになるかもしれない。
BCD を修復
BCD の修復方法は、いろいろなサイトに詳しく載っていましたが、MBR の情報も混じっている場合も多く、結構混乱しました。ですので、以降は GPT の場合にしぼって書きます。
まず、BCD は単なる 1 個のファイルで、ファイル名はそのまんまの 📄BCD
です。また、その置き場所はシステム ボリュームの 📁EFI\Micrsoft\boot
のようです。なので、このファイルを修復します。
修復には bootrec
コマンドを使用します。/RebuildBcd
オプションを指定します。このコマンドは、ディスクをスキャンして、ディスク上に存在するすべての Windows の一覧を表示し、BCD ストアに追加することができます。ところがここで早速問題が発生しました。
> bootrec /RebuildBcd
Windows のインストールとして認識された合計数: 0
Windows が見つからないです。今回の現象を考えると当たり前なのかもしれませんが。見つからないものを見つけてくれるとコマンドだと思っていたのですが、甘かったです。
詳しい仕組みはわからないのですが、📄BCD
がすでに存在している状態だと、上手くいかないようです(ファイルを作り直してくれるわけではない様子)。そこで、 📄BCD
ファイルを手動で削除してから、もう一度 bootrec /RebuildBcd
を試してみることとします。上でも触れた通り、📄BCD
ファイルはシステム ボリュームにあるので、このままではコマンド プロンプトから操作できません。そこで、まずはシステム ボリュームにドライブレターを割り当ててやる必要があります。これには diskpart
コマンドを使用します。
# diskpart を起動します。
> diskpart
# ボリューム一覧を表示します。
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
Volume 0 G DVD-ROM 0 B メディアなし
Volume 1 E ボリューム NTFS Partition 1863 GB 正常
(省略)
Volume 6 FAT32 Partition 99 MB 正常 システム
(省略)
# ボリュームレターが無く、ファイルシステムが「FAT32」なのがシステム ボリュームです。
# 上の場合、6 番のボリュームが該当するので、そちらを選択します。
DISKPART> select volume 6
ボリューム 6 が選択されました。
# 選択中のボリュームにドライブレターを割り当てます。
# ドライブレターは使用されていないものなら何でも良いので、ここでは V を割り当てることにします。
DISKPART> assign letter V
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
# diskpart を終了します。
DISKPART> exit
これで、コマンド プロンプトから V:
でシステム ボリュームを操作できるようになったので、いよいよ📄BCD
ファイルを削除します。ただ、私は削除するのが怖かったので、念のためリネームしておきました。そして、bootrec /RebuildBcd
を実行します。すると、今度は Windows が認識されました。相変わらず C:
ではなく F:
になっていますが、この際気にしないことにしました。認識された Windows をブート一覧に追加するか訊かれるので、「Y(はい)」と入力します。
> cd /d V:\EFI\Micrsoft\boot
# BCD ファイルをリネームします。
> ren BCD BCD.bak
# BCD ファイルを再作成します。
> bootrec /RebuildBcd
Windows のインストールとして認識された合計数: 1
[1] F:\Windows
インストールをブート一覧に追加しますか? Yes(Y)/No(N)/All(A):Y
上記の作業の後は「スタートアップ修復を 2 回実行すること」と様々なサイトに説明されていたので、2 回実行しました。ところが、相変わらずブルースクリーンとなり、Windows は起動してくれませんでした。
システム ファイルを修復
どうしたらよいのかわからないので、試しにシステム ファイルを修復してみることにしました。これには sfc
コマンドを使用します。コマンド プロンプトを起動し、コマンドを実行してみました。すると、どうやら破損したファイルがあったようです・・・。
> sfc /SCANNOW
Windows リソース保護により、破損したファイルが見つかりましたが、それらは正常に修復されました。
ファイルが正常に修復されたとのことなので、期待しつつ念のため「スタートアップ修復」を 2 回実行してみましたが、今度も残念ながら状況は変わらずでした。
今度は、sfc
コマンドに「起動ディレクトリ」と「Windows ディレクトリ」の指定を追加してみることにしました。起動ディレクトリはシステム ボリュームなので、もう一度ドライブレターの割り当てが必要です。再度、V:
を割り当てました。Windows ディレクトリは、相変わらずの F:
です。
> sfc /SCANNOW /OFFBOOTDIR=V:\ /OFFWINDIR=F:\Windows
Windows リソース保護は、破損したファイルを検出しましたが、その一部を修正できませんでした。
実行すると、今度は「一部修正できませんでした」という結果でした。修正できなかったファイルがあるのは困りものですが、前回と結果が異なることから、1 回目とは異なる対象に処理が行われたという可能性が大きそうです。また、実行にかかった時間も 1 回目より長かったです。
もしかしたら修復されたファイルもあるかもしれないので、かすかな期待を込めて「スタートアップ修復」を 2 回実行してみたところ、なんと直りました。長らく見ていなかった Windows 11 の背景画像付きサインイン画面は、カラフルで目にまぶしかったです。同時にわかったことなのですが、「スタートアップ修復」が 2 回必要というのは本当でした。1 回目はブルースクリーンになっていましたので。
なぜか C:
と F:
が入れ替わっていた問題については、元の通りに直っていました。結局原因はわからないままです。
感想
試行錯誤しまくったので、作業過程に不要な操作があったかもしれませんが、今となってはよくわかりません。
起動はしましたが、システムファイルが「一部修正できませんでした」状態なので、内部的にどうなっているか怪しいです。さっさとバックアップを取って、面倒でも再インストールした方が良いかもしれません。
あと、理由はわからないですが、「スタートアップ修復」は 2 回やるということを覚えました。
休止状態から復帰したら、Windowsのセットアップ画面が出るという症状になり、記事を参考に、無事復旧することができました。ありがとうございました。
こんにちは。コメントありがとうございます。
無事復旧できたとのことで、本当に良かったです。
お役に立てて嬉しいです。