kinoshita3322
2025年8月21日 18時11分
==========
製品型番:A9E
Debian/ABOSバージョン:
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
お世話になります。
セキュアブートを有効化したインストールディスクイメージを作成して、
A9Eへインストール時に下記のエラーが発生してインストールすることができません
解決方法わかりましたら教えていただきたく。
U-Boot 2023.04-at6 (Aug 21 2025 - 16:14:08 +0900) M33 Sync: OK CPU: i.MX8ULP(Dual 5) rev1.2 at 800MHz CPU current temperature: 38 Reset cause: POR Boot mode: Single boot Model: Atmark-Techno Armadillo-900 DRAM: Hold key pressed for tests: t (fast) / T (slow) 992 MiB Disabled RTC alarm Core: 52 devices, 24 uclasses, devicetree: separate WDT: Started m33-at-wdt with servicing every 1000ms (60s timeout) MMC: FSL_SDHC: 0, FSL_SDHC: 2 Loading Environment from MMC... OK In: serial Out: serial Err: serial SEC0: RNG instantiated switch to partitions #0, OK mmc2 is current device flash target is MMC:2 Net: eth0: ethernet@29950000 Fastboot: Normal Saving Environment to MMC... Writing to MMC(2)... OK Normal Boot switch to partitions #0, OK mmc2 is current device 15118336 bytes read in 780 ms (18.5 MiB/s) Authenticate OS container at 0x80400000 Booting from mmc ... Failed to load 'boot/overlays.txt' ## Loading kernel from FIT Image at 98000000 ... Using 'armadillo' configuration Trying 'kernel' kernel subimage Description: linux kernel Created: 2025-08-21 7:28:51 UTC Type: Kernel Image Compression: zstd compressed Data Start: 0x980000cc Data Size: 10432750 Bytes = 9.9 MiB Architecture: AArch64 OS: Linux Load Address: 0x85800000 Entry Point: 0x85800000 Verifying Hash Integrity ... OK ## Loading ramdisk from FIT Image at 98000000 ... Using 'armadillo' configuration Trying 'ramdisk' ramdisk subimage Description: initrd Created: 2025-08-21 7:28:51 UTC Type: RAMDisk Image Compression: uncompressed Data Start: 0x989f616c Data Size: 4662776 Bytes = 4.4 MiB Architecture: AArch64 OS: Linux Load Address: unavailable Entry Point: unavailable Verifying Hash Integrity ... OK ## Loading fdt from FIT Image at 98000000 ... Using 'armadillo' configuration Trying 'fdt' fdt subimage Description: fdt Created: 2025-08-21 7:28:51 UTC Type: Flat Device Tree Compression: zstd compressed Data Start: 0x989f3254 Data Size: 11931 Bytes = 11.7 KiB Architecture: AArch64 Load Address: 0x83000000 Verifying Hash Integrity ... OK Loading fdt from 0x989f3254 to 0x83000000 Uncompressing Flat Device Tree Booting using the fdt blob at 0x83000000 Working FDT set to 83000000 Uncompressing Kernel Image Loading Ramdisk to 8fb8d000, end 8ffff5f8 ... OK Using Device Tree in place at 0000000083000000, end 000000008300e9ce Working FDT set to 83000000 Delete node /soc@0/bus@2d800000/epdc@2db30000 Delete node /soc@0/bus@2d800000/epxp@2db40000 Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd040] [ 0.000000] Linux version 5.10.240-0-at (builder@d38fe9ea6852) (aarch64-alpine-linux-musl-cc (Alpine 14.2.0) 14.2.0, GNU ld (GNU Binutils) 2.42) #1-Alpine SMP PREEMPT Mon Jul 28 08:36:31 UTC 2025 [ 0.000000] Machine model: Atmark-Techno Armadillo-IoT Gateway A9E Board [ 0.000000] earlycon: lpuart32 at MMIO32 0x0000000029390000 (options '') [ 0.000000] printk: bootconsole [lpuart32] enabled [ 0.000000] cma: Failed to reserve 512 MiB I/TC: Secondary CPU 1 initializing I/TC: Secondary CPU 1 switching to normal world boot [ 0.137156] fsl-edma-v3 29010000.dma-controller: Can't get mp clk. [ 0.520028] i.MX clk 10: register failed with -19 [ 0.524569] i.MX clk 11: register failed with -19 [ 0.544899] clk: failed to reparent lpuart4 to frosc_div2: -16 I/TC: Reserved shared memory is enabled I/TC: Dynamic shared memory is enabled I/TC: Normal World virtualization support is disabled I/TC: Asynchronous notifications are disabled Starting init '/dev/mmcblk2p1' missing, waiting up to 10 seconds... found mount: mounting /dev/mmcblk2p127 on /tmp failed: No such file or directory ERROR: Could not mount /dev/mmcblk2p127 No shell allowed, press enter to reboot
コメント
at_satoshi.ohta
太田です。
以下のエラーが原因です。
mount: mounting /dev/mmcblk2p127 on /tmp failed: No such file or directory
/dev/mmcblk2p127 は MicroSD の改ざん防止のために使用しています。
Secureboot 用のインストールディスクイメージの作成は MicroSD の改ざん防止のために build-rootfs/build_image.sh で --verity 引数を指定する必要があります。
セキュアブートガイドでは、以下の節が参考になります。
* セキュアブート有効化済み開発用 Armadillo の環境を複製する場合
https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-900-secure…
こちらの方法では、以下の流れになります。
1. ATDE 上で ./secureboot.sh make_installer を実行して SWU イメージを生成
2. USB メモリを開発用 Armadillo に挿入
3. 開発用 Armadillo に生成した SWU イメージをインストール
4. USB メモリ内にインストールディスクイメージが生成されるので MicroSD に書きこむ
* build-rootfs を用いて1からインストールディスクイメージを作成する場合
https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-900-secure…
こちらの方法は上記よりも手順は複雑ですが build-rootfs を使用して必要最低限の環境をインストールディスクイメージに組み込むことが出来ます。
./secureboot.sh build で作成した 3_disk_encryption.swu をインストールした場合は rootfs 用パーティションのみ暗号化されますが、
上記の方法で作成したインストールディスクを書きこむと、rootfs 用パーティションに加えて、ログ書き込み用、ファームウェア用、アプリケーション用パーティションが暗号化されます。
どうぞよろしくお願いいたします。
kinoshita3322
at_satoshi.ohta
太田です。
「 開発用 Armadillo の環境を複製する方法」では ./seucreboot.sh make_installer を実行して生成された SWU イメージを Armadillo にインストールして、
USB 内に保存されたインストールディスクイメージを Aramdillo に書き込んで頂ければ、問題なく書き込みは終了するはずですので、一度お試しいただけますでしょうか?
上記の方法で生成した SWU イメージのインストールを試してもエラーになる場合は、お手数ですがエラーログを添付頂ければ幸いです。
どうぞよろしくお願いいたします。
kinoshita3322
お世話になります。
履歴の件、swuを再度A9Eにインストールしてみましたが、エラーは出ませんでした。
'/home/atmark/secureboot_a900/swu/secureboot_make_installer.swu' install on armadillo.local {"stdout":"SWUpdate v2024.12.0-git20250421-r0\n"} {"stdout":"\n"} {"stdout":"Licensed under GPLv2. See source distribution for detailed copyright notices.\n"} {"stdout":"\n"} {"stdout":"[INFO ] : SWUPDATE running : [print_registered_handlers] : \tno handler registered.\n"} {"stdout":"[INFO ] : SWUPDATE running : [main] : Running on iot-a9e Revision at1\n"} {"stdout":"[INFO ] : SWUPDATE started : Software Update started !\n"} {"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Other fs up to date, skipping copy\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Waiting for btrfs to flush deleted subvolumes\n"} {"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing Copy installer to USB device\n"} {"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing Stop containers\n"} {"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing Make installer image\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Secure boot enabled setting for production Armadillo is already set\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./installer_verity_cert.pem\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./installer_verity_key.pem\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./sd_copy/\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./sd_copy/boot/\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : ./sd_copy/boot/Image\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : /target/mnt/installer.img-in-progress (425MB) was bigger than 384MB and was not truncated.\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Checking if /target/mnt/installer.img-in-progress can be used safely...\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Using installer image (3.22.1-at.1) on image file.\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Growing /target/mnt/installer.img-in-progress to fit verity partition\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Growing installer main partition\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Resize device id 1 (/dev/loop0p1) from 394.00MiB to max\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Setting console to console=ttyLP0,115200 in installer\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Environment OK, copy 1\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Copying armadillo's root password to installer\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Copying boot image\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Installer will enable secure boot\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Copying rootfs\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Copying /opt/firmware filesystem\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Copying appfs\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : At subvol app/snapshots/volumes\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : At subvol app/snapshots/boot_volumes\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : At subvol app/snapshots/boot_containers_storage\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Trying to shrink the installer partition...\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Shrinking the installer partition...\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Cleaning up and syncing changes to disk...\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Trying to install btrfstune (btrfs-progs-extra) in memory from internet\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : fetch https://download.atmark-techno.com/alpine/v3.22/atmark/aarch64/APKINDEX.tar.gz\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/main/aarch64/APKINDEX.tar.gz\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/community/aarch64/APKINDEX.tar.gz\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : (1/1) Installing btrfs-progs-extra (6.14-r0)\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Executing busybox-1.37.0-r18.trigger\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : OK: 222 MiB in 202 packages\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Computing verity hashes...\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Installer updated successfully!\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : -rwxr-xr-x 1 root root 409.1M Aug 22 10:53 /target/mnt/installer.img\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Installer successfully created!\n"} {"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing post_script\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Command 'command podman rm -a -f' output:\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : fc3737f8c50c60fa6461ee1f9f214a7080b3585ca9f4909c1eb56dee62cf77bc\n"} {"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Container only update done.\n"} {"stdout":"[INFO ] : SWUPDATE running : Installation in progress\n"} {"stdout":"[INFO ] : SWUPDATE successful ! SWUPDATE successful !\n"} {"stdout":"[INFO ] : No SWUPDATE running : Waiting for requests...\n"} {"exit_code":0} SWU installation has been completed Successfully installed SWU
一方で、usb内に保存されたインストールディスクイメージをA9Eに書き込んだところ、
A9Eが起動しなくなりました。(SYSのLEDは点灯するが画面に何も表示されません。)
また、一度、SDで起動するスイッチを「1」の方に倒して起動を試みましたが、
同じように起動しませんでした。
at_satoshi.ohta
太田です。
状況を整理するためにいくつか質問させてください。
1. 作成したインストールディスクを書き込み起動しなくなった A9E は secureboot_make_installer.swu をインストールした A9E でしょうか?
それとも、また別の個体でしょうか?
2. スイッチを「1」にすると eMMC が起動するのですが、起動しなくなった A9E の電源を抜いて1分ほど待って再び電源を刺してもやはり起動しないでしょうか?
3. A9E に書き込んだ SRK ハッシュに対応する署名鍵を含む CST ディレクトリをご使用でしょうか?
デフォルトだと CST ディレクトリは secureboot_a900 ディレクトリ内に生成されますが、 A9E のセキュアブートを有効化した後に secureboot_a900 ディレクトリを削除したなどの作業を行いましたでしょうか?
どうぞよろしくお願いいたします。
kinoshita3322
> 1. 作成したインストールディスクを書き込み起動しなくなった A9E は secureboot_make_installer.swu をインストールした A9E でしょうか?
> それとも、また別の個体でしょうか?
→secureboot_make_installer.swu をインストールした A9Eです。
> 2. スイッチを「1」にすると eMMC が起動するのですが、起動しなくなった A9E の電源を抜いて1分ほど待って再び電源を刺してもやはり起動しないでしょうか?
→試してみましたが、起動できませんでした。
> 3. A9E に書き込んだ SRK ハッシュに対応する署名鍵を含む CST ディレクトリをご使用でしょうか?
> デフォルトだと CST ディレクトリは secureboot_a900 ディレクトリ内に生成されますが、 A9E のセキュアブートを有効化した後に secureboot_a900 ディレクトリを削除したなどの作業を行いましたでしょうか?
→ディレクトリの削除などは行っておりません。
現状は下記のとおりです。
atmark@atde9:~$ tree -L 2 secureboot_a900/ secureboot_a900/ ├── build-rootfs -> /home/atmark/secureboot_a900/build-rootfs-v3.22-at.1 ├── build-rootfs-v3.22-at.1 │ ├── Changelog │ ├── LICENSE │ ├── README.md │ ├── README.org │ ├── a600 │ ├── a6e │ ├── a900 │ ├── alpine-version │ ├── atmark-version │ ├── ax2 │ ├── baseos-900-3.22.1-at.1.20250819.package_list.txt │ ├── baseos-900-3.22.1-at.1.20250819.tar.zst │ ├── baseos_sbom.yaml │ ├── build_image.sh │ ├── build_initrd.sh │ ├── build_rootfs.sh │ ├── common │ ├── footprint.csv │ ├── high-g1 │ ├── initrd │ ├── qemu │ ├── submodules │ └── tools ├── cst │ ├── ca │ ├── crts │ └── keys ├── imx-boot -> /home/atmark/imx-boot-2023.04-at6 ├── out │ ├── Image.signed │ ├── Image.signed-mmc │ ├── Image.signed-verity │ └── imx-boot_armadillo-900.signed ├── secureboot.conf ├── secureboot.conf.original ├── secureboot.sh -> /home/atmark/imx-boot-2023.04-at6/secureboot.sh ├── swu │ ├── 1_write_srk_install_kernel.swu │ ├── 2_secureboot_close.swu │ ├── 3_disk_encryption.swu │ ├── secureboot_make_installer.swu │ └── secureboot_make_installer_router_project_1.0.0.swu └── tmp ├── Image.buildlog ├── Image.fit ├── Image.its ├── Image.packed ├── Image.txt ├── armadillo-900.atf-container.cstlog ├── armadillo-900.atf-container.signed ├── armadillo-900.atf-container.txt ├── armadillo-900.buildlog ├── armadillo-900.flash_singleboot_m33.cstlog ├── armadillo-900.flash_singleboot_m33.txt ├── armadillo-900.linux.cstlog ├── armadillo_900.dtb ├── armadillo_900.dtb.zst ├── baseos-900-installer-3.22.1-at.1.img ├── build.log ├── initrd-baseos.mmc.zst ├── initrd-baseos.verity.zst ├── installer_verity_cert.pem ├── installer_verity_key.pem ├── linux_apk ├── make_installer.log ├── resources ├── resources_verity └── srk_hash.txt
at_dominique.m…
横からすみません、
マルティネです。
再度確認する形で申し訳ないでが、eMMC で起動できなくなる理由がわかりませんので流れを確認させてください。
操作は以下の認識ですが、あってますか?
- Armadillo を eMMC で起動して、secureboot_make_installer.swu をインストールしました。
- SWU インストールによって USB メモリにインストーラーイメージができました。
- SD カードにイメージを書き込んで、Armadillo に投入しました。
- (どこかのタイミングで Armadillo poweroff)
- Armadillo 電源近くの boot switch を SD モードにして、電源入れ直しなどで起動しない(LED点灯、コンソールに出力ない)
- boot switch を eMMC に戻しても起動しない
であってますか?
その流れでしたら、eMMC の内容に変更なかったので、まずは eMMC を起動できなくなったところが気になります。
大変お手数ですが心当たりなどあればお願いします
at_dominique.m…
kinoshita3322
お世話になっております。
操作について下記の流れで間違いありません。
> - Armadillo を eMMC で起動して、secureboot_make_installer.swu をインストールしました。
> - SWU インストールによって USB メモリにインストーラーイメージができました。
> - SD カードにイメージを書き込んで、Armadillo に投入しました。
> - (どこかのタイミングで Armadillo poweroff)
> - Armadillo 電源近くの boot switch を SD モードにして、電源入れ直しなどで起動しない(LED点灯、コンソールに出力ない)
> - boot switch を eMMC に戻しても起動しない
特に心当たるところはありませんが、セキュアブート無しのインストールディスクイメージでは無事に起動できていました。
セキュアブートを有効化するため、セキュリティーブートガイドを参照しながら下記フォーラムの内容でswuのインストールを行い、
イメージを作成したところ起動できなくなりました。
フォーラムリンク https://armadillo.atmark-techno.com/forum/armadillo/27045
kinoshita3322
at_dominique.m…
at_dominique.m…
お待たせしました。
度々の確認ですみません、もう少し確認させてください
(srk のハッシュは公開鍵のハッシュなので、秘密ではありません。共有してもセキュリティ上に問題ありません。)
# ATDE上の CRT の確認 atmark@atde9:~$ cat ~/secureboot_a900/tmp/srk_hash.txt atmark@atde9:~$ ~/secureboot_a900/secureboot.sh print_srk_fuse # SD カードの CRT 確認(Armadillo から取得した値) # make_installer SWU で生成した installer.img を USB から ATDE にコピーするか、 # USB をマウントして installer.img のパスを直してください atmark@atde9:~$ sudo losetup -f --show -P installer.img /dev/loop0 atmark@atde9:~$ sudo mount -o ro /dev/loop0p1 /mnt atmark@atde9:~$ sudo cat /mnt/secureboot_srk atmark@atde9:~$ sudo umount /mnt atmark@atde9:~$ sudo losetup -d /dev/loop0 # SD に使ってるブートローダーの確認。 # 同じく installer.img のパスを修正してください atmark@atde:~$ dd if=~/secureboot_a900/out/imx-boot_armadillo-900.signed bs=1M count=1 | sha1sum atmark@atde:~$ dd if=installer.img bs=1M count=1 iflag=skip_bytes skip=$((32*1024)) | sha1sum
お手数ですがよろしくお願いします
kinoshita3322
結果を添付いたします。
atmark@atde9:~$ cat ~/secureboot_a900/tmp/srk_hash.txt 0x70E2F23C,0x1FF90633,0xA1E4316D,0xFD0D2A11,0xA89E179E,0xB7BD58F2,0x29D57538,0xC8499B4A atmark@atde9:~$ ~/secureboot_a900/secureboot.sh print_srk_fuse Use the following commands in uboot to set root key hash in OTP: fuse prog -y 15 0 0x70E2F23C 0x1FF90633 0xA1E4316D 0xFD0D2A11 0xA89E179E 0xB7BD58F2 0x29D57538 0xC8499B4A atmark@atde9:~$ sudo losetup -f --show -P installer.img [sudo] atmark のパスワード: /dev/loop0 atmark@atde9:~$ sudo mount -o ro /dev/loop0p1 /mnt atmark@atde9:~$ sudo cat /mnt/secureboot_srk 0x70E2F23C,0x1FF90633,0xA1E4316D,0xFD0D2A11,0xA89E179E,0xB7BD58F2,0x29D57538,0xC8499B4A atmark@atde9:~$ sudo umount /mnt atmark@atde9:~$ sudo losetup -d /dev/loop0 atmark@atde9:~$ dd if=~/secureboot_a900/out/imx-boot_armadillo-900.signed bs=1M count=1 | sha1sum 1+0 レコード入力 1+0 レコード出力 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0731859 s, 14.3 MB/s 4f1d8aba98b4ea5dece9839c49ad1a1e6573ba93 - atmark@atde9:~$ dd if=installer.img bs=1M count=1 iflag=skip_bytes skip=$((32*1024)) | sha1sum 1+0 レコード入力 1+0 レコード出力 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0276435 s, 37.9 MB/s 4f1d8aba98b4ea5dece9839c49ad1a1e6573ba93 -
martinetd
マルティネです
出力結果ありがとうございます。
ATDE にあるセキュアーブートの鍵と Armadillo に焼かれてる SRK ハッシュは一致してますので、機能に起動できなかったイメージの方でリトライしましょう。
現状起動できてない理由ははっきりとわかりませんが、仮説として最新にビルドした imx-boot イメージになにかの問題があって、
前のイメージで起動できていた状態が make_installer SWU のインストールでだめになったという可能性があります。
そういう問題は手元で見たことがありませんので、以下の手順で起動できたら少し解析に付き合っていただきたいと思いますが、その際によろしくお願いします。
手順としては太田がリンクした「4.2. 量産用インストールディスクイメージを 1 から作る方法」通りでいいですが、一部はすでに存在するはずですので以下の手順でお願いします。
なにかエラーあった場合は聞いてください。
https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-900-secure…
$ cd secureboot_a900 # 起動できないだろう imx-boot を解析用に一時保存します $ mkdir debug_boot $ mv out/imx-boot_armadillo-900.signed tmp/imxboot.log debug_boot/ # imx-boot をリビルドします $ ./secureboot.sh imxboot # インストーラーのビルド: カーネルの置き換え $ sed -i -e '/linux-at-x2/d' build-rootfs/a900/packages $ rm -rf build-rootfs/a900/resources/lib $ cp -r tmp/linux_apk/lib build-rootfs/a900/resources/ $ cp out/Image.signed-verity build-rootfs/a900/image_installer/boot/Image # 必要だったら依存のインストール $ sudo apt update && sudo apt install cryptsetup-bin # イメージのビルド $ cd build-rootfs $ ./build_rootfs.sh -b a900 $ ./build_image.sh -b a900 $ ./build_image.sh -b a900 \ --srk $(cat /home/atmark/secureboot_a900/tmp/srk_hash.txt) \ --encrypt all \ --boot /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed \ --boot-linux /home/atmark/secureboot_a900/out/Image.signed-mmc \ --verity /home/atmark/secureboot_a900/tmp/installer_verity_cert.pem \ /home/atmark/secureboot_a900/tmp/installer_verity_key.pem \ --installer baseos-900-[VERSION].[DATE].img ※前のコマンドの出力
これで baseos-900-[VERSION].[DATE]-installer.img のイメージが生成されるはずで、それを起動してみていただければ幸いです。
これが起動できれば、Armadillo が初期化されますが、必要でしたら古いデータはまだ make_installer の SWU でビルドした installer.img にありますので復帰可能です。
必要でしたら説明できますが、ひとまず起動できれば嬉しいです。
起動できれば、次は前のイメージで起動できなかったあたりも確認したいですので、
お差し支えなければまた案内します。
起動できないはずがないですが、万が一できなかったらまたいくつか確認させていただきます。
大変お手数ですがよろしくお願いします
kinoshita3322
お世話になっております。
保存しておくout/imx-boot_armadillo-900.signedとtmp/imxboot.log debug_boot/が見当たらないのですが、
outとtmpのディレクトリごとmvしておけばよいでしょうか。
root@atde9:/home/atmark/secureboot_a900# ls out Image.signed Image.signed-mmc Image.signed-verity root@atde9:/home/atmark/secureboot_a900# ls tmp Image.buildlog Image.fit Image.its Image.packed Image.txt armadillo-900.atf-container.cstlog armadillo-900.atf-container.signed armadillo-900.atf-container.txt armadillo-900.buildlog armadillo-900.flash_singleboot_m33.cstlog armadillo-900.flash_singleboot_m33.txt armadillo-900.linux.cstlog armadillo_900.dtb armadillo_900.dtb.zst baseos-900-installer-3.22.1-at.1.img build.log initrd-baseos.mmc.zst initrd-baseos.verity.zst installer_verity_cert.pem installer_verity_key.pem linux_apk make_installer.log resources resources_verity srk_hash.txt
at_dominique.m…
マルティネです。
> 保存しておくout/imx-boot_armadillo-900.signedとtmp/imxboot.log debug_boot/が見当たらないのですが、
imxboot.log についてはすみません、build.log になります(secureboot.sh build で子コマンドを実行していますが、ログはまとめられています。次に実行する「secureboot.sh imxboot」で imxboot.log が生成されますが、まだ保存する必要はなかったです)
imx-boot_armadillo-900.signed に関しては 2025年8月22日 13時01分の返事にリストされていましたので、きになりますが、log でエラーしたときにそっちだけを debug_boot に移動されたと思いますので問題ない多分大丈夫です。
# ログの保存 mv tmp/build.log debug_boot/ # 保存したファイルの確認 ls debug_boot
を実行してから 「./secureboot.sh imxboot
」から続けていただければと思います。
よろしくお願いします
kinoshita3322
お世話になっております。
cpでbuild-rootfs/a900/image_installer/bootがないのはmkdirでbootディレクトリを作成してから実行すればよい認識で合っていますか。
root@atde9:/home/atmark/secureboot_a900# ls debug_boot build.log imx-boot_armadillo-900.signed root@atde9:/home/atmark/secureboot_a900# ./secureboot.sh imxboot Logging build outputs to /home/atmark/secureboot_a900/tmp/imxboot.log Building imx-boot (boot loader)... fatal: detected dubious ownership in repository at '/home/atmark/imx-boot-2023.04-at6' To add an exception for this directory, call: git config --global --add safe.directory /home/atmark/imx-boot-2023.04-at6 fatal: detected dubious ownership in repository at '/home/atmark/imx-boot-2023.04-at6' To add an exception for this directory, call: git config --global --add safe.directory /home/atmark/imx-boot-2023.04-at6 Created /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed root@atde9:/home/atmark/secureboot_a900# sed -i -e '/linux-at-x2/d' build-rootfs/a900/packages root@atde9:/home/atmark/secureboot_a900# rm -rf build-rootfs/a900/resources/lib root@atde9:/home/atmark/secureboot_a900# cp -r tmp/linux_apk/lib build-rootfs/a900/resources/ root@atde9:/home/atmark/secureboot_a900# cp out/Image.signed-verity build-rootfs/a900/image_installer/boot/Image cp: 通常ファイル 'build-rootfs/a900/image_installer/boot/Image' を作成できません: そのようなファイルやディレクトリはありません root@atde9:/home/atmark/secureboot_a900# ls build-rootfs/a900/image_installer/ installer.conf
at_dominique.m…
マルティネです。
> cpでbuild-rootfs/a900/image_installer/bootがないのはmkdirでbootディレクトリを作成してから実行すればよい認識で合っていますか。
確認不足で度々すみません。
はい、そうです。
また、今回は root ユーザーで ./secureboot.sh build 等を行ってますが、root ユーザーでの secureboot イメージの生成は試してませんので、それで何かの処理の問題があるかもしれません。
こちらで試してみますが、今回は一旦 atmark ユーザーにファイルをもどしてから atmark ユーザーで手順を実行していただけますか?
# root ユーザーのまま chown -R atmark: /home/atmark/secureboot_a900 /home/atmark/imx-boot-2023.04-at6 # atmark ユーザーに戻ってから、secureboot.sh imxboot のステップから実行しなおします $ ./secureboot.sh imxboot # (このステップは root ユーザーでも問題ありませんでしたが、一応) $ sed -i -e '/linux-at-x2/d' build-rootfs/a900/packages $ rm -rf build-rootfs/a900/resources/lib $ cp -r tmp/linux_apk/lib build-rootfs/a900/resources/ $ mkdir -p build-rootfs/a900/image_installer/boot $ cp out/Image.signed-verity build-rootfs/a900/image_installer/boot/Image # 必要だったら依存のインストール $ sudo apt update && sudo apt install cryptsetup-bin # イメージのビルド $ cd build-rootfs $ ./build_rootfs.sh -b a900 $ ./build_image.sh -b a900 $ ./build_image.sh -b a900 \ --srk $(cat /home/atmark/secureboot_a900/tmp/srk_hash.txt) \ --encrypt all \ --boot /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed \ --boot-linux /home/atmark/secureboot_a900/out/Image.signed-mmc \ --verity /home/atmark/secureboot_a900/tmp/installer_verity_cert.pem \ /home/atmark/secureboot_a900/tmp/installer_verity_key.pem \ --installer baseos-900-[VERSION].[DATE].img ※前のコマンドの出力
よろしくお願いします
kinoshita3322
お世話になっております。コマンドの実行を要求されましたが実行してよろしいでしょうか。
atmark@atde9:~/secureboot_a900/build-rootfs$ ./build_image.sh -b a900
use default(outdir=/home/atmark/secureboot_a900/build-rootfs)
use default(output=baseos-900-3.22.1-at.1.20250825.img)
error: Missing required programs: please install with: sudo apt install btrfs-progs
at_dominique.m…
kinoshita3322
再度、./build_image.sh -b a900
を実行時にエラーが出ました。
atmark@atde9:~/secureboot_a900/build-rootfs$ sudo apt install btrfs-progs パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 提案パッケージ: duperemove 以下のパッケージが新たにインストールされます: btrfs-progs アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 10 個。 698 kB のアーカイブを取得する必要があります。 この操作後に追加で 4,054 kB のディスク容量が消費されます。 取得:1 http://ftp.jp.debian.org/debian bullseye/main amd64 btrfs-progs amd64 5.10.1-2 [698 kB] 698 kB を 1秒 で取得しました (755 kB/s) 以前に未選択のパッケージ btrfs-progs を選択しています。 (データベースを読み込んでいます ... 現在 281218 個のファイルとディレクトリがインストールされています。) .../btrfs-progs_5.10.1-2_amd64.deb を展開する準備をしています ... btrfs-progs (5.10.1-2) を展開しています... btrfs-progs (5.10.1-2) を設定しています ... initramfs-tools (0.140) のトリガを処理しています ... update-initramfs: Generating /boot/initrd.img-5.10.0-35-amd64 man-db (2.9.4-2) のトリガを処理しています ... Scanning processes... Scanning linux images... Running kernel seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. atmark@atde9:~/secureboot_a900/build-rootfs$ ./build_image.sh -b a900 use default(outdir=/home/atmark/secureboot_a900/build-rootfs) use default(output=baseos-900-3.22.1-at.1.20250825.img) Warning: Partition table header claims that the size of partition table entries is 0 bytes, but this program supports only 128-byte entries. Adjusting accordingly, but partition table may be garbage. Warning: Partition table header claims that the size of partition table entries is 0 bytes, but this program supports only 128-byte entries. Adjusting accordingly, but partition table may be garbage. Creating new GPT entries in memory. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) GPT data structures destroyed! You may now partition the disk using fdisk or other utilities. Setting name! partNum is 0 Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully. btrfs-progs v5.10.1 See http://btrfs.wiki.kernel.org for more information. Label: rootfs_0 UUID: dbe5d847-f8b0-4e36-9368-17c2022fcc46 Node size: 16384 Sector size: 4096 Filesystem size: 300.00MiB Block group profiles: Data: single 8.00MiB Metadata: DUP 32.00MiB System: DUP 8.00MiB SSD detected: no Incompat features: extref, skinny-metadata Runtime features: free-space-tree Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 300.00MiB /dev/loop0 error: /boot/armadillo_900.dtb does not exist !!!
at_dominique.m…
> 再度、./build_image.sh -b a900
を実行時にエラーが出ました。
すみません…
secureboot の場合に armadillo_900.dtb は利用されてないので https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-900-secure… にあったコピーを省けていましたが、
ここでチェックありましたね…
実際に不要ですが、マニュアル通りにしましょう。
コピーした後に build_rootfs.sh も再実行してください
$ cp ../tmp/linux_apk/boot/armadillo_900.dtb a900/resources/boot/ $ ./build_rootfs.sh -b a900 $ ./build_image.sh -b a900 $ ./build_image.sh -b a900 \ --srk $(cat /home/atmark/secureboot_a900/tmp/srk_hash.txt) \ --encrypt all \ --boot /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed \ --boot-linux /home/atmark/secureboot_a900/out/Image.signed-mmc \ --verity /home/atmark/secureboot_a900/tmp/installer_verity_cert.pem \ /home/atmark/secureboot_a900/tmp/installer_verity_key.pem \ --installer baseos-900-[VERSION].[DATE].img ※前のコマンドの出力
今後のアップデートでチェックを直します。
よろしくお願いします
kinoshita3322
お世話になります。以下を実行し、A9EをSDのimgから無事起動できました。
atmark@atde9:~/secureboot_a900/build-rootfs$ ./build_image.sh -b a900 \ --srk $(cat /home/atmark/secureboot_a900/tmp/srk_hash.txt) \ --encrypt all \ --boot /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed \ --boot-linux /home/atmark/secureboot_a900/out/Image.signed-mmc \ --verity /home/atmark/secureboot_a900/tmp/installer_verity_cert.pem \ /home/atmark/secureboot_a900/tmp/installer_verity_key.pem \ --installer baseos-900-3.22.1-at.1.20250825.img use default(outdir=/home/atmark/secureboot_a900/build-rootfs) use default(output=baseos-900-3.22.1-at.1.20250825-installer.img) error: Missing required programs: please install with: sudo apt install xxhash atmark@atde9:~/secureboot_a900/build-rootfs$ sudo apt install xxhash atmark@atde9:~/secureboot_a900/build-rootfs$ ./build_image.sh -b a900 \ --srk $(cat /home/atmark/secureboot_a900/tmp/srk_hash.txt) \ --encrypt all \ --boot /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed \ --boot-linux /home/atmark/secureboot_a900/out/Image.signed-mmc \ --verity /home/atmark/secureboot_a900/tmp/installer_verity_cert.pem \ /home/atmark/secureboot_a900/tmp/installer_verity_key.pem \ --installer baseos-900-3.22.1-at.1.20250825.img atmark@atde9:~/secureboot_a900/build-rootfs$ sudo dd if=/home/atmark/secureboot_a900/build-rootfs/baseos-900-3.22.1-at.1.20250825-installer.img of=/dev/sdb bs=1M oflag=direct status=progress
at_dominique.m…
kinoshita3322さん
マルティネです。
> A9EをSDのimgから無事起動できました。
無事に起動できてよかったです。
一旦これで問題は解決できたと思います(このイメージで再び設定を行っていただいて、make installer の SWU で量産用のイメージを生成すれば問題なく起動できると思います)が、
根本的な問題が2つ残ってます:
① 今回、この状態になったのは eMMC 上のブートローダーを起動できなくて、自動切り替えが発生しましたが、それを認識せずに「良い」ブートローダーを上書きしてしまった問題。
これは昨日時点で手元で再現できてましたので、NXP社に問い合わせして今後のアップデートで修正します。
(ご興味あればこちらです https://community.nxp.com/t5/i-MX-Processors/i-MX-8ULP-mmc-boot-partiti… )
② そもそもなぜ起動できないイメージができていたのか問題。
root でビルドを手元で試してもビルドログに問題なかったので、まずは手元で再現できるかもう少し確認してみます。
build.log ファイルに秘密情報が入ってない事を確認しましたので、お差し支えなければ保存していた debug_boot/build.log ファイルをこちらに添付していただけますでしょうか?
もし、ログと手元の確認で分からなかった場合はまた連絡します。
よろしくお願いします
kinoshita3322
2025年8月21日 18時13分
追記になりますが、/dev/mmcblk2p1には下記のファイルが入っておりました。
appfs.lzo ip_config.txt.sample
appfs.xxh lib
bin live
boot mnt
boot.filename opt
boot.lzo proc
boot.xxh root
dev run
etc sbin
firm.squashfs secboot_linux.lzo
firm.squashfs.xxh secboot_linux.xxh
home secureboot_srk
image.filename sys
image.lzo target
image.xxh tmp
installer.conf usr
installer.sh var
installer_overrides.sh.sample