「メモリ増やしただけなのに、なんでWindows起動しなくなるん?」

どうも、レイと申します。

ゴールデンウィーク真っ只中の沖縄、観光客がめちゃくちゃ多くて街がカオスです笑。気温も27℃前後まで上がってきて、もう半袖で全然OKな季節になりました。レンタカー屋の前を通ったら長蛇の列ができてて、「あぁ今年もこの季節かぁ」って毎年同じ感想を抱いてます(^o^)

さて、今回は連休にやらかした話です。

自宅メインの自作PCのメモリを 16GB から 32GB に増設したら、Windowsが起動しなくなりました。完全に逝ったかと思って一瞬血の気が引いたんですが、なんとか復旧できたので、その記録を残しておきます。

このブログの通例なんで書きます笑。

環境

まず犠牲者となった僕のPCのスペックから。

項目内容
CPUIntel Core i7-8700K
マザーボードMSI Z370-S01
既存メモリADATA PC4-2666V-UA2-11 8GB × 2枚(計16GB)
ストレージ構成SATA SSD(Cドライブ)+ Intel RST RAID1(HDD)
OSWindows 11

i7-8700K、もう何年も使ってる戦友です。インフラエンジニア的には「動いてるならまだ買い替えなくていいだろ」の精神で延命中。

増設したメモリ

今回追加したのはこれ。

