Arch Linux と Windows 11 デュアルブート問題
ASRock 環境で「restart だと起動しないのに、shutdown だと起動する」謎バグの記録
はじめに
Arch Linux と Windows 11 を同じマシンでデュアルブートしているときに、 「Arch から再起動すると Windows が起動しないのに、電源OFF→ONだと普通に起動する」 という不可解な現象に遭遇した。
環境:
- ASRock A520M Pro4
- Ryzen 7 5700X
- Radeon RX 6600 XT
- DDR4 32GB
- systemd-boot
- ESP を共有
この記事は、このときに見た現象と、EFI / systemd-boot / ASRock UEFI まわりを調べたメモをまとめたもの。
トラブルの症状と再現性
症状
- Arch → 再起動 → systemd-boot で Windows を選択 → 自動修復、ロゴ停止、黒画面
- Arch → シャットダウン → 電源ON → Windows → 正常起動
再現手順
- Arch を起動
- 再起動(reboot)
- systemd-boot で Windows を選択
- 起動失敗 or 自動修復に入る
逆に、
- Arch をシャットダウン
- 電源ON
- Windows
- 正常起動
発生頻度
- 高確率で発生
- 「Arch → 再起動 → Windows」のときだけ不安定
Windows 側で見られたもの
- 自動修復
- ロゴ停止
- 黒画面
電源OFF→ONだと正常。
システム構成と前提条件
ハードウェア
- ASRock A520M Pro4
- Ryzen 7 5700X
- Radeon RX 6600 XT
Windows 側
- UEFI / GPT
- Windows インストーラの ESP を使用
Arch 側
- systemd-boot
- /boot に ESP をマウント
- kernel, initramfs, loader/entries/*.conf すべて ESP 内
ESP の設定例
UUID=XXXX-YYYY /boot vfat umask=0077 0 2
ポイント:
- vfat
- /boot に直接マウント
- Arch と Windows が同じ ESP を共有するため混在しやすい
発見された異常(EFI/Microsoft 配下の二重構造)
ESP をマウントして EFI の中身を確認した。
sudo mount /dev/nvme0n1p1 /mnt
tree -L 3 /mnt/EFI
例:
EFI/
├─ Microsoft/
│ ├─ Boot/
│ │ ├─ bootmgfw.efi
│ │ └─ その他
│ └─ その他
└─ Boot/
├─ bootx64.efi
└─ その他
分かったこと:
- bootmgfw.efi が複数
- 修復の残骸あり
- bootx64.efi も複数
「どの EFI が実際の入口なのか」が曖昧な状態。
bootmgfw.efi の二重化
Windows は更新や修復で複数入口を作る:
- EFI/Microsoft/Boot/bootmgfw.efi
- EFI/Boot/bootx64.efi
systemd-boot がどちらを参照するかで挙動が変わった。
rename による一時的改善
bootmgfw.efi を退避し、別の bootx64.efi を指定したら数日は安定した。
Windows 自動修復による上書き
Windows は起動失敗が続くと自動で EFI を“修復” する。
- bootmgfw.efi
- BCD
- bootx64.efi
これにより手動整理した状態が巻き戻される。
systemd-boot の設定
windows.conf
title Windows 11
efi /EFI/Microsoft/Boot/bootmgfw.efi
別案:
title Windows 11 alt
efi /EFI/Boot/bootx64.efi
どちらも構文は正しいが、参照先の中身で挙動が変わる。
ASRock 特有の挙動の可能性
ブート順のクセ
- ブート順が勝手に変わる
- Windows Boot Manager が優先されやすい
UEFI 設定の影響
- Fast Boot → OFF
- CSM → OFF(UEFIオンリー)
- Secure Boot → OFF
再起動とシャットダウンで初期化の深さが異なる可能性。
行った調査
- EFI 構造確認
- efibootmgr
- bootctl status
- Windows イベントビューア
- 再起動と電源ONの挙動比較
一時的に効果があった対策
- bootmgfw.efi の参照先変更
- Windows 高速スタートアップ無効化
- BIOS Fast Boot オフ
- Windows Boot Manager を一時的に優先にする
現時点での落としどころ
- EFI を整理し一本化
- Windows 自動修復が暴れにくい設定にする
- UEFI 設定は保守的に
- 再起動経由は不安定だが、電源OFF→ONなら安定起動するので実用上問題なし
コマンドログ
sudo mount /dev/nvme0n1p1 /mnt
tree -L 3 /mnt/EFI
sudo efibootmgr
bootctl status
Windows 11 の起動フローを図で整理
Windows 11 の起動フロー(UEFI → Boot Manager → winload → カーネル)
まとめ
- Arch → 再起動 → Windows だけ起動失敗する
- EFI 内の bootmgfw.efi が複数存在したことが原因のひとつ
- Windows 自動修復が EFI を巻き戻す
- ASRock UEFI の癖も影響
- 完全特定は難しいが、実用レベルでは安定に落ち着い た