Armadilloフォーラム

最新BaseOSで作成したSDイメージを使って異なるBaseOSにインストールできない現象について

yasuhiro-hamada

2023年6月21日 11時15分

弊社にて最新のBaseOSにアップデートして作成したSDイメージで、元のBaseOSが異なるA6Eへのインストールが出来ない現象が発生しています。

予め最新のBaseOSにアップデートしたA6EへのSDインストールは正しく行えることから、元のBaseOSのバージョンの違いによってインストールができない可能性を疑い弊社環境にて可能な範囲で確認したところ、特徴があるように見えています。

<元のBaseOSのバージョン違いによるインストール確認結果>
 baseos-6e-installer-3.16.2-at.5 NG
 baseos-6e-installer-3.16.3-at.6 NG
 baseos-6e-installer-3.17.2-at.4 NG
 baseos-6e-installer-3.17.3-at.5 OK
 baseos-6e-installer-3.17.3-at.6 OK

2023年4月(baseos-6e-installer-3.17.3-at.5)のアップデートを境にインストールできない現象が発生しているように見えております。
2023年4月以前のバージョン(baseos-6e-installer-3.17.2-at.4)に対しては最新BaseOSのSDイメージのインストールが出来なく、以後のバージョン(baseos-6e-installer-3.17.3-at.5以降)では最新BaseOSのSDイメージでインストールが正常に出来る結果となっています。

フォーラムを含めて確認したのですが、この状況に関する情報が見当たらなく、この現象に対する解決策についてご教示をお願い致します。
納品されるA6EのBaseOSが異なっている状況は今後も普通に考えられるため、解決をしておきたいと考えています。

コメント

at_dominique.m…

2023年6月21日 15時23分

yasuhiro-hamadaさん

お世話になっています、
アットマークテクノのマルティネです。

> 弊社にて最新のBaseOSにアップデートして作成したSDイメージで、元のBaseOSが異なるA6Eへのインストールが出来ない現象が発生しています。

大変申し訳ございませんが、今の説明では二つのことを考えて、どちらを行っているのかを教えていただけたら調査できると思います。

① インストール先のバージョンによって失敗します
- 自分のインストーラーを abos-ctrl make-installer で作成します
- そのインストーラーを最近の BaseOS がインストールされている Armadillo にインストールすると成功しますが、古い BaseOS がインストールされている個体では失敗します。

② インストールディスクに入れるインストールするシステムのバージョンによって失敗します
- baseos-6e-installer の zip ファイルを取得して、SD カードに zip を書き込む
- SD カードを armadillo に接続して、そちらのバージョンのまま(「元の BaseOS」)で「abos-ctrl make-installer」を実行した際に「An installer system is already available on sd card. Use it」の質問に y を回答して、インストーラーに自分の rootfs をコピーする
- その SD カードをインストールしようとすると、インストールが失敗します。

それかまた違う手順でしたらすみませんがもう少し詳しく教えていただけますでしょうか。

また、make-installer を実行している場合にはその OS のバージョンを教えていただけたらと思います:

armadillo:~# cat /etc/atmark-release ; apk list --installed abos-base

最後に、インストールが失敗する際のコンソールの出力までご提供いただければ時間の節約になりますが、難しいでしたら言ってください。

よろしくお願いします。

yasuhiro-hamada

2023年6月23日 11時42分

アットマークテクノのマルティネさん

お世話になります。
ご質問について以下にコメント致します。

> 大変申し訳ございませんが、今の説明では二つのことを考えて、どちらを行っているのかを教えていただけたら調査できると思います。

①となります。

> また、make-installer を実行している場合にはその OS のバージョンを教えていただけたらと思います:

armadillo:~# cat /etc/atmark-release ; apk list --installed abos-base
3.17.3-at.6
WARNING: Ignoring https://download.atmark-techno.com/alpine/v3.17/atmark: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.17/main: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.17/community: No such file or directory
abos-base-1.18-r2 armv7 {abos-base} (MIT) [installed]

> 最後に、インストールが失敗する際のコンソールの出力までご提供いただければ時間の節約になりますが、難しいでしたら言ってください。

※baseos-6e-installer-3.17.2-at.4へのインストール時
U-Boot 2020.04-at12 (Feb 27 2023 - 14:04:00 +0900)

CPU: i.MX6ULL rev1.1 at 396 MHz
Model: Atmark Techno Armadillo-IoT Gateway A6E Board
DRAM: 512 MiB
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc1 is current device
flash target is MMC:1
Net:
Warning: ethernet@2188000 MAC addresses don't match:
Address in ROM is 00:11:0c:35:01:b2
Address in environment is 00:11:0c:35:00:c6
eth0: ethernet@2188000
Fastboot: Normal
Saving Environment to MMC... Writing to MMC(1)... OK
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
<停止した状態のままとなる>