BallistixCrucial by Micron)DDR4-2666 8GB × 2枚

  • 型番:W4U2666BMS-8G(CFD販売
  • 規格:PC4-21300 UDIMM
  • CL16-18-18 / 1.2V
  • ヒートシンク搭載

既存のメモリと同じ DDR4-2666 で揃えて、空いているスロット2本に追加。これで合計 32GB の構成完成!と思って意気揚々と電源を入れたんですが……ここからが本番でした。

発生した事象

INACCESSIBLE_BOOT_DEVICE が出た

電源を入れて数秒後、画面に出てきたのはこいつ。

:( お使いのPCで問題が発生しました。再起動する必要があります。
Stop code: INACCESSIBLE_BOOT_DEVICE

ブルースクリーンです。久々に見ました。INACCESSIBLE_BOOT_DEVICE(0x7B)

「いや、メモリ増やしただけなんですけど???」

頭の中ハテナだらけ。とりあえず再起動しても同じ画面。何度やっても同じ。

自動修復も死亡

何回か再起動を繰り返すと、Windowsが「これは何かまずいぞ」と察してくれて自動修復に入ってくれるんですが……

「デバイスで問題が発生したため、修復できませんでした。」

修復、できんのかい笑。スタートアップ修復も同じ結果。Windowsの自動修復機能は本当にいつもこういう時に役に立たないんですよね……(´・ω・`)

BIOSではメモリは正常認識

「もしかしてメモリ自体が悪いのか?」と思ってBIOS(厳密にはUEFI)に入って確認すると……

  • Memory Size: 32768MB(32GB)
  • DDR Speed: 2666MHz
  • DDR Voltage: 1.200V

全部正常に認識されてる。32GB ちゃんと見えてるし、速度も電圧も問題なし。

メモリの相性問題でもなさそう。となると Windows 側の問題ということになります。「これは詰んだか…?」と一瞬諦めかけました笑。

原因の調査

落ち着いてWindows回復環境(WinRE)からコマンドプロンプトを起動して調査開始。インフラエンジニアの本領発揮です。

bootrec コマンドで確認

まずは定番の bootrec

bootrec /fixmbr   → 操作は正常に終了しました。
bootrec /fixboot  → アクセスが拒否されました。
bootrec /rebuildbcd → Windowsのインストールとして認識された合計数: 0

おっと。

ちなみに bootrec /fixmbr は MBR(Master Boot Record)を修復するコマンドなので、純UEFI/GPT環境では 実質的に意味はありません。「成功しました」と出ても気休め程度で、ここで治ることは期待しちゃダメです笑。

/rebuildbcd「Windowsのインストールとして認識された合計数: 0」。これはヤバい兆候です。Windowsそのものは存在しているのに、ブート情報からは見えなくなっている状態。

つまり EFIブートエントリが消えてる っぽい。

diskpart でパーティション確認

念のためディスクの状態も見ておきます。

diskpart
list disk
list volume

ボリューム一覧はこんな感じ。

VolumeLtrLabelFsSizeStatus
1CWindowsNTFS475 GB正常
2-SYSTEMFAT32260 MB正常(非表示)
3HWindows RENTFS900 MB正常
4DSSDNTFS931 GB正常
5EADTEC_SSDNTFS238 GB正常
6FIRST_RAID_2NTFS931 GB正常

CドライブもEFI System Partition(SYSTEM, 260MB, FAT32)も生きてる。RAIDも正常。

データ自体は無事ということがわかって、ちょっと安心。要するに EFIパーティションの中身(ブートファイル)が破損しているだけっぽい。これなら復旧できる可能性が高い。

伝わるかな?www

修復手順

ここまで来れば話は早い。EFIブートファイルを再作成すればOKなはず。

1. EFIパーティションにドライブレターを割り当てる

EFIパーティション(Volume 2)には普段ドライブレターが割り当てられていないので、操作するために一時的に割り当てます。

diskpart
select volume 2
assign letter=Z
exit

Z: にしたのは深い意味はなくて、絶対被らない文字を選んだだけです笑。

2. bcdboot でブートファイル再作成

そして魔法のコマンド。

bcdboot C:\Windows /s Z: /f UEFI

意味は「C:\Windows のWindowsを、Z: のEFIパーティションにUEFIモードでブート登録してね」というやつです。詳しくはbcdbootの公式ドキュメントを参照。

実行結果……

「ブート ファイルは正常に作成されました。」

キタァァァァッ!!!

再起動すると、見慣れたWindowsのロゴが出て、無事起動。タスクマネージャーを開くとメモリ32GB認識。完全勝利www

今回の教訓

何が起きていたのか(推定)

メモリ増設後の初回起動時に、何らかの理由でBSoDが発生して、その際に EFIブートファイルが破損した 、というのが僕の推測です。

BSoDの直接の原因は特定できませんでしたが、おそらくメモリ増設直後のメモリトレーニング(POST中にマザーボードがメモリのタイミングを調整する処理)が完了する前に、Windowsが起動しようとして不安定な状態でクラッシュした……みたいな流れかなと思ってます。

SATAモードが勝手に変わったとかも一応疑ったんですが、BIOS見る限りそれはなさそうでした。

Intel RST RAID 環境での注意点

ここが結構大事なポイントで、 Intel RST のRAID環境ではCMOSクリアは安易にやるべきではない です。

正確に言うと、CMOSをクリアしてもRAIDメタデータはディスク側に保存されているので データそのものは消えません。ただし、BIOSの SATA Mode が RAID から AHCI に戻ってしまうため、

  • 元のRAIDアレイが Windows から見えなくなる
  • アレイの片方のディスクだけが単体で見えてしまい、誤って書き込み・初期化してしまう
  • BitLocker + TPM 構成の場合は回復キーが必要になる

といった 間接的にデータを破壊するリスク が発生します。慣れてない人が「とりあえずCMOSクリアすれば直るっしょ」と古い知識でやると大事故になりかねないので、RAID環境では避けたほうが無難です。

bootrec /rebuildbcd で 0 件でも諦めない

今回一番伝えたいのはこれ。

bootrec /rebuildbcd を叩いて「Windowsのインストールとして認識された合計数: 0」と出ても、データやWindows本体が消えたわけではない ということ。EFIパーティションが残っていれば、bcdboot で復活させられます。

修復コマンドのまとめ

困ってる人のためにコピペ用に置いときます。

# 1. EFIパーティションにドライブレターを割り当て
diskpart
select volume [EFIのボリューム番号]
assign letter=Z
exit

# 2. ブートファイル再作成
bcdboot C:\Windows /s Z: /f UEFI

これだけ。ものの数分で終わります。知ってるか知らないかで命運が分かれるやつですね。

まとめ

項目内容
症状メモリ増設後に INACCESSIBLE_BOOT_DEVICE
原因EFIブートファイルの破損
修復方法bcdboot で UEFI ブートファイルを再作成
データへの影響なし
RAID構成への影響なし
所要時間約1時間

メモリ増設という単純作業のはずが、結果として EFIブート復旧の良い勉強 になりました笑。仕事でWindows Serverを触ることもあるんで、こういう知見はそのうち役に立ちそう。

しかし32GBになったPCはやっぱり快適で、Chromeタブを200個開いても余裕です(は?)。これでまた数年は戦える気がする。 でもそもそもグラボもGTX1060を使っていてゲームに関してはかなり限界が近いです。グラボも買おうかなぁ・・・

次回はGW中にやってる別の作業について書こうかなと思ってます。今年の新入社員はまだ人事部での研修中らしくて、現場には降りてきてないんですよね。去年は新人さんがすぐ入ってきたんですが、今年は静かなもんです笑。それではまた〜。

(^o^)/