Armadilloフォーラム

セキュアブート有効にするインストールディスクイメージにSDカードスロット無効化を実装したい

tkhrosm

2025年8月27日 18時14分

==========
製品型番:AGX4500-C00D0
Debian/ABOSバージョン:3.21.3-at.14
カーネルバージョン:5.10.238-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:imx-boot-2020.04-at26
==========

お世話になっております。
現在、https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-x2-securebo… にしたがってセキュアブートを有効にするインストールディスクイメージを作成中です。
作成したものを書き込むことでセキュアブートが有効になり、暗号化できていることが確認できました。
しかし、dtb_overlayの設定が正しくできていないのか、セキュアブート無効の際にはできていたmicrosdカードスロットの無効化ができなくなってしまったため相談させてください。

当開発環境では、SDカードスロットを無効化するarmadillo_iotg_g4-customize.dtboを作成しており、非セキュアブート環境ではそちらを組み込んで/boot/overlays.txtに記載することでSDカードスロットが無効化できることを確認しております。
セキュアブート設定ではsecureboot.confにてdtboを設定できる項目があることを把握していますので、そちらにてarmadillo_iotg_g4-customize.dtboをするものと認識しています。その際、LINUX_DTB_OVERLAYとLINUX_DTB_OVERLAYS_PREAPPLYの二種類があると思いますが、そちらの理解がsecureboot.conf.exampleを読んだうえで曖昧なため、以降の認識や扱い方に間違いがあればご指摘願いたいです。
もともと/boot/overlays.txtで管理していたため、dtboをImageに組み込んで起動時にoverlays.txtで指定して呼び出すLINUX_DTB_OVERLAYによってarmadillo_iotg_g4-customize.dtboを設定する形式を検討し、実装しました。
しかし、SDブートで書き込んだところ、下記のようにカーネルの起動でmicrosdを読み込めず再起動待機状態になってしまいました。

Starting kernel ...
 
[    1.731649] imx6q-pcie 33800000.pcie: failed to initialize host
[    1.737599] imx6q-pcie 33800000.pcie: unable to add pcie port.
Starting init
'/dev/mmcblk1p1' missing, waiting up to 10 seconds.......................
ERROR: '/dev/mmcblk1p1' does not exist
No shell allowed, press enter to reboot

インストール中(おそらく3_disk_encryption.swuインストール処理後)にSDカードが読み込まれなくなり、以降の処理が実行できないのだと想定しています。
インストールディスクでの書き込みではSDカードスロット無効化を実装できますでしょうか?

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

コメント

at_satoshi.ohta

2025年8月28日 13時27分

太田です。

確認ですが、以下の流れを実施とのことでお間違いないでしょうか?

1. secureboot.sh build で生成された 3 つの SWU イメージをインストール
2. Armadillo のセキュアブートが有効化され、rootfs が暗号化されていることを確認
3.セキュアブートガイド「量産用インストールディスクイメージを 1 から作る方法」に従い、セキュアブート対応のインストールディスクイメージをインストール
4. インストールディスクイメージを microSD に書き込み、Armadillo に microSD を差し込み、SD ブートを実行
5. 上記のエラーが発生

エラーの要因は SD ブート時に microSD から起動する microSD用の Linux カーネルイメージ にも SD カードスロットを無効化する armadillo_iotg_g4-customize.dtbo が組み込まれているからではないかと考えます。

以下の手順をお試し頂けますでしょうか?

1. secureboot_x2/secureboot.conf に以下を記載

LINUX_DTB_OVERLAYS_PREAPPLY=(
    armadillo_iotg_g4-customize.dtbo
)

セキュアブートを有効にすると /boot/overlays.txt は使用できません。
代わりに、secureboot_x2/secureboot.conf で LINUX_DTB_OVERLAYS_PREAPPLY に armadillo_iotg_g4-customize.dtbo を指定するようにお願いいたします。
LINUX_DTB_OVERLAYS のご使用は推奨しませんので、今後のアップデートでは secureboot.conf.examlpe への記載はなくします。
教えて頂きありがとうございます。

2. 以下の「量産用インストールディスクイメージを 1 から作る方法」において、Image.signed-verity 生成時のコマンドに --dtbo "" を指定

[ATDE ~/secureboot_x2]$ ./secureboot.sh linux \
    --initrd-type verity \
    --verity /home/atmark/secureboot_x2/verity_cert.pem \
    --dtbo ''

あとは、マニュアルの流れに沿うと eMMC に書き込まれる Linux カーネルイメージにのみ armadillo_iotg_g4-customize.dtbo が組み込まれたインストールディスクイメージが出来るはずですので、もう一度 SD ブートをしてインストールをお試し頂けますでしょうか?

どうぞよろしくお願いいたします。

太田さん
ご返信ありがとうございます。

> 確認ですが、以下の流れを実施とのことでお間違いないでしょうか?
>
> 1. secureboot.sh build で生成された 3 つの SWU イメージをインストール
> 2. Armadillo のセキュアブートが有効化され、rootfs が暗号化されていることを確認
> 3.セキュアブートガイド「量産用インストールディスクイメージを 1 から作る方法」に従い、セキュアブート対応のインストールディスクイメージをインストール
> 4. インストールディスクイメージを microSD に書き込み、Armadillo に microSD を差し込み、SD ブートを実行
> 5. 上記のエラーが発生

はい、こちら全てご認識通りです。説明が不足しており室霊視ました。

>
> エラーの要因は SD ブート時に microSD から起動する microSD用の Linux カーネルイメージ にも SD カードスロットを無効化する armadillo_iotg_g4-customize.dtbo が組み込まれているからではないかと考えます。
>
> 以下の手順をお試し頂けますでしょうか?
>
> 1. secureboot_x2/secureboot.conf に以下を記載
>

> LINUX_DTB_OVERLAYS_PREAPPLY=(
>     armadillo_iotg_g4-customize.dtbo
> )
> 

>
> セキュアブートを有効にすると /boot/overlays.txt は使用できません。
> 代わりに、secureboot_x2/secureboot.conf で LINUX_DTB_OVERLAYS_PREAPPLY に armadillo_iotg_g4-customize.dtbo を指定するようにお願いいたします。
> LINUX_DTB_OVERLAYS のご使用は推奨しませんので、今後のアップデートでは secureboot.conf.examlpe への記載はなくします。
> 教えて頂きありがとうございます。
>
> 2. 以下の「量産用インストールディスクイメージを 1 から作る方法」において、Image.signed-verity 生成時のコマンドに --dtbo "" を指定
>

> [ATDE ~/secureboot_x2]$ ./secureboot.sh linux \
>     --initrd-type verity \
>     --verity /home/atmark/secureboot_x2/verity_cert.pem \
>     --dtbo ''
> 

> あとは、マニュアルの流れに沿うと eMMC に書き込まれる Linux カーネルイメージにのみ armadillo_iotg_g4-customize.dtbo が組み込まれたインストールディスクイメージが出来るはずですので、もう一度 SD ブートをしてインストールをお試し頂けますでしょうか?

こちら実施しました。
LINUX_DTB_OVERLAYSは非推奨とのことで承知しました。使用方法も間違えていたようでしたので、ご指摘通りLINUX_DTB_OVERLAYS_PREAPPLYで指定いたします。
2の該当処理でdtboを無しにすればよかったのですね。考慮から抜けていました。
頂いた手順を実施したところ、無事期待通りインストールディスクの書き込みと通常ブート時のSDカードスロット無効化を確認できました。

ご教示いただき助かりました。ありがとうございました。