Armadilloフォーラム

make-installer.swu 実施時にERROR : dd: can't open '/dev/mmcblk1boot1': No such file or directoryが発生する

new_bee

2025年7月2日 11時59分

==========
製品型番:AG6221-C01Z
Debian/ABOSバージョン:3.19.1-at.3.20240527
カーネルバージョン:5.10.237-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:SDBOOTにて起動
==========

いつもお世話になっております。

大まかな開発が終わり4.4.6. 開発したシステムをインストールディスクにするを参考に
make-installer.swuをABOSWEB上でarmadilloに実行したところ以下エラーが発生してしました。

Licensed under GPLv2. See source distribution for detailed copyright notices.
 
[INFO ] : SWUPDATE running :  [print_registered_handlers] : 	no handler registered.
[INFO ] : SWUPDATE running :  [main] : Running on iot-a6e Revision at1
[INFO ] : SWUPDATE started :  Software Update started !
[INFO ] : SWUPDATE running :  [install_single_image] : Installing pre_script
[INFO ] : SWUPDATE running :  [read_lines_notify] : No base os update: copying current os over
[INFO ] : SWUPDATE running :  [read_lines_notify] : Waiting for btrfs to flush deleted subvolumes
[INFO ] : SWUPDATE running :  [install_single_image] : Installing Copying installer to USB device
[INFO ] : SWUPDATE running :  [install_single_image] : Installing swdesc_command_nochroot 'podman kill -a'
[INFO ] : SWUPDATE running :  [install_single_image] : Installing swdesc_command_nochroot --stdout-info 'abos-ctrl make-installer --noprompt --output /target/mnt/installer.img'
[INFO ] : SWUPDATE running :  [read_lines_notify] : Checking if /target/mnt/installer.img-in-progress can be used safely...
[INFO ] : SWUPDATE running :  [read_lines_notify] : Using installer image (3.21.3-at.14) on image file.
[INFO ] : SWUPDATE running :  [read_lines_notify] : Would you like to create a windows partition?
[INFO ] : SWUPDATE running :  [read_lines_notify] : That partition would only be used for customization script at the end of
[INFO ] : SWUPDATE running :  [read_lines_notify] : install, leave at 0 to skip creating it.
[INFO ] : SWUPDATE running :  [read_lines_notify] : Custom partition size (MB, [0] or 16 - 443): 0
[INFO ] : SWUPDATE running :  [read_lines_notify] : Growing installer main partition
[INFO ] : SWUPDATE running :  [read_lines_notify] : Resize device id 1 (/dev/loop0p1) from 394.00MiB to max
[INFO ] : SWUPDATE running :  [read_lines_notify] : Environment OK, copy 1
[ERROR] : SWUPDATE failed [0] ERROR : dd: can't open '/dev/mmcblk1boot1': No such file or directory
[ERROR] : SWUPDATE failed [0] ERROR : ERROR: Could not read boot image from /dev/mmcblk1boot1
[INFO ] : SWUPDATE running :  [read_lines_notify] : Terminating, cleaning up...
[ERROR] : SWUPDATE failed [0] ERROR : Command failed: sh -c '{ abos-ctrl make-installer --noprompt --output /target/mnt/installer.img; }' >&${SWUPDATE_INFO_FD:-1} -- /var/tmp/swupdate-abosweb-upload.HpfaLf/sh__c____abos_ctrl_m..PDATE_INFO_FD__1_____9e631e85904e54361de1fd257ce4d221522c1ba9
[ERROR] : SWUPDATE failed [0] ERROR : Error streaming _home_atmark_mkswu__..PDATE_INFO_FD__1_____45c41d09e54f3f778d05638e82bfc1e627211377
[ERROR] : SWUPDATE failed [1] Image invalid or corrupted. Not installing ...
[ERROR] : SWUPDATE failed [0] ERROR : SWUpdate *failed* !
swupdate exited

対策方法を教えていただけると助かります。

また表題とはずれてしまうのですが本番環境もSDBootにて起動しようと考えており
4.4.8. インストールディスクの動作確認を行うですとアルマジロ本体に作成したイメージを書き込んでいるように見えるのですが
SDに作成したコンテナ等をインストールする場合はどうしたらよいでしょうか?

お手数ですが対策方法をご教授いただけると助かります。
宜しくお願い致します。

