hiroki.nakatani
2025年3月3日 17時12分
==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.21.3-at.1
カーネルバージョン:2020.4-at.25
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
開発機を久々に起動した際、以下の/dev/ttyACM0が認識しない問題が再発しました。
https://armadillo.atmark-techno.com/forum/armadillo/22585
/etc/atmark/containers/node-red.confが初期化されたのが直接原因のようです。
ABOSWebにてアップデート状況を確認したところ、本日起動時に自動アップデートされており、これが関係しているのではと懸念しております。
/etc/atmark/containers/node-red.confを初期化されないようにする方法はないでしょうか。
ファイル | ファイルの説明 |
---|---|
スクリーンショット 2025-03-03 171140.png |
コメント
hiroki.nakatani
ご回答いただきありがとうございます。
> その代わり、/dev/ttyACM0 等のデバイス設定を別のファイルで自由にできるように対応できればと思いますので、そういう改善を考えています。
> お手数ですが案内できるまでもう少しお待ちください。
→承知しました。
それでは、改善されるまで自動アップデートを止めておきたいのですが、どこを設定すればよいかご存知でしたら教えていただけないでしょうか。
5月から長期稼働予定ですので、自動アップデートにて
/etc/atmark/containers/node-red.conf
が初期化されるとNode-Redの処理が異常終了してしまい機能しなくなるため、しばらく現行バージョンのまま運用できればと思います。
at_dominique.m…
hiroki.nakataniさん
> それでは、改善されるまで自動アップデートを止めておきたいのですが、
曖昧な回答ですみません、準備自体にそれほど時間かからないと思いますので今月のアップデートまでに対策を準備して試していただければと思っていました。
> どこを設定すればよいかご存知でしたら教えていただけないでしょうか。
自動アップデートは以下のファイルで設定されています
* /etc/swupdate.watch
に定期的に更新する URL が記載されています(Base OS と node-red のコンテナは別々で更新しています)
* /etc/conf.d/swupdate-url
にアップデートの頻度 (schedule=...部分)があります
* /etc/runlevels/default/swupdate-url
のリンクでサービスを有効していますので、そのファイルを削除すれば実行されなくなります
> 5月から長期稼働予定ですので、自動アップデートにて
> /etc/atmark/containers/node-red.conf
> が初期化されるとNode-Redの処理が異常終了してしまい機能しなくなるため、しばらく現行バージョンのまま運用できればと思います。
了解しました。
それでしたら対策をすぐに準備しても一回ぐらいしか確認できませんので、気持ちがわかります。
準備できたらまた連絡しますので、それでも試したければぜひお願いします。
よろしくお願いします。
hiroki.nakatani
at_reika.yamazaki
お世話になっております。山崎です。
この度はご迷惑をおかけして申し訳ありません。
今月末のリリースで、Node-RED コンテナに追加の設定ができる仕組みを導入する予定です。
これにより、Node-RED コンテナの設定ファイルは以下のようになります。
■ /etc/atmark/containers/node-red.conf
Node-RED コンテナの設定ファイル
自動アップデートの対象になる
■ /etc/atmark/containers/node-red.conf.d/xxx.conf
Node-RED コンテナに追加設定が可能な conf ファイル
自動アップデートされない
現在、コンテナ設定ファイルが自動アップデートされて、"add_devices /dev/ttyACM0" が消えてしまい、ご迷惑をおかけしていることをお詫びいたします。
こちらの仕組みでは、/etc/atmark/containers/node-red.conf.d/ ディレクトリ配下に作成された xxx.conf の内容を Node-RED コンテナ起動時にコンテナ設定に追加した状態で Node-RED コンテナを起動することが可能になります。
xxx.conf の中に "add_devices /dev/ttyACM0" と記載しておくことで Node-RED コンテナイメージ・コンテナ設定ファイルは自動アップデートされ、xxx.conf に記載した "add_devices /dev/ttyACM0" は維持されるようになります。
以下は例として /etc/atmark/containers/node-red.conf.d/addition.conf を作成した場合の内容の記載例です。
add_devices /dev/ttyACM0
リリースは 3/26 を予定しております。
お手数をおかけして申し訳ありませんが、それまでに上記のファイルをご用意していただけますと幸いです。
何かご不明な点がございましたらお尋ねください。
以上、どうぞよろしくお願いいたします。
hiroki.nakatani
山崎様
ご連絡ありがとうございます。
3/26までに対処が必要な旨承知しました。
対処内容は以下の通りでよかったでしょうか。
/etc/atmark/containers/node-red.conf.d/XXX.conf準備以外に全く何も対応しなくてよいのか気にしております。
①これまで/etc/atmark/containers/node-red.conf内へ私が追記した個別設定を
/etc/atmark/containers/node-red.conf.d/XXX.confに記載しておく。
※XXX部分は任意の文字列でOK。その他の設定は不要。
②3/26に自動アップデートされるので、その後にIoTゲートウェイを再起動した後、
/etc/atmark/containers/node-red.confの個別設定が消え
/etc/atmark/containers/node-red.conf.d/XXX.confが残った状態で、正しく個別設定が機能していることを確認する。
※3/26アップデートにてコンテナ再起動時に/etc/atmark/containers/node-red.conf.d/XXX.confの設定も自動読み込みされる。
hiroki.nakatani
at_reika.yamazaki
お世話になっております。山崎です。
>3/26までに対処が必要な旨承知しました。
>対処内容は以下の通りでよかったでしょうか。
>/etc/atmark/containers/node-red.conf.d/XXX.conf準備以外に全く何も対応しなくてよいのか気にしております。
ご対応恐れ入ります。
はい。/etc/atmark/containers/node-red.conf.d/XXX.conf を作成しただければ、こちらに書いた内容は保持されるので作成をお願いします。
またこちらのファイルについて "persist_file -rv /etc/atmark/containers/node-red.conf.d/XXX.conf" で永続化してください。
>①これまで/etc/atmark/containers/node-red.conf内へ私が追記した個別設定を
> /etc/atmark/containers/node-red.conf.d/XXX.confに記載しておく。
> ※XXX部分は任意の文字列でOK。その他の設定は不要。
はい。上記の作業をしていただければと思います。
XXX についても任意の文字列で大丈夫です。
/etc/atmark/containers/node-red.conf 内に追記した個別設定を /etc/atmark/containers/node-red.conf.d/XXX.conf に記載した後、永続化してください。
>②3/26に自動アップデートされるので、その後にIoTゲートウェイを再起動した後、
> /etc/atmark/containers/node-red.confの個別設定が消え
> /etc/atmark/containers/node-red.conf.d/XXX.confが残った状態で、正しく個別設定が機能していることを確認する。
> ※3/26アップデートにてコンテナ再起動時に/etc/atmark/containers/node-red.conf.d/XXX.confの設定も自動読み込みされる。
はい。アップデート後に上記の確認をしていただけますと幸いです。
またアップデート後に /etc/atmark/containers/node-red.conf.d/addition.conf.example という記載例のファイルが追加になります。
こちらは記載例として弊社で管理します。Node-RED コンテナの動作には影響ありません。
>/etc/atmark/containers/node-red.conf.d/XXX.conf変更後に
>
>persist_file -rv /etc/atmark/containers/node-red.conf
>podman_start node-red
>は必要でしょうか。
上記は不要です。
アップデート前までは、お客様で変更された node-red.conf のままご使用ください。
追加した /etc/atmark/containers/node-red.conf.d/XXX.conf について、永続化していただければ大丈夫です。
ご心配をおかけして、申し訳ありません。
以上、どうぞよろしくお願いいたします。
hiroki.nakatani
お世話になっております。中谷です。
ご回答ありがとうございます。
今回、以下の2エントリを追加しました。
add_devices /dev/ttyACM0
add_armadillo_env
コマンド内容に相違ないかご確認いただけますと幸いです。
■コマンド
mkdir /etc/atmark/containers/node-red.conf.d
vi /etc/atmark/containers/node-red.conf.d/addition.conf
cat /etc/atmark/containers/node-red.conf.d/addition.conf
persist_file -rv /etc/atmark/containers/node-red.conf.d/addition.conf
■結果
armadillo:~# cat /etc/atmark/containers/node-red.conf.d/addition.conf
add_devices /dev/ttyACM0
add_armadillo_env
armadillo:~#
armadillo:~# persist_file -rv /etc/atmark/containers/node-red.conf.d/addition.co
nf
created directory: '/target//etc/atmark/containers/node-red.conf.d'
'/mnt/etc/atmark/containers/node-red.conf.d/addition.conf' -> '/target/etc/atmark/containers/node-red.conf.d/addition.conf'
armadillo:~#
at_reika.yamazaki
hiroki.nakatani
本件ですが、その後の状況報告になります。
ABOS WebでSWUインストール画面を確認すると以下の通りでした。
▼最新アップデート
2025-03-27 06:12:38 に以下のバージョンが更新されました:
コンポーネント 旧バージョン 新バージョン
extra_os.node-red 1.2 1.2.1
▼現在の SWU で管理されているバージョン
コンポーネント バージョン
base_os 3.21.3-at.3
boot 2020.4-at.25
extra_os.initial_setup 4
extra_os.node-red 1.2.1
make_installer_usb 11
▼最新のインストールログ
Mar 27 06:13:49 armadillo user.info swupdate: START Software Update started !
Mar 27 06:13:49 armadillo user.info swupdate: RUN [install_single_image] : Installing pre_script
Mar 27 06:13:50 armadillo user.info swupdate: RUN [read_lines_notify] : Skipping install of component extra_os.node-red 1.2.1 (has 1.2.1)
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : ----------------------------------------------
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : /!\ Nothing to do -- failing on purpose to save bandwidth
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : ----------------------------------------------
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : Command failed: sh $1 /var/tmp/swupdate-url.gaNiKM/scripts_pre.sh
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : Error streaming zst.scripts_pre.sh
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : Writing into SWUpdate IPC stream failed.
Mar 27 06:13:51 armadillo user.err swupdate: FAILURE ERROR : Channel operation returned error (23): 'Failed writing received data to disk/application'
Mar 27 06:13:51 armadillo user.err swupdate: FATAL_FAILURE Image invalid or corrupted. Not installing ...
Mar 27 06:13:51 armadillo user.info swupdate: IDLE Waiting for requests...
また、コンフィグの結果は以下の通りです。
armadillo:~# cat /etc/atmark/containers/node-red.conf
image="node-red:1.2.1"
set_image "$image"
add_devices /dev/gpiochip*
add_devices /dev/i2c-*
add_devices /dev/ttymxc*
add_hotplugs input ttyUSB video4linux
add_volumes /sys/class/leds/:/sys/class/leds/
add_volumes /sys/devices/platform/gpio-leds/leds:/sys/devices/platform/gpio-leds/leds/
add_volumes /sys/class/thermal/thermal_zone0/:/sys/class/thermal/thermal_zone0/
add_volumes /sys/bus/iio/devices/:/sys/bus/iio/devices/
add_volumes /etc/localtime:/etc/localtime:ro
add_volumes /var/app/rollback/volumes/node-red/root:/root
add_volumes /var/app/rollback/volumes/node-red/log:/log
add_volumes /var/app/rollback/volumes/node-red/cert:/cert
add_volumes /dev/shm:/dev/shm
add_args --hooks-dir=/etc/containers/aiot_gw_container_hooks.d
add_args --env=AT_SERIAL_NUMBER=$(device-info -s)
add_args --env=EX_SSS_BOOT_SSS_PORT=/dev/i2c-1:0x48
add_args --env=OPENSSL_CONF=/etc/plug-and-trust/openssl11_sss_se050.cnf
add_ports 1880:1880
set_command node /usr/lib/node_modules/node-red/red.js
armadillo:~#
armadillo:~# cat /etc/atmark/containers/node-red.conf.d/addition.conf
add_ports 1880:1880
add_devices /dev/ttyACM0
set_command sh -c "rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && node --openssl-shared-config /usr/lib/node_modules/node-red/red.js"
add_armadillo_env
add_args --env=AUTH="Authorization:Bearer [APIキー情報]"
この状況下で、Node-Redを移動し、Web画面を確認したところ
Operation not permitted, cannot open /dev/ttyACM0
のエラーが発生するようになりました。
これは想定通りの結果でしょうか。
hiroki.nakatani
at_dominique.m…
hiroki.nakataniさん
お世話になっています、
マルティネです。
> この状況下で、Node-Redを移動し、Web画面を確認したところ
> Operation not permitted, cannot open /dev/ttyACM0
> のエラーが発生するようになりました。
申し訳ございません。podman_start のアップデート(abos-base 2.16)を準備していましたが、確認漏れでリリースしたイメージに入りませんでした…
そのため、 /etc/atmark/containers/*.conf.d/*.conf を処理する対応は Armadillo Base OS 3.21.3-at.3 に入ってません。
本当にすみませんでした。
(abosweb の変数の件も同じ原因ですね)
ひとまずパッケージだけを公開しましたので、「persist_file -a upgrade
」で永続化する形にパッケージを更新すると abos-ctrl 2.16 がインストールされるようになるはずで、「podman_start -a
」でコンテナが正常に起動するはずです。
大変お手数ですが swu をリビルドする予定はないので、swu 形で必要でしたら開発ツールの「build-rootfs」でビルドしていただく形で対応していただければと思います。
> /etc/doas.d/abos_web_customize.conf
> もファイルが消えてしまいました。
そちらについては不思議ですね。
(ひとまずの手当として、まだ2つ目の swu をインストールしてなければ「abos-ctrl mount-old」で /target/etc/doas.d に残っているかもしれません。)
別のフォーラムで「persist_file -rp
」で保存されたとのことですが、/etc/swupdate_preserve_files の内容を確認していただけますでしょうか。
persist_file コマンドに -v
も指定すると swupdate_preserve_files の更新も表示されますので、安心かもしれません。
よろしくおねがいします
hiroki.nakatani
お世話になっております。
> 申し訳ございません。podman_start のアップデート(abos-base 2.16)を準備していましたが、確認漏れでリリースしたイメージに入りませんでした…
> そのため、 /etc/atmark/containers/*.conf.d/*.conf を処理する対応は Armadillo Base OS 3.21.3-at.3 に入ってません。
> 本当にすみませんでした。
> (abosweb の変数の件も同じ原因ですね)
>
> ひとまずパッケージだけを公開しましたので、「persist_file -a upgrade
」で永続化する形にパッケージを更新すると abos-ctrl 2.16 がインストールされるようになるはずで、「podman_start -a
」でコンテナが正常に起動するはずです。
→そうなんですね。。以下の対応でよかったでしょうか。
また、この状態でイメージ複製し、量産機に展開すれば、次回以降のアップデートでは同様の事象は回避されるとの理解でよかったでしょうか。
armadillo:~# persist_file -a upgrade
fetch https://download.atmark-techno.com/alpine/v3.21/atmark/armv7/APKINDEX.t…
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/armv7/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/armv7/APKINDEX.ta…
(1/2) Upgrading abos-base (2.15-r0 -> 2.16-r0)
Executing abos-base-2.16-r0.post-upgrade
(2/2) Upgrading abos-base-catatonit (2.15-r0 -> 2.16-r0)
Executing busybox-1.37.0-r12.trigger
Executing abos-base-2.16-r0.trigger
Executing eudev-3.2.14-r5.trigger
OK: 141 MiB in 191 packages
Install succeeded, but might not work in the running system
Please reboot if installed program does not work
armadillo:~# podman stop node-red
node-red
armadillo:~# persist_file -a upgrade
OK: 141 MiB in 191 packages
Install succeeded, but might not work in the running system
Please reboot if installed program does not work
armadillo:~# podman start -a
Error: start requires at least one argument
armadillo:~# podman start -a node-red
27 Mar 08:44:53 - [info]
Welcome to Node-RED
===================
27 Mar 08:44:53 - [info] Node-RED version: v4.0.2
27 Mar 08:44:53 - [info] Node.js version: v20.19.0
27 Mar 08:44:53 - [info] Linux 5.10.235-0-at arm LE
27 Mar 08:45:00 - [info] Loading palette nodes
また、AUTH変数は未だにコンテナに渡せていないようです。
root@65b05d8ad9da:~# echo $AUTH
at_dominique.m…
マルティネです。
> →そうなんですね。。以下の対応でよかったでしょうか。
> また、この状態でイメージ複製し、量産機に展開すれば、次回以降のアップデートでは同様の事象は回避されるとの理解でよかったでしょうか。
はい、パッケージはもう公開しましたので古いバージョンに戻ることはありません。
persist_file -aで更新した個体で量産用のイメージを作ると正しいバージョンがインストールされますし、今後のアップデートでも戻りません。
> armadillo:~# podman start -a node-red
分かりにくい作りになってすみませんが、「podman start」(空白)では古い変数のままにコンテナを再起動するだけです。
「podman_start」(-a か node-red のどちらでも)ですと新しいコンフィグが適用されます。
そのため、AUTHが反映されてないと思います。
(再起動でも適用されますが、不要なはずです)
よろしくおねがいします
hiroki.nakatani
今朝確認したところ、コンテナへのアクセスやNode-REDへのアクセスもできなくなりました。
困っております。
以下のコンテナログが出力されていました。
コンテナログ: node-red
node: OpenSSL configuration error:
C0ABEEB6:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:../deps/openssl/openssl/crypto/dso/dso_dlfcn.c:118:filename(/dev/null/e4sss.so): /dev/null/e4sss.so: cannot open shared object file: Not a directory
node: OpenSSL configuration error:
C03BFAB6:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:../deps/openssl/openssl/crypto/dso/dso_dlfcn.c:118:filename(/dev/null/e4sss.so): /dev/null/e4sss.so: cannot open shared object file: Not a directory
node: OpenSSL configuration error:
C0EBF0B6:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:../deps/openssl/openssl/crypto/dso/dso_dlfcn.c:118:filename(/dev/null/e4sss.so): /dev/null/e4sss.so: cannot open shared object file: Not a directory
node: OpenSSL configuration error:
C02BF5B6:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:../deps/openssl/openssl/crypto/dso/dso_dlfcn.c:118:filename(/dev/null/e4sss.so): /dev/null/e4sss.so: cannot open shared object file: Not a directory
node: OpenSSL configuration error:
hiroki.nakatani
CLIで実行したところ、以下の内容となっておりました。
armadillo:~# podman_start node-red
warning: previously set command is overwritten. The following command will NOT be executed:
warning: sh -c 'rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && node --openssl-shared-config /usr/lib/node_modules/node-red/red.js'
設定は以下の通りです。
armadillo:~$ cat /etc/atmark/containers/node-red.conf
image="node-red:1.2.1"
set_image "$image"
add_devices /dev/gpiochip*
add_devices /dev/i2c-*
add_devices /dev/ttymxc*
add_hotplugs input ttyUSB video4linux
add_volumes /sys/class/leds/:/sys/class/leds/
add_volumes /sys/devices/platform/gpio-leds/leds:/sys/devices/platform/gpio-leds/leds/
add_volumes /sys/class/thermal/thermal_zone0/:/sys/class/thermal/thermal_zone0/
add_volumes /sys/bus/iio/devices/:/sys/bus/iio/devices/
add_volumes /etc/localtime:/etc/localtime:ro
add_volumes /var/app/rollback/volumes/node-red/root:/root
add_volumes /var/app/rollback/volumes/node-red/log:/log
add_volumes /var/app/rollback/volumes/node-red/cert:/cert
add_volumes /dev/shm:/dev/shm
add_args --hooks-dir=/etc/containers/aiot_gw_container_hooks.d
add_args --env=AT_SERIAL_NUMBER=$(device-info -s)
add_args --env=EX_SSS_BOOT_SSS_PORT=/dev/i2c-1:0x48
add_args --env=OPENSSL_CONF=/etc/plug-and-trust/openssl11_sss_se050.cnf
add_ports 1880:1880
set_command sh -c "rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && node --openssl-shared-config /usr/lib/node_modules/node-red/red.js"
armadillo:~$ cat /etc/atmark/containers/node-red.conf.d/addition.conf
add_ports 1880:1880
add_devices /dev/ttyACM0
set_command sh -c "rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && node --openssl-shared-config /usr/lib/node_modules/node-red/red.js"
add_armadillo_env
add_args --env=AUTH="Authorization: Bearer 60377bae-c712-4486-87ce-49787894069c"
at_reika.yamazaki
お世話になっております。山崎です。
貼っていただいた node-red.conf を確認したところ、set_command は以下でお使いだと思います。
set_command sh -c "rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && node --openssl-shared-config /usr/lib/node_modules/node-red/red.js"
最新の Node-RED コンテナ 1.2.1 をご使用の場合はデフォルトの set_command は以下になっていると思います。
set_command node /usr/lib/node_modules/node-red/red.js
上記のように 「--openssl-shared-config」 を削除してみるとどうなるでしょうか?
また、タイムゾーンを設定しているようですが、こちら以下のように環境変数でも対応可能です。
add_args --env=TZ=Asia/Tokyo
もし、「--openssl-shared-config」 を削除してうまくいくようであればデフォルトの node-red.conf を使用して、node-red.conf.d/addition.conf に 「add_args --env=TZ=Asia/Tokyo」 を追加する使い方が良さそうに思います。
お手数をおかけして申し訳ありませんが、上記試していただけますと幸いです。
以上、どうぞよろしくお願いいたします。
hiroki.nakatani
お世話になっております。
ありがとうございます。いただいた内容で設定変更し、コンテナ再起動しましたが起動できませんでした。
armadillo:~# cat /etc/atmark/containers/node-red.conf.d/addition.conf
add_ports 1880:1880
add_devices /dev/ttyACM0
add_armadillo_env
add_args --env=AUTH="Authorization: Bearer 60377bae-c712-4486-87ce-49787894069c"
add_args --env=TZ=Asia/Tokyo
armadillo:~# podman stop node-red
node-red
armadillo:~# podman start -a node-red
node: OpenSSL configuration error:
C0BBFAB6:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:../deps/openssl/openssl/crypto/dso/dso_dlfcn.c:118:filename(/dev/null/e4sss.so): /dev/null/e4sss.so: cannot open shared object file: Not a directory
hiroki.nakatani
at_reika.yamazaki
at_dominique.m…
2025年3月5日 16時07分
hiroki.nakatani さん
お世話になっています、
マルティネです。
返事が遅くなってすみません。
> ABOSWebにてアップデート状況を確認したところ、本日起動時に自動アップデートされており、これが関係しているのではと懸念しております。
そのとおりです。
現在の仕組みでは node-red コンテナのアップデートにコンフィグファイルも含まれていて、アップデート時に上書きされてしまいます。
> /etc/atmark/containers/node-red.confを初期化されないようにする方法はないでしょうか。
アップデートの都合で node-red.conf の更新も必要になる可能性がありますので、できれば更新を許す形で対応したいと思います
(例えば、新しいバージョンでファイルの管理が変わって適合性のためにボリュームを追加するなどは考えれます)
その代わり、/dev/ttyACM0 等のデバイス設定を別のファイルで自由にできるように対応できればと思いますので、そういう改善を考えています。
お手数ですが案内できるまでもう少しお待ちください。
よろしくお願いします。