20109

2024-09-27 In

弊社ではGCEでRockeyLinux9 opimaizeOSを利用しております。 最近2週間程度で、RockeyLinux9 opimaizeOSのセキュアブートが起動しない事象が発生しているのですが、これはどのように対処した方が良いでしょうか? 不具合で調整中で、今後解消される見込みはありますか? 一旦、セキュアブートはOFFにするべきなど、対応方法について確認させていただきたいと思っています。 事象は複数GCPプロジェクトの複数VMで見られますが、以下、例をお伝えします。 ご回答よろしくお願いいたします。

## GCPプロジェクトIDの例: knoock-core

## GCEでセキュアブートが起動しないVMの例 名前: gw-006011 インスタンス ID: 564798570601981609

## セキュアブートが起動しないOS Rocky Linux 9 optimized for GCP x86/64, x86_64 built on 20240815

## エラー内容 Rocky Linux (5.14.0-427.28.1.el9_4.cloud.1.0.x86_64) 9.4 (Blue Onyx) error: ../../grub-core/kern/efi/sb.c:182:bad shim signature.

2024-09-30 検証内容

以下コマンドを実行することで再現できた

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

2024-10-03 Sent

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。

ご案内までにお時間をいただいており恐れ入ります。

お問い合せいただきました GCE上でのRocky Linux 9 Optimize OSにおけるSecure Bootの問題につきまして、対応方法をご案内いたします。

最近2週間程度で発生している「bad shim signature」エラーにつきましては、以下のステップで対応が可能です。

前提条件:Secure Bootオフ

  1. MOKキーと証明書の作成: セキュアブートの「bad shim signature」エラーを解決するために、まずカスタムMOK(Machine Owner Key)を作成し、適切にインポートします。 openssl req -new -x509 -newkey rsa:2048 -keyout <path/to/save/MOK.priv> -outform DER -out <path/to/save/MOK.der> -nodes -days 36500 -subj "/CN=Custom MOK Key/" 例: openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom MOK Key/"

  2. MOKの形式変換: 作成されたMOKを.der形式から.pem形式に変換します。 openssl x509 -inform der -in <path/to/MOK.der> -out <path/to/MOK.pem> 例: openssl x509 -inform der -in MOK.der -out MOK.pem

  3. カーネルの署名: 次に、カーネルイメージにMOKで署名します。 sudo sbsign --key <path/to/MOK.priv> --cert <path/to/MOK.pem> --output <path/to/output/signed_kernel> <path/to/kernel_image> 例: sudo sbsign --key MOK.priv --cert MOK.pem --output /boot/vmlinuz-6.10.11-1.el9.elrepo.x86_64.signed /boot/vmlinuz-6.10.11-1.el9.elrepo.x86_64 kernel_image名の確認コマンド: uname -r

  4. 署名の確認: 署名が正しく行われたことを確認します。 sudo sbverify --list <path/to/signed_kernel> 例: sudo sbverify --list /boot/vmlinuz-6.10.11-1.el9.elrepo.x86_64.signed

  5. MOKのインポート: 新しいMOKをインポートし、システムを再起動後、MOKのインポート画面で確認します。 sudo mokutil --import <path/to/MOK.der> 例: sudo mokutil --import MOK.der

  6. GRUBの更新: GRUBの設定を更新し、カーネルを正常にブートするために構成をリフレッシュします。 sudo grub2-mkconfig -o <path/to/grub.cfg> 例: sudo grub2-mkconfig -o /boot/grub2/grub.cfg

上記の手順を実施することで、エラーが解消される可能性がございます。 また、Secure Bootを有効にした状態で、SSHの接続が可能になる認識でございます。

ご案内は以上でございますが、ご案内内容に不明点等ございましたらお知らせくださいませ。

よろしくお願いいたします。

2024-10-04 In

松本様

お世話になります。株式会社じげんの永井でございます。

ご連絡ありがとうございます。

対応手順について確認しました。

追加でご質問ですが、現状の不具合は今後解消される見込みはありますか?

GoogleCloudサポートではRocky Linuxの開発元であるCIQ 社とパートナーシップを締結しており、サポート経由であれば、 Rocky Linux OS に関するテクニカルサポートも提供されている認識です。

現状の最新カーネルを利用すると今回の事象が発生しますので、弊社としてはCIQ 社からの不具合の解消見込みを知りたいと思っています。

お手数ですが、ご確認よろしくお願いいたします。

2024-10-07 Sent

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。 ご案内内容確認いただきありがとうございます。

現状の不具合が今後解消されるかに関しましては、現在情報を確認しております。

恐れ入りますがご案内まで今しばらくお待ちいただけますようお願いいたします。

引き続きよろしくお願いいたします。

2024-10-09 Sent

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。 お待たせしており、また情報の確認にお時間をいただいており恐れ入ります。

先日ご案内させていただいた内容につきまして、手順を含め前提の認識に齟齬があった可能性がございます。 現在、正確なご案内を作成中でございますが、現時点の状況につきまして以下にご案内させていただきます。

追加でご質問ですが、現状の不具合は今後解消される見込みはありますか?

状況につきまして、上記の解消見込みについて Google と連携し確認を進めておりましたが、お客様の事象についての把握が不正確な状況であったことが判明いたしました。 つきましては、正確なご案内を作成するため現在検証を進めておりますため、大変恐縮ではございますが、正確なご案内まで今しばらくお待ちいただけますようお願いいたします。

ご不便おかけしており恐れ入りますが、引き続きよろしくお願いいたします。

2024-10-10 検証 w/ バロキさん

  • 何もしない状態のインスタンスではSecure Bootをコンソールから有効にすれば起動する

    • インスタンス作成後でも一旦止めれば変更できる

  • 以下のようにして Linux Kernel 6.11.2-1.el9.elrepo.x86_64 をelrepoから取得し適用するとダメそう

    • NOTE: 変更前(GCE Rocky9 Optimizedデフォルトのバージョンは 5.14.0-427.24.1.el9_4.cloud.3.0.x86_64 だった

  • 上記のような状況から復旧する手順は2024-10-03に案内した通り

2024-10-10 Sent

概要下書き

手順:

  • 作成時にSecure Bootをオンにする方法

  • 既存インスタンスの変更方法

ただ、検証でLinuxカーネルを書き換えると同様の事象が再現した。復旧は2024-10-03に案内した手順で可能だった。 その際のデフォルトのカーネルは 5.14.0-427.24.1.el9_4.cloud.3.0.x86_64 でした。 エラーが再現したカーネルは 6.11.2-1.el9.elrepo.x86_64 でした お客様で何かカーネルのパラメーターやバージョンを変更していないか? 上記で起動が確認できましたが、お客様の環境では異なる状況であればお知らせください

なお、おそらくGoogle独自でパッチが当てられているカーネルのイメージが必要だと推察しており、現在正確な情報と最新またはプレビュー版のLinuxカーネルを使用してSecure Bootを有効化したままインスタンスを起動する方法をGoogleに確認しています。 上記の案内については少々おまちください。

清書

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。 お待たせしており恐れ入ります。検証の結果、一部ご案内できる情報が得られましたので下記に案内いたします。

まず起票時に連携いただいた Compute Engine インスタンスは以下のご状態であったと推察しております。 当サポートが検証に使用した手順は参考情報といたしまして本ご案内後半に記載いたします。

状態: (何らかの手段にて) Google 以外が提供している Linux カーネルを使用した場合 において Secure Boot に失敗する

本ケースの最初に確認すべき点であり順番が前後してしまい大変恐縮ですが、以下を前提とした認識でございます。 もしご認識に相違ありましたらお知らせくださいませ。

前提: コンソールより Secure Boot の設定を変更[1]でき、デフォルト(インスタンス作成時)の状態であれば問題なく起動し SSH 接続も可能

[1] ハイライト箇所を参照ください: VM インスタンス上の Shielded VM オプションの変更 - VM インスタンス上の Shielded VM オプションの変更 (Compute Engine 公式ドキュメント) https://cloud.google.com/compute/shielded-vm/docs/modifying-shielded-vm?hl=ja#modify-shielded-vm-instance:~:text=%255B-,%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E3%83%96%E3%83%BC%E3%83%88%E3%82%92%E3%82%AA%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B,-%255D%2520%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%A6

上記のような状況におきまして、以前当サポートよりご案内させていただいたコマンド手順では、暫定的な回避が可能な認識でございます。

追加でご質問ですが、現状の不具合は今後解消される見込みはありますか?

こちらのご質問につきまして、上記のような状況では Secure Boot の制限事項[1]により起動に失敗(正確にはブートローダーのエラーが発生)する可能性が高いと存じます。 そのため現在 Google サポートに検証結果を共有しつつ、上記の見解と「最新の Linux カーネルが Google 公式より提供される見込みがあるか」についてを確認しております。 つきましては Google から進捗が入り次第、改めてご案内させていただきますので、大変恐れ入りますが今しばらくお待ちいただけますと幸いです。

参考情報といたしまして、当サポートにて事象の再現が認められた際の手順の全容を以下に記載いたします。 また、検証に使用したカーネルのリリースは 6.11.2-1.el9.elrepo.x86_64 となります。

1: カーネルを外部よりインストール

$ cd /tmp
$ curl -o https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
$ sudo dnf install elrepo-release-9.el9.elrepo.noarch.rpm
$ sudo dnf --enablerepo=elrepo-kernel install kernel-ml

2: ブートローダーの設定変更

$ sudo cp /boot/grub2/grub.cfg $HOME/grub2.original.cfg
$ sudo cp /etc/grub.d/40_custom $HOME/grubd_40_custom  # (任意)バックアップ取得
$ sudo su -
# cat << EOF >> /etc/grub.d/40_custom
### BEGIN Custom Kernel Entry ###

menuentry 'Custom Kernel Entry' --class red --class gnu-linux --class gnu --class os $menuentry_id_option '' {
    insmod part_gpt
    insmod xfs
    set root='hd0,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  $(lsblk -o uuid /dev/sda2 | tail -n 1)
    else
      search --no-floppy --fs-uuid --set=root $(lsblk -o uuid /dev/sda2 | tail -n 1)
    fi
    insmod part_gpt
    insmod fat
    set boot='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=boot --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 $(lsblk -o uuid /dev/sda1 | tail -n 1)
    else
      search --no-floppy --fs-uuid --set=boot $(lsblk -o uuid /dev/sda1 | tail -n 1)
    fi
    
    # Release: $(find /boot | grep --color=never -m 1 -Po '\d\.\S+elrepo\.x86_64')
    linux16 /$(find /boot | grep -Po 'vmlinuz-\d\.\S+elrepo\.x86_64$') root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=rhel/swap vconsole.keymap=us crashkernel=auto rhgb quiet LANG=en_US.UTF-8
    initrd16 /$(find /boot | grep -Po 'initramfs-\d\.\S+elrepo\.x86_64\.img$')
}

### END Custom Kernel Entry ###
EOF
# less /etc/grub.d/40_custom  # 追記内容を確認
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot  # またはコンソールより「停止」の後「開始 / 再開」

ご案内にお時間をいただいており恐れ入りますが、引き続きよろしくお願いいたします。

2024-10-11 In

松本様

お世話になります。株式会社じげんの永井でございます。

ご連絡ありがとうございます。

こちらのご質問につきまして、上記のような状況では Secure Boot の制限事項[1]により起動に失敗(正確にはブートローダーのエラーが発生)する可能性が高いと存じます。 そのため現在 Google サポートに検証結果を共有しつつ、上記の見解と「最新の Linux カーネルが Google 公式より提供される見込みがあるか」についてを確認しております。 つきましては Google から進捗が入り次第、改めてご案内させていただきますので、大変恐れ入りますが今しばらくお待ちいただけますと幸いです。

承知しました。進捗がありましたら、ご共有お願いいたします。

引き続きよろしくお願いいたします。

じげん 永井

2024-10-15 Sent

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。

ご確認・ご返信ありがとうございます。ご案内にお時間いただいており恐れ入ります。 保留となっておりました件について下記にご案内いたします。

こちらのご質問につきまして、上記のような状況では Secure Boot の制限事項[1]により起動に失敗(正確にはブートローダーのエラーが発生)する可能性が高いと存じます。 そのため現在 Google サポートに検証結果を共有しつつ、上記の見解と「最新の Linux カーネルが Google 公式より提供される見込みがあるか」についてを確認しております。

[1] 制限事項 - VM インスタンス上の Shielded VM オプションの変更 (Compute Engine 公式ドキュメント) https://cloud.google.com/compute/shielded-vm/docs/modifying-shielded-vm?hl=ja#limitations

こちらにつきましては恐れ入りますが、先日ご案内したような Linux カーネルが置き換えられている OS については Google Cloud のサポート対象外[2]のためご案内できかねますことご了承くださいませ。

[2] サポート スコープ外 - オペレーティング システムのサポートとメンテナンスのポリシー (Compute Engine 公式ドキュメント) https://cloud.google.com/compute/docs/images/support-maintenance-policy?hl=ja#out-of-scope_for_support

また「最新の Linux カーネルが Google 公式より提供される見込みがあるか」の件につきましても、下記にご案内いたします。

(何らかの手段にて) Google 以外が提供している Linux カーネルを使用した場合 において Secure Boot に失敗する

結論といたしましては、上記のような事象は先程申し上げました通り Google 側での確認ができかねるため、恐れ入りますが修正リリースの見込みはございません。

なお、Rocky Linux 9 (最適化済み) の最新版イメージという意味では、バージョン rocky-linux-9-optimized-gcp-v20241009 がリリースされております。 こちらのバージョンでも先日ご案内した Secure Boot を有効化した状態での SSH 接続が可能となっております。

また参考情報といたしまして、公式ドキュメントの「自動更新」の項[2]に記載されています通り、デフォルトではセキュリティ更新をインストールするように構成されております。

デフォルトでは、このオペレーティング システムは、dnf-automatic ツールを使用してセキュリティ更新をインストールするように構成されています。更新は次のように行われます。

dnf-automatic は、オペレーティング システムのメジャー バージョン間で VM をアップグレードしません。 アップグレード ツールは、ベンダーがセキュリティ アップデートとしてマークされた更新のみを適用するように構成されています。 一部のアップデートでは、反映するために再起動が必要です。この再起動は自動的には行われません。

ご質問いただいております内容への回答は以上となりますが、認識の相違ある場合や不明点などありましたらお知らせくださいませ。 ご確認のほどよろしくお願いいたします。

[2] 自動更新 - Rocky Linux - オペレーティング システムの詳細 (Compute Engine 公式ドキュメント) https://cloud.google.com/compute/docs/images/os-details?hl=ja#auto-update-rocky-linux

2024-10-16 In

松本様

お世話になります。株式会社じげんの永井でございます。

ご連絡ありがとうございます。

こちらにつきましては恐れ入りますが、先日ご案内したような Linux カーネルが置き換えられている OS については Google Cloud のサポート対象外[2]のためご案内できかねますことご了承くださいませ。 承知しました。

Rocky Linux 9 (最適化済み) の最新版イメージという意味では、バージョン rocky-linux-9-optimized-gcp-v20241009 がリリースされております。 こちらのバージョンでも先日ご案内した Secure Boot を有効化した状態での SSH 接続が可能となっております。 ご連絡ありがとうございます。こちらのバージョンを確認させていただきます。

ここまでのご回答で一通りの解消はできましたが、本件についてはクローズで問題ありません。

また、追加でご相談が必要でしたら、別途起案させていただきます。

引き続きよろしくお願いいたします。

じげん 永井

2024-10-17 Sent

株式会社じげん 永井様

お世話になっております、G-gen サポートの松本です。 ご案内内容をご確認いただきありがとうございます。

永井様のご不明点が解消されたのであれば何よりでございます。 これからも少しでもお困りごと等ございましたらいつでもお問い合わせ下さいませ。 ご満足いただけるよう、できる限りお手伝いさせて頂きます。

本件はこちらのメールをもちましてご案内終了とさせていただきます。 今後ともどうぞよろしくお願いいたします。