コメント

at_dominique.m…

2025年7月2日 13時32分

new_beeさん

お世話になっています、
マルティネです。

> 大まかな開発が終わり4.4.6. 開発したシステムをインストールディスクにするを参考に
> make-installer.swuをABOSWEB上でarmadilloに実行したところ以下エラーが発生してしました。

> [ERROR] : SWUPDATE failed [0] ERROR : dd: can't open '/dev/mmcblk1boot1': No such file or directory

make-installer を SD boot 上で実行する際のエラーですね。
対策はできますが、生成されたイメージで eMMC にインストールするイメージができますので、以下のコメントを考えると別の方法でイメージを複製した方がいいと思います:
> また表題とはずれてしまうのですが本番環境もSDBootにて起動しようと考えており

こちらについては申し訳ないですが、SDBoot 用のイメージを生成するツールは build-rootfs の build_image.sh しかなく、rootfs 以外のコンテナデータを現在対応してません。
インストーラーの場合はインストール時に SWU をインストールする形でクローンせずにイメージを生成できますが、SD boot でまだ要望がなかったためこう言う流れをまだ準備してません。

対策としていくつかの方法はあります。

① B 面または未使用のデータもコピーしますので効率が悪いですが、同じサイズのカードを利用すれば SD カードをそのままコピーしていただいても動作できます。
(調整できますが、以下の通りですと新しいカードが大きい場合は未使用のデータができます、小さい場合はエラーします)

全く未確認ですが、以下で問題ないかと思います。

# 作業前に、古いバージョンを漏らさないため Armadillo 上で両面を同期させる
armadillo# abos-ctrl rollback-clone
 
# 書き込み済みのイメージを ATDE にマウントして一旦保存します
# /dev/sdb の想定です。
ATDE# sudo dd if=/dev/sdb bs=1M | zst > image.zst
 
# 新しいカードを ATDE に入れて書き込みます。同じサイズのカードが必要です。
ATDE# zstd -d < image.zst | sudo dd of=/dev/sdb bs=1M oflag=direct iflag=fullblock
 
# 書き込んだ後はいくつかのファイルを直します
sudo mount /dev/sdb1 /mnt
sudo mount /dev/sdb2 /mnt/mnt
# イメージを区別させるファイル(NetworkManager 等が利用します)
sudo sh -c "head -c 16 < /dev/urandom | xxd -p > /mnt/etc/machine-id"
sudo cp /mnt/etc/machine-id /mnt/mnt/etc/machine-id
# ABOS-Web の証明書、起動時に再生されます
sudo rm -rf /mnt/etc/atmark/abos_web/tls /mnt/mnt/etc/atmark/abos_web/tls
# ssh を利用する場合の鍵の再生性
sudo rm -rf /mnt/etc/ssh/ssh_host_*key* /mnt/mnt/etc/ssh/ssh_host_*key*
sudo ssh-keygen -A -f /mnt
sudo cp -a /mnt/etc/ssh/ssh_host_*key* /mnt/mnt/etc/ssh/
# アンマウント
sudo umount /mnt/mnt /mnt

② 手間ですが、必要なデータだけを取得できるはずです。
- https://armadillo.atmark-techno.com/forum/armadillo/26202 に行ったようにコンテナデータを SWU で保存する
- rootfs も似たような方法で tar アーカイブに保存すれば同じ SWU に組み込めれるはずです
- インストール方法に関しては、少数でしたらひとまず USB メモリに保存すれば、SDカードを一度起動して自動的にインストールされます。
少し頑張れば SD カードのイメージを作る時に SWU もイメージに組み込んでおいて初回起動時にインストールできるかもしれませんが、インストーラーと違ってパーティションを大きくして SWU を無理矢理に書き込むことはできないので、少し時間が必要です。

② で進みたい場合は明日少し動作確認して手順を作りますが、ひとまず ① でいかがでしょうか。

よろしくお願いします

マルティネ様

いつもお世話になっております。

> make-installer を SD boot 上で実行する際のエラーですね。
> こちらについては申し訳ないですが、SDBoot 用のイメージを生成するツールは build-rootfs の build_image.sh しかなく、rootfs 以外のコンテナデータを現在対応してません。
承知したしました。

ひとまず台数も10台弱なので①の方法で試してみようと思います。

早急の対応ありがとうございました。