WindowsとLinuxのデュアルブート環境でLinuxが起動しない不具合。2024年8月の更新プログラムが原因 [Update 1]

WindowsUpdate

Microsoft

Microsoftは、WindowsとLinuxのデュアルブート環境において、Linuxが起動しなくなる不具合が発生していることを発表しました。

更新履歴 [記事初公開日: 2024/8/23]
① すでにLinuxが起動しなくなっている場合の復旧手順を加筆。 [2024/8/23] [New]

不具合概要

日本時間で2024年8月14日にリリースされたWindows Update / セキュリティ更新プログラム(以降)をインストールすると、WindowsとLinuxのデュアルブート環境において、Linuxが起動しなくなる場合があります。その際、以下のメッセージが表示される場合があります。

Verifying shim SBAT data failed: Security Policy Violation. Something has gone seriously wrong: SBAT self-check failed: Security Policy Violation.

2024年8月のセキュリティ更新プログラムは、Secure Boot Advanced Targeting (SBAT)設定を適用して、古くて脆弱なブートマネージャーをブロックします。通常、このSBATアップデートはデュアルブート環境には適用されません。しかし、一部の環境においてデュアルブートを検出できず、適用されてしまい、Linuxが起動しなくなります。

この不具合が発生するOSおよび不具合を内包する更新プログラムは以下。

  • Windows11 23H2 / 22H2
    KB5041587 (2024年8月28日公開 プレビューリリース)
    KB5041585 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows11 21H2
    KB5041592 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows10 22H2 / 21H2
    KB5041580 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows Server 2022
    KB5041580 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows Server 2019
    KB5041578 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows Server 2016
    KB5041773 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows10 LTSB 2015
    KB5041782 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows Server 2012 R2
    KB5041828 (2024年8月14日公開 セキュリティ更新プログラム)
  • Windows Server 2012
    KB5041851 (2024年8月14日公開 セキュリティ更新プログラム)

対処方法・回避策

▼まだ2024年8月のセキュリティ更新プログラムをインストールしていない場合

まだ2024年8月のセキュリティ更新プログラムをインストールしていない場合、以下のレジストリを追加すればSBATのアップデートはインストールされず不具合も発生ません。

【キー】HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot\SBAT
【DWORD】OptOut
【値】『1』

上記レジストリの設定はレジストリエディター([Windows] + [R]キーを押して『regedit』と入力してエンター)でできます。または、コマンドプロンプト(管理者として実行)で、『reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot\SBAT /v OptOut /d 1 /t REG_DWORD』と入力してエンターキーを押すことでも同じ設定ができます。

将来的にSBATのアップデートをインストールする場合は、DWORD『OptOut』を削除してください。

▼すでにLinuxが起動しなくなっている場合

すでにLinuxが起動しなくなっている場合は以下の手順で復旧するようMicrosoftは案内しています。

  1. セキュアブート(Secure Boot)を無効化する
  2. Linuxを起動してターミナルを開き、コマンド『sudo mokutil --set-sbat-policy delete』を実行する。その後、Linuxを再起動する
  3. ターミナルでコマンド『mokutil --list-sbat-revocations』を実行してSBATの失効を確認する
  4. セキュアブートを有効化する
  5. Linuxを起動して、コマンド『mokutil --sb-state』を実行し、『SecureBoot enabled』(セキュアブートが有効)と表示されることを確認する。もし、disabled (無効)なら『4.』の手順を再び行う
  6. 上記『まだ2024年8月のセキュリティ更新プログラムをインストールしていない場合』を実行し、WindowsにSBATのアップデートがインストールされないようにする

現在、MicrosoftはLinuxパートナーとともに本不具合の調査を行っているとのことです。