k.sato
2024年8月26日 17時08分
佐藤と申します。
お世話になっております。
2038年問題に対応するためにalpineコンテナで動作させています。
alpineコンテナ内のアプリ自体は2038/01/19 12:14:07_JST以降も動作しているようなのですが、
コンテナ内からREST APIを使用しての設定変更できず、確認したらabos-webが落ちています。
abos-webの不具合でしょうか?
対応していただけますか?
以上、よろしくお願い致します。
コメント
k.sato
マルティネ様
佐藤です。
回答ありがとうございます。
> 申し訳ございません、rust の不具合です:
> https://github.com/rust-lang/libc/issues/3223
>
> この issue は古いですが、修正の作業は進んでいます(最新: https://github.com/rust-lang/libc/pull/3791 )
> この修正が入った際に次の alpine バージョンにも入りますので、来年のどこかに ABOS Web も修正される可能性が高いと思います。
>
> 大変お手数ですが、ネットワークに接続している機器として定期的な更新と強く推奨していますので、そのようにお願いします。
定期的な更新について質問します。
コンテナについてはATDEのvscodeプロジェクト上から.swuを生成してアップデートすれば設定は引き継いだままなのですが、
ホスト側の設定変更したファイル等を残したままABOSの更新は行えるのでしょうか?
https://armadillo.atmark-techno.com/resources/software/armadillo-640/ba…
SWUイメージファイルをabos-webから更新という形ではクリアされますか?
以上、よろしくお願い致します。
at_dominique.m…
佐藤さん、
マルティネです。
> 定期的な更新について質問します。
> コンテナについてはATDEのvscodeプロジェクト上から.swuを生成してアップデートすれば設定は引き継いだままなのですが、
> ホスト側の設定変更したファイル等を残したままABOSの更新は行えるのでしょうか?
ホスト側の設定は /etc/swupdate_preserve_files の設定どおりに引き継がれます。
デフォルト状態では、コンテナの設定や /etc/local.d のよく編集されるファイルは保存されていますが、必要でしたら persist_file -p か -P で他のファイル・ディレクトリを追加できます。
ATDE の vscode プロジェクトでインストールしている場合は何もしなくてもちゃんと残ります。
万が一、アップデートを試した後に何かのファイルがなくなった場合は:
- abos-ctrl mount-old
で /target ディレクトリにアップデート前の状態の armadillo をマウントできますので、そこからファイルをコピーできます
- abos-ctrl rollback --allow-downgrade --reboot
でアップデート前の状態に一度戻ってから swupdate_preserve_files を試してもう一度アップデートを試してください
> https://armadillo.atmark-techno.com/resources/software/armadillo-640/ba…
> SWUイメージファイルをabos-webから更新という形ではクリアされますか?
はい、このファイルを abos-web の SWU 画面に入れてアップデートされます。
よろしくお願いします
k.sato
マルティネ様
佐藤です。
昨日、Armadillo-600の2024年8月 製品アップデートが来ていたためアップデートしてみました。
https://armadillo.atmark-techno.com/news/20240828/software-update-a600
swupdate -d '-u https://armadillo.atmark-techno.com/files/downloads /armadillo-640/image/baseos-600-3.20.2-at.2.swu'
上記コマンドを使用してABOSのアップデートを行ったのですが、
uart1のコンソール出力が添付ファイルのところで止まってしまいます。
sshから接続してArmadilloにログインは出来ました。
Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <http://wiki.alpinelinux.org/>. Please note this system is READ-ONLY with a read-write overlayfs, after updating password make sure to save new password with # persist_file /etc/shadow You can change this message by editing /etc/motd. Last update on Thu Aug 29 09:01:32 JST 2024, updated: base_os: 3.20.2-at.1 -> 3.20.2-at.2 WARNING: upgrade_available wasn't either unset, 0, 1 or 2? armadillo:~$ su root Password: /home/atmark # podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES /home/atmark #
コンテナも消えているのでしょうか?
ABOSアップデートをする前に何か変更しておかなければならないことがあったのでしょうか?
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
abosアップデート後の起動ログ.txt |
martinetd
佐藤さん、
> 上記コマンドを使用してABOSのアップデートを行ったのですが、
> uart1のコンソール出力が添付ファイルのところで止まってしまいます。
>
> コンテナも消えているのでしょうか?
>
> ABOSアップデートをする前に何か変更しておかなければならないことがあったのでしょうか?
大変申し訳ございません。何も必要ないはずです。
こちらで更新してみて問題なかったので、いくつか確認させてください。
> WARNING: upgrade_available wasn't either unset, 0, 1 or 2?
まず、このメッセージは気になります。
1/ 「fw_printenv」を実行していただければ、環境変数を読めないというエラーが出力されると思いますが、あってますか?コンソールの出力もそれが原因だと思います。
2/ 「cat /etc/fw_env.config」で変数管理のコンフィグを表示していただけますか?また、「ls /boot/uboot_env.d」でデフォルトの変数を用意しているかの確認もお願いします。環境変数を変更した場合は変更をそちらに登録する必要がありますが、デフォルトではデフォルトの値(00_defaults)があるはずで、今の変数読み取れない状態でそれ以前の問題になっていますね…
3/ 「lsblk | grep rootfs」で現在起動中の面も確認したいです。
4/ コンテナについては、 ls /etc/atmark/containers でコンフィグの有無の確認、または podman image list でコンテナイメージの存在の確認をお願いします
5/ 念のため、「abos-ctrl mount-old」で旧面をマウントして、 「ls /target/etc/atmark/containers」 と 「podman --storage-opt additionalimagestore=/target/var/lib/containers/storage_readonly/ image list」も確認してみましょう。そのデーターに問題なければ復帰はまだ可能です。
よろしくお願いします
k.sato
マルティネ様
佐藤です。
> 1/ 「fw_printenv」を実行していただければ、環境変数を読めないというエラーが出力されると思いますが、あってますか?コンソールの出力もそれが原因だと思います。
/home/atmark # fw_printenv Environment OK, copy 0 altbootcmd=log rec none warning "" 0 altbootcmd "Counted $bootlimit consecutive unfinished boots"; run rollback apply_fit_overlays=for overlay in ${fdt_overlays}; do echo "Appending overlay ${overlay}"; fitconf="${fitconf}#${overlay}"; done; setenv fdt_overlays apply_overlays=for overlay in ${fdt_overlays}; do if load mmc ${mmcdev}:${mmcpart} ${overlay_addr} /boot/${overlay}; then echo "Applying fdt overlay: ${overlay}"; fdt apply ${overlay_addr}; else echo "Warning: fdt overlay ${overlay} not found!"; fi; done; setenv fdt_overlays baudrate=115200 boot_fit=no bootcmd=mmc dev ${mmcdev}; sleep 0.5; if mmc rescan; then if run loadbootscript; then run bootscript; else run loadimage && run mmcboot; fi; run rollback; fi; bootdelay=0 bootlimit=3 bootscript=echo Running bootscript from mmc ...; source; log rec none warning "" 0 bootscript "boot script did not boot" console=ttymxc0,115200 ethaddr=00:11:0c:2a:62:99 fastboot_dev=mmc0 fdt_addr=0x83500000 fdt_file=boot/armadillo-640.dtb fdt_size=0x20000 fdtautodetect=yes fdtcontroladdr=9ef4acc0 fitconf_base=#armadillo image=boot/uImage load_overlays_list=load mmc ${mmcdev}:${mmcpart} ${overlay_addr} ${overlays_list} && env import -t ${overlay_addr} ${filesize} loadaddr=0x80800000 loadbootscript=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script}; loadfdt=if load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}; then echo "Loading fdt ${fdt_file}" && fdt addr ${fdt_addr} && fdt resize ${fdt_size}; else log rec none warning "" 0 loadfdt "Could not load fdt file!"; false; fi loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} mmcargs=setenv bootargs console=${console} root=${mmcroot} ${optargs} mmcautodetect=yes mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fit} = yes; then run apply_fit_overlays; run load_overlays_list && run apply_fit_overlays; bootm ${loadaddr}"${fitconf_base}${fitconf}"; log rec none warning "" 0 mmcboot "Could not boot fit image"; elif run loadfdt; then run apply_overlays; run load_overlays_list && run apply_overlays; bootm ${loadaddr} - ${fdt_addr}; log rec none warning "" 0 mmcboot "Could not boot image"; fi mmcdev=0 mmcpart=1 mmcroot=/dev/mmcblk0p1 rootwait ro optargs=quiet overlay_addr=0x83520000 overlays_list=boot/overlays.txt rollback=setenv bootcount; if test "${upgrade_available}" -gt 0 && run setfallback; then log rec none warning "" 0 rollback "Rolling back to mmcblk${mmcdev}p${fallback}"; if test "${mmcdev}" = 0; then run rollback_mmc; else run rollback_other; fi; elif test "${upgrade_available}" -gt 0; then log rec none warning "" 0 rollback "Cannot compute rollback target from mmcpart ${mmcpart}"; else log rec none warning "" 0 rollback "Rollback target is not ready, refusing to rollback."; fi; saveenv; reset rollback_mmc=saveenv && mmc partconf 0 0 ${fallback} 0 && reset rollback_other=setenv mmcpart "${fallback}"; setenv mmcroot "mmcblk${mmcdev}p${fallback} rootwait ro"; saveenv; reset script=boot/boot.scr serial#=009C01480097 setfallback=setexpr fallback 3 - ${mmcpart}; test "${fallback}" = 1 || test "${fallback}" = 2 stderr=mxc_serial stdin=mxc_serial stdout=mxc_serial timeoffset=32400 upgrade_available=0 /home/atmark #
> 2/ 「cat /etc/fw_env.config」で変数管理のコンフィグを表示していただけますか?また、「ls /boot/uboot_env.d」でデフォルトの変数を用意しているかの確認もお願いします。環境変数を変更した場合は変更をそちらに登録する必要がありますが、デフォルトではデフォルトの値(00_defaults)があるはずで、今の変数読み取れない状態でそれ以前の問題になっていますね…
/home/atmark # cat /etc/fw_env.config /dev/mmcblk0boot0 0x1fe000 0x2000 /dev/mmcblk0boot0 0x1fa000 0x2000 /home/atmark # ls /boot/uboot_env.d 00_defaults README /home/atmark #
> 3/ 「lsblk | grep rootfs」で現在起動中の面も確認したいです。
/home/atmark # lsblk | grep rootfs tqmmcblk0p1 179:1 0 300M 0 part /live/rootfs /home/atmark #
> 4/ コンテナについては、 ls /etc/atmark/containers でコンフィグの有無の確認、または podman image list でコンテナイメージの存在の確認をお願いします
/home/atmark # ls /etc/atmark/containers README at-debian-image-armv7.conf.example alpine.conf.example my_project.conf /home/atmark # podman image list REPOSITORY TAG IMAGE ID CREATED SIZE R/O localhost/my_project latest 714b711dc105 44 hours ago 306 MB true /home/atmark #
> 5/ 念のため、「abos-ctrl mount-old」で旧面をマウントして、 「ls /target/etc/atmark/containers」 と 「podman --storage-opt additionalimagestore=/target/var/lib/containers/storage_readonly/ image list」も確認してみましょう。そのデーターに問題なければ復帰はまだ可能です。
/home/atmark # abos-ctrl mount-old Mounted /dev/mmcblk0p2 to /target successfully. Unmount it with 'abos-ctrl umount /target' when done /home/atmark # ls /target/etc/atmark/containers README at-debian-image-armv7.conf.example alpine.conf.example my_project.conf /home/atmark # podman --storage-opt additionalimagestore=/target/var/lib/containers/storage_readonly/ image list REPOSITORY TAG IMAGE ID CREATED SIZE R/O localhost/my_project latest 714b711dc105 44 hours ago 306 MB true /home/atmark #
各項目について回答します。
コンテナは大丈夫そうですかね?
以上、よろしくお願い致します。
at_makoto.sato
k.sato
佐藤です。
返信ありがとうございます。
> > uart1のコンソール出力が添付ファイルのところで止まってしまいます。
> これについてですが、アップデート前は正常に出力していましたでしょうか。
> at-dtwebを使われていると思いますが、at-dtwebでUART1を設定していますでしょうか。
at-dtwebではuart1、uart2、uart5、ecspi1を設定し、アップデート前までは正常に出力されていました。
/home/atmark # ls -l /boot/ total 6376 -rw-r--r-- 1 root root 140 Aug 26 15:37 armadillo-610-at-dtweb.dtbo -rw-r--r-- 1 root root 2074 Aug 26 15:37 armadillo-610-extboard-eva-grove.dtbo -rw-r--r-- 1 root root 1602 Aug 26 15:37 armadillo-610-extboard-eva-usdhc2.dtbo -rw-r--r-- 1 root root 5870 Aug 26 15:37 armadillo-610-extboard-eva.dtbo -rw-r--r-- 1 root root 37239 Aug 26 15:37 armadillo-610.dtb -rw-r--r-- 1 root root 3865 Aug 26 15:37 armadillo-640-at-dtweb.dtbo -rw-r--r-- 1 root root 1727 Aug 26 15:37 armadillo-640-con9-rtc.dtbo -rw-r--r-- 1 root root 2596 Aug 26 15:37 armadillo-640-con9-thread-lwb5plus.dtbo -rwxr-xr-x 1 root root 705 Aug 7 14:23 armadillo-640-customize.dtbo -rw-r--r-- 1 root root 4413 Aug 26 15:37 armadillo-640-lcd70ext-l00.dtbo -rw-r--r-- 1 root root 38353 Aug 26 15:37 armadillo-640.dtb -rw-r--r-- 1 root root 40027 Aug 26 15:37 armadillo-iotg-a6e.dtb lrwxrwxrwx 1 root root 17 Aug 29 09:36 armadillo.dtb -> armadillo-640.dtb -rw------- 1 root root 70 Aug 7 14:24 overlays.txt -rw-r--r-- 1 root root 6381320 Aug 26 15:37 uImage drwxr-xr-x 2 root root 1024 Aug 29 09:37 uboot_env.d /home/atmark #
armadillo-640-customize.dtbo
はuart2とuart5をRS485の送受信切替ピンを動作させるように改造したもので、
armadillo-640-at-dtweb.dtbo
がat-dtwebで生成して動いていたものだと思います。
しかしarmadillo-640-at-dtweb.dtbo
のファイル日時をみるとabosアップデートしたバージョンの日付になっているのでしょうか?
# v12 list: timezone settings/twin agent enable state /etc/localtime /etc/zoneinfo /etc/runlevels/default/armadillo-twin-agentd /boot/armadillo-640-at-dtweb.dtbo
swupdate_preserve_files
を添付します。
/boot/armadillo-640-at-dtweb.dtbo
ということはat-dtwebの変更は引き継がれるのですよね?
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
swupdate_preserve_files.txt | abosアップデート後にArmadillo-640から取得 |
at_dominique.m…
佐藤さん、
確認ありがとうございます。
> しかしarmadillo-640-at-dtweb.dtbo
のファイル日時をみるとabosアップデートしたバージョンの日付になっているのでしょうか?
まさにそのとおりです。
at-dtweb の dtbo をパッケージから外していたはずですが、何かの誤りでパッケージに入ってしまってデフォルトの値が戻ってしまいました。
確認不足で申し訳ございません。
原因が分かりましたので、修正を案内させてください:
# 正常に動作できていたB面をマウントします armadillo:~# abos-ctrl mount-old Mounted /dev/mmcblk0p1 to /target successfully. Unmount it with 'abos-ctrl umount /target' when done # B面の at-dtweb.dtbo を確認します。日付が古い物になっているはずです。 # 以下の様にパッケージの日付でしたらお手数ですが ATDE から再び転送してください。 # ~/mkswu/at-dtweb-Armadillo-640/armadillo-640-at-dtweb.dtbo にあるはずです。 armadillo:~# ls -l /target/boot/armadillo-640-at-dtweb.dtbo -rw-r--r-- 1 root root 3865 Aug 26 15:37 /target/boot/armadillo-640-at-dtweb.dtbo # ファイルをコピーして永続化してから再起動します armadillo:~# cp /target/boot/armadillo-640-at-dtweb.dtbo /boot armadillo:~# persist_file -v /boot/armadillo-640-at-dtweb.dtbo '/mnt/boot/armadillo-640-at-dtweb.dtbo' -> '/target/boot/armadillo-640-at-dtweb.dtbo' armadillo:~# reboot
これからですが、at-dtweb のファイルをパッケージから排除しましたのでこれ以降のアップデートで上書きされなくなります。
再び抜けないように何かのテストも追加します。
別の armadillo に今のバージョンを更新したい場合は、/etc/swupdate_preserve_files に「POST /boot/armadillo-640-at-dtweb.dtbo」を追加していただければパッケージにファイルが入っても現在のバージョンが優先されますのでそういう方法で対応できますが、この個体だけであれば追加対応は特に不要です。
コンテナの方は、コンフィグもイメージもちゃんとコピーされたようですので、dtb の設定でコンテナが正常に動いてなかっただけの可能性があると思います。
dtbo を修正した後に再起動した際にコンテナがまだ動いてない場合は「podman ps -a」、「podman logs my_project」の確認からお願いします。
お手数をおかけして申し訳ございませんが引き続きよろしくお願いします
k.sato
佐藤です。
修正方法ありがとうございます。
> 原因が分かりましたので、修正を案内させてください:
> # 正常に動作できていたB面をマウントします > armadillo:~# abos-ctrl mount-old > Mounted /dev/mmcblk0p1 to /target successfully. > Unmount it with 'abos-ctrl umount /target' when done > # B面の at-dtweb.dtbo を確認します。日付が古い物になっているはずです。 > # 以下の様にパッケージの日付でしたらお手数ですが ATDE から再び転送してください。 > # ~/mkswu/at-dtweb-Armadillo-640/armadillo-640-at-dtweb.dtbo にあるはずです。 > armadillo:~# ls -l /target/boot/armadillo-640-at-dtweb.dtbo > -rw-r--r-- 1 root root 3865 Aug 26 15:37 /target/boot/armadillo-640-at-dtweb.dtbo > # ファイルをコピーして永続化してから再起動します > armadillo:~# cp /target/boot/armadillo-640-at-dtweb.dtbo /boot > armadillo:~# persist_file -v /boot/armadillo-640-at-dtweb.dtbo > '/mnt/boot/armadillo-640-at-dtweb.dtbo' -> '/target/boot/armadillo-640-at-dtweb.dtbo' > armadillo:~# reboot
教えていただいた方法でuart1のコンソール出力が正常になりました。
コンテナも無事起動しています。
ありがとうございました。
at_dominique.m…
2024年8月26日 18時03分
佐藤さん
お世話になっています、
マルティネです。
> 2038年問題に対応するためにalpineコンテナで動作させています。
> alpineコンテナ内のアプリ自体は2038/01/19 12:14:07_JST以降も動作しているようなのですが、
> コンテナ内からREST APIを使用しての設定変更できず、確認したらabos-webが落ちています。
> abos-webの不具合でしょうか?
> 対応していただけますか?
申し訳ございません、rust の不具合です:
https://github.com/rust-lang/libc/issues/3223
この issue は古いですが、修正の作業は進んでいます(最新: https://github.com/rust-lang/libc/pull/3791 )
この修正が入った際に次の alpine バージョンにも入りますので、来年のどこかに ABOS Web も修正される可能性が高いと思います。
大変お手数ですが、ネットワークに接続している機器として定期的な更新と強く推奨していますので、そのようにお願いします。
よろしくお願いします。