この記事は Zenn にも同じ内容を載せています: https://zenn.dev/suisei498/articles/e273a87ff73f68
2012年のノートPC(NEC LaVie L LL750/HS6)を Windows 10 から Windows 11 24H2 に上げたところ、最初の再起動でこう表示されて止まりました。
A disk read error occurred
Press Ctrl+Alt+Del to restart
再起動しても同じです。検索すると「SSDの故障」「ケーブルの接触」「ブートセクタの修復」がたくさん出てきますが、私の場合はどれでもなく、起動に使うファイル1個を古い版に戻すだけで、Windows 11 がそのまま起動しました。データも消えていません。
同じ症状の人のために、切り分けの順番と、実際にやった手順を残しておきます。
※このPCは Windows 11 の動作要件を満たしていないため、要件チェックを回避するツールでアップグレードしました。Microsoft がサポートしない構成です。同じことをする場合は自己責任で、先にデータを退避してください。
結論:24H2 の新しいブートマネージャが、古いPCの起動方式で動かない
原因は 24H2 で新しくなったブートマネージャ(bootmgr)が、レガシーBIOS+MBR の起動方式では動かないことでした。
- このPCは2012年の機種で、BIOSにUEFIの項目がなく、レガシーBIOSでしか起動できません
- アップグレードの最初の再起動で、起動用のパーティションにある
bootmgrが 24H2 版に置き換わる - その 24H2 版の
bootmgrを、このPCの起動方式では読み込めず、「A disk read error occurred」になる
同じ機種の利用者の報告でも、同じ症状が挙がっていました(末尾に出典)。
最初にやったこと(効かなかったもの)
SSDをPCから外し、USBで別のPCにつないで中を調べました。
1. ディスクは読めるか
USB経由では全部問題なく読めました。パーティション形式は MBR、「システムで予約済み」の50MBがアクティブ、その後ろに Windows 本体。起動に使うファイル(bootmgr、BCD、winload.exe)もそろっていて、壊れている様子はありません。
ディスクが読めるなら、まず故障ではない、と考えてよさそうです。
2. 起動の設定(BCD)を見る
bcdedit /store D:\Boot\BCD /enum all
(D: は、別のPCにつないだときに「システムで予約済み」に付いたドライブ文字です)
ここで分かったのは、アップグレードが再起動フェーズの途中で止まっていることでした。新しいOSは $WINDOWS.~BT\NewOS\ に展開済みで、次の起動でセットアップを続ける設定のまま。つまり「最初の再起動で転んだ」状態です。
3. ブートセクタの書き直し → 効かなかった
よく紹介されている修復です。
bootsect /nt60 D: /mbr
「ブートコードを正常に更新しました」と出ましたが、PCに戻すと同じエラーのままでした。ブートセクタは bootmgr を呼び出すところまでの担当で、呼び出された bootmgr 自体が動かないので、ここをいくら直しても変わりません。
(bcdboot での作り直しも試しましたが、アップグレード途中の状態ではエラーになりました。)
直した手順:bootmgr を Windows 10 の版に戻す
アップグレードの途中で止まっている間は、Windows 本体の側にまだ Windows 10 版の bootmgr が残っています。これを起動用パーティションに上書きしました。
SSDを別のPCにUSBでつなぎ、ドライブ文字が次のとおりだったとします。
- D: = システムで予約済み(起動用・50MB)
- E: = Windows 本体
管理者の PowerShell で実行します。
# 1. 元の(24H2 版の)bootmgr を控える
Copy-Item D:\bootmgr C:\backup\bootmgr_24h2.bak -Force
# 2. 書き換えられるようにする(システムファイルなので保護されている)
takeown /f D:\bootmgr
icacls D:\bootmgr /grant "*S-1-5-32-544:F"
attrib -r -h -s D:\bootmgr
# 3. Windows 10 版で上書きする
Copy-Item E:\Windows\Boot\PCAT\bootmgr D:\bootmgr -Force
# 4. 属性を元に戻す
attrib +r +h +s D:\bootmgr
# 5. 本当に置き換わったかを確かめる(ハッシュが一致すること)
(Get-FileHash E:\Windows\Boot\PCAT\bootmgr).Hash
(Get-FileHash D:\bootmgr).Hash
私の環境では、24H2 版は 473,364 バイト、Windows 10 版は 420,238 バイトでした。大きさで見分けがつきます。
icacls の *S-1-5-32-544 は「Administrators グループ」のことです。日本語版の Windows でもグループ名の表記に左右されないように、IDで指定しています。
SSDをPCに戻して電源を入れると、アップグレードの続きが始まり、そのまま Windows 11 24H2 で起動しました。ファイルもアプリも引き継がれています。
注意:アップグレードが終わった後は、同じ場所から取れない
上の手順3で使った E:\Windows\Boot\PCAT\bootmgr は、アップグレードが途中で止まっていたから Windows 10 版のまま残っていたものです。アップグレードが完了すると、ここも新しい版に置き換わります。
完了後に再発した場合は、次のどちらかから取り出します。
-
C:\Windows.old\Windows\Boot\PCAT\bootmgr(アップグレード後、一定期間だけ残る) - Windows 10 のインストールメディア
私は、うまくいった時点の Windows 10 版と 24H2 版を両方とも別の場所に保存しておきました。
残るリスク:Windows Update で再発しうる
この状態は「レガシーBIOSのPCで、Windows 10 版のブートマネージャから Windows 11 24H2 を起動している」という、正規ではない組み合わせです。
Windows Update が bootmgr を新しい版に書き戻すと、また同じエラーで起動しなくなります。その場合も壊れたわけではないので、同じ手順で戻せば直ります。控えておいた Windows 10 版の bootmgr は消さないでください。
根本的に安定させるなら、次のどれかになります。
- BIOS に UEFI の項目がある機種なら、UEFI+GPT に切り替える(同じ機種でも、隠しメニューで切り替えられたという報告がありました。私の個体には項目がありませんでした)
- Windows 10 に戻して使う
- 買い替え
まとめ:切り分けの順番
- SSDを別のPCにつないで読めるかを見る。読めるなら故障ではない可能性が高い
- BCD を見て、アップグレードの途中で止まっていないかを確かめる
-
古いPC(レガシーBIOS)で 24H2 に上げた直後なら、ブートセクタの修復より先に
bootmgrの版を疑う - 直すときは、元の
bootmgrを控えてから上書きし、ハッシュで置き換わったことを確かめる
エラーの文面は「ディスクが読めない」ですが、実際に読めなかったのはディスクではなく、新しいブートマネージャを読む力が古いPCになかった、という話でした。
出典
- 価格.com「Windows11 24H2を入れたら起動しなくなった」(LL750/HS6)https://bbs.kakaku.com/bbs/J0000003289/SortID=25991978/
- 価格.com「win11 23H2からwin11 24H2にアップグレードしたが起動しません」(LL750/HS6)https://bbs.kakaku.com/bbs/J0000003289/SortID=25920002/