gt777
2023年6月16日 15時18分
お世話になっております。
https://armadillo.atmark-techno.com/forum/armadillo/15730
先日上記のフォーラムでトライ&エラーでストレージ暗号化を完了しましたので、現在SWUpdateを一気に行えるように整理を進めております。
①セキュアブート用SWUイメージインストール
②SRKハッシュ書き込み/確認/close/reset
③ストレージ暗号化+アプリケーションコンテナイメージ用SWUイメージインストール
の順序で作業をしているのですが、③のインストールでエラーが発生しております。
原因についてわかりますでしょうか。
■SWUpdateログ
armadillo:~# mount /dev/mmcblk1p1 /mnt armadillo:~# TMPDIR=/tmp swupdate -i /mnt/OS_enc/OS_enc.swu SWUpdate v2022.12_git20230414-r0 Licensed under GPLv2. See source distribution for detailed copyright notices. [INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1 [INFO ] : SWUPDATE started : Software Update started ! [INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script [INFO ] : SWUPDATE running : [read_lines_notify] : Updating base os: copying swupdate_preserve_files [WARN ] : SWUPDATE running : [read_lines_notify] : ---------------------------------------------- [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Reformatting appfs with encryption, current container images and [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: volumes will be lost. [WARN ] : SWUPDATE running : [read_lines_notify] : ---------------------------------------------- [ERROR] : SWUPDATE failed [0] ERROR : ERROR: cannot access '/tmp/btrfs-root.KPMoGR/boot_1': No such file or directory [ERROR] : SWUPDATE failed [0] ERROR : ---------------------------------------------- [ERROR] : SWUPDATE failed [0] ERROR : /!\ Could not create boot/containers_storage subvol [ERROR] : SWUPDATE failed [0] ERROR : ---------------------------------------------- [ERROR] : SWUPDATE failed [0] ERROR : Command failed: sh -c 'sh $1' -- /tmp//enc.zst.scripts_pre.sh [ERROR] : SWUPDATE failed [0] ERROR : Error streaming enc.zst.scripts_pre.sh [ERROR] : SWUPDATE failed [1] Image invalid or corrupted. Not installing ... swupdate_image_write failed: Broken pipe [ERROR] : SWUPDATE failed [0] ERROR : SWUpdate *failed* ! [INFO ] : No SWUPDATE running : Waiting for requests... armadillo:~#
■mkswu --showの結果(一部隠してます)
atmark@atde9:~/mkswu$ mkswu --show OS_enc.swu # OS_enc.swu # built with mkswu 4.12-13-gedb2018 swdesc_option ENCRYPT_ROOTFS swdesc_option ENCRYPT_USERFS swdesc_tar --version base_os 3.17.3-at.6.20230616.3 --preserve-attributes ../build-rootfs-v3.17-at.6/baseos-x2-3.17.3-at.6.20230616.tar.zst # (encrypted) swdesc_boot_linux --version boot_linux 4 ../secureboot/Image.signed # (encrypted) swdesc_command --version extra_os.disk_encryption 1 true swdesc_boot_enc --install-if different --version boot 5 ../secureboot/imx-boot_armadillo_x2.enc ../secureboot/armadillo_x2.dek_offsets # (encrypted) swdesc_embed_container XXXXX.tar --version XXXXX 1 # (encrypted) swdesc_files --version extra_os.XXXXX 1 --dest /etc/atmark/containers/ XXXXX.conf # (encrypted)
コメント
gt777
ドミニクさん
fstabを修正しましたが、mount -aでエラーとなりました。
armadillo:~# sed -i -e "s:[^ \t]*p5\t:$dev\t:" /etc/fstab armadillo:~# persist_file /etc/fstab armadillo:~# mount -a mount: btrfs: mount point does not exist. dmesg(1) may have more information after failed mount system call. mount: btrfs: mount point does not exist. dmesg(1) may have more information after failed mount system call. mount: btrfs: mount point does not exist. dmesg(1) may have more information after failed mount system call. mount: btrfs: mount point does not exist. dmesg(1) may have more information after failed mount system call. armadillo:~# cat /etc/fstab /dev/root / ext4 ro,noatime 0 0 tmpfs /tmp tmpfs nosuid,nodev 0 0 /dev/mmcblk2p3 /var/log ext4 defaults,noatime 0 0 /var/lib/containers/storage_readonly btrfs compress=zstd,discard=async,noatime,subvol=boot_0/containers_storage 0 0 /var/app/rollback/volumes btrfs compress=zstd,discard=async,noatime,subvol=boot_0/volumes 0 0 /var/app/volumes btrfs compress=zstd,discard=async,noatime,subvol=volumes 0 0 /var/tmp btrfs compress=zstd,discard=async,noatime,subvol=tmp 0 0 /dev/mmcblk2gp1 /var/at-log vfat defaults 0 0 /dev/mmcblk2p4 /opt/firmware squashfs defaults 0 0
インストーラーでの初期化を試そうと思いますが、セキュアブート完了済(署名済)の状態でのインストーラーは以下の手順で良いでしょうか?
sudo ./build_image.sh \ --rootfs baseos-x2-3.17.3-at.6.20230615.tar.zst ★セキュアブート時に使用したファイル (略) Successfully built /home/atmark/build-rootfs-v3.17-at.6/baseos-x2-3.17.3-at.6.20230615.img sudo ./build_image.sh \ --boot ~/secureboot/imx-boot_armadillo_x2.signed \ ★署名済のブートローダー --installer ./baseos-x2-3.17.3-at.6.20230615.img
at_dominique.m…
gt777さん
マルティネです。
>
> armadillo:~# sed -i -e "s:[^ \t]*p5\t:$dev\t:" /etc/fstab ... > /var/lib/containers/storage_readonly btrfs compress=zstd,discard=async,noatime,subvol=boot_0/containers_storage 0 0
すみません、sed コマンドを mkswu からコピーして、変数が設定されてなかったんですね…ちょっと疲れが出てきました。
空になっているところを /dev/mapper/mmcblk2p5
でなおしたら mount できると思いますが、build_image コマンドはこれであっています。
> 確認不足でまたお手数をかけして申し訳ございませんでした。
> 暗号化の部分以外は自動テストで問題なかったのでおそらく大丈夫と思いますが、リリース前にもう一度暗号化の設定を確認しておきます。
とりあえず今のパターンで大丈夫そうです。本当にすみません…
コンテナのインストールも試して、それも大丈夫ですが、一つだけ注意点があります: ③ を TMPDIR=/tmp で実行しているため、大きいなコンテナを書き込めない可能性があります。(具体的に swdesc_embed_container と swdesc_pull_container の場合は 900MB 以降、 swdesc_usb_container の場合 1800MB 以降でエラーすると思います、podman は TMPDIR で一時データをコピーしています)
アプリケーションが大きい場合は別の swu でインストールしてください。
よろしくお願いします。
gt777
マルティネさん
色々とお手数おかけしていてすみません。
fstabを修正し、作り直したSWUイメージでSWUpdateが完了しました。
暗号化やコンテナイメージ等、想定通りに構築できました。
ありがとうございました。
> コンテナのインストールも試して、それも大丈夫ですが、一つだけ注意点があります: ③ を TMPDIR=/tmp で実行しているため、大きいなコンテナを書き込めない可能性があります。(具体的に swdesc_embed_container と swdesc_pull_container の場合は 900MB 以降、 swdesc_usb_container の場合 1800MB 以降でエラーすると思います、podman は TMPDIR で一時データをコピーしています)
コンテナのサイズは300MB程度でしたので1つのSWUで動作できました。
今後大きなコンテナを扱う際は気を付けるようにします。
ちなみに、初期化用のインストールイメージですが、SDブートしてみたところ、無限にロールバックを繰り返していたようなので、u-bootで停止しました。build_image.shでImage.signedを指定する必要があるかもしれません。
(今回はfstabの修正で復旧したので困っていないですが、情報共有です)
/var/at-log/atlog
04x 0 00:00:00 armadillo WARNING uboot: reset by wdt 04x 0 00:00:00 armadillo WARNING uboot: Could not load linux image! 04x 0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk1p1 04x 0 00:00:00 armadillo WARNING uboot: reset by wdt 04x 0 00:00:00 armadillo WARNING uboot: Could not boot image 04x 0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk1p2 04x 0 00:00:00 armadillo WARNING uboot: reset by wdt (略)
at_dominique.m…
gt777さん
> ちなみに、初期化用のインストールイメージですが、SDブートしてみたところ、
> 無限にロールバックを繰り返していたようなので、u-bootで停止しました。
> build_image.shでImage.signedを指定する必要があるかもしれません。
build_rootfs.sh で生成した secureboot 対応のアーカイブの /boot/Image を Image.signed で差し替えたはずですので、それで起動できるはずです。
手元のインストーラーで起動できていますので、できるはずですが、細かい確認は必要になったらにしましょう。
よろしくお願いします。
at_dominique.m…
2023年6月16日 16時09分
gt777 さん
ドミニクです
> ①セキュアブート用SWUイメージインストール
> ②SRKハッシュ書き込み/確認/close/reset
> ③ストレージ暗号化+アプリケーションコンテナイメージ用SWUイメージインストール
はい、これでいいと思います。
すみません、appfs を暗号化した後の処理で現在のサブボリュームを作り直す修正を入れたつもりで、test ブランチでまだ確認してなかったコミットが入ってしまって逆に不具合になりました。
このエラーを今修正しましたので、mkswu のブランチを再び pull して swu を再生紙してください。
この armadillo は前回の armadillo と同じく /var/tmp がマウントされてない状態になってしまったので、インストーラーで初期化した方が早いと思いますが、救う対応としては前回と似たような手順です:
mount コマンドで前回と同じく /var/lib/containers_readonly とボリュームが存在しないエラーが出力されると思いますが、無視していいはずです。
確認不足でまたお手数をかけして申し訳ございませんでした。
暗号化の部分以外は自動テストで問題なかったのでおそらく大丈夫と思いますが、リリース前にもう一度暗号化の設定を確認しておきます。
よろしくお願いします