ご教示よろしくお願い致します。

at_dominique.m…

2023年6月23日 15時20分

yasuhiro-hamadaさん

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

> ①となります。
> make-installer を 3.17.3-at.6 で実行
> ※baseos-6e-installer-3.17.2-at.4へのインストール時
> U-Boot 2020.04-at12 (Feb 27 2023 - 14:04:00 +0900)
> mmc1 is current device の後に停止した状態のままとなる

情報提供ありがとうございます、助かります。おそらく最新のインストーラーイメージの問題で Armadillo eMMC 側の u-boot に fallback しているのが原因です。

順番で説明します:
1/ 停止した状態で起動しないバグは、u-boot 2020.04-at12 にあった btrfs で圧縮されたファイルを場合によって読み取れない不具合があったためで、u-boot 2020.04-at14 で対応しました: https://armadillo.atmark-techno.com/news/20230427/software-update-aiota…
2/ SD カードの u-boot で起動できない場合は soc 内で eMMC の u-boot に切り替えても、「SD から起動したモード」で起動しますので正常の場合は SD の OS を起動します

本来なら SD カードに新しい u-boot を書き込んでいますので、対象機と関係なく起動できるはずです。

SD の u-boot から起動してないことを確認できましたので、これから修正して今月のインストーラーのアップデートでなおします。

リリースされたら、BaseOS の更新関係なく、再び make-installer を実行してイメージを新しくダウンロードしていただけたら解決されると思います。

貴重な情報を報告していただいてありがとうございます。

よろしくお願いします

at_dominique.m…

2023年6月23日 16時25分

マルティネです。

連続ですみません。

> SD の u-boot から起動してないことを確認できましたので、これから修正して今月のインストーラーのアップデートでなおします。
>
> リリースされたら、BaseOS の更新関係なく、再び make-installer を実行してイメージを新しくダウンロードしていただけたら解決されると思います。

すみません、嘘でした。ベースのイメージに正常に u-boot が書き込まれてますが、make-installer の際にパーティションを大きくするコマンドでこわしています。
この問題の修正に abos-base のアップデートが必要になりますが、手元で確認したい場合は以下のコマンドでパッチできます:

armadilo:~# sed -i -e 's/--zap-all/-d 1/' /usr/sbin/abos-ctrl
armadilo:~# persist_file /usr/sbin/abos-ctrl

で再び abos-ctrl make-installer を実行した時にイメージをダウンロードしなおすようにしてください。

大変お手数ですが、よろしくお願いします。

at_dominique.m…

2023年6月27日 11時14分

yasuhiro-hamadaさん、

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

度々すみません、もう少し確認してみたら前回伝えた修正では、確かに u-boot のイメージが故障になりませんが、パーティションがリサイズされずにコンテナのデーターを保存できない可能性があります。

最終の修正は以下のとおりです:

armadillo:~# vi /usr/sbin/abos-ctrl
# 一ヶ所目(installer_resize_and_mount_sd_root)
        info "Checking and growing installer main partition"
 
        # shellcheck disable=SC2086 # splitting $user_partition on purpose
        sgdisk --zap-all --new "1:$part_start:$part_end" -c 1:rootfs_0 \
                        "$@" "$output" \
                || error "resizing partitions failed"
# を以下の内容に変更
        info "Checking and growing installer main partition"
 
        sgdisk -G "$output" || error "partition table update failed"
        sgdisk -d 1 --new "1:$part_start:$part_end" -c 1:rootfs_0 \
                        "$@" "$output" \
                || error "resizing partitions failed"
 
# 二ヶ所目(installer_shrink_install_disk)、sed のとおりでいいです
        # resize the partition 
        sgdisk --zap-all --new "1:$part_start:$part_end" -c 1:rootfs_0 \
                "$output" >/dev/null 2>&1 \
                || error "resizing partition failed"
# を以下の内容に変更
        # resize the partition 
        sgdisk -d 1 --new "1:$part_start:$part_end" -c 1:rootfs_0 \
                "$output" >/dev/null 2>&1 \
                || error "resizing partition failed"

また、インストーラーイメージに a6e-gw-container をインストールするための swu が残っていて、そのままインストールされるはずです。
make-installer ですでにコンテナをコピーしていますので、不要な a6e-gw-container* ファイルを手動で削除してください。

明後日リリース予定の BaseOS にはそのコンテナを installer_swus/ ディレクトリに移動していて、make-installer コマンドで削除するようにしました。もうすぐですので、リリースまで待っていただいてもいいかと思います。

この度は確認不足でお手数をおかけして申し訳ございません。

よろしくお願いします。

yasuhiro-hamada

2023年6月28日 15時43分

マルティネさん
調査を頂き、ありがとうございます。

原因の方が明確となり安心致しました。
明後日リリースが予定されているBaseOSにて改めて確認をさせて頂きます。