Armadilloフォーラム

Qtアプリケーションの実機動作(Armadillo-IoT G4)について

kitamura-a

2022年7月21日 19時19分

Qtアプリケーションの実機動作の手順の質問です。

Armadillo-IoT G4(AGX4500-C00D0)にてQtで作成したGUIアプリケーションを動作させたいと考えています。

①転送、またはファイルを実機にインストールするやり方としてどんな方法がありますか。

・確認した内容
仮想環境で作成したファイルを、Armadillo-IoT G4本体に転送する方法についてSSHがあるようなので試したところ、
 仮想環境のターミナルにて
ssh atmark@192.168.100.113と入力したところ、パスワード入力後、
 Prmission denied, Please try again と表示されます。

 実機側接続のターミナルにて
 rc-update add sshd のコマンドをターミナルで入力したところ、
* rc-update: sshd already installed in runlevel `default'; skipping
というメッセージが出て、既に存在しているような表示が出ています。
 こちらが使えていない状態ですので、これを含め別の方法があるかも含め教えていただけると助かります。

②Armadillo-IoT G4にてQtアプリケーションを動かしたい場合、必要な設定、ファイルはありますか。
 (Armadillo-IoT G4本体にQtの実行ができる状態であるかが分かりません)

 実施した内容
 仮想環境でのクロスコンビルドは、https://armadillo.atmark-techno.com/forum/armadillo/10686 
 このリンク先の内容を実施しました。

お手数をおかけしますが、参考資料などありましたらよろしくお願いします。

コメント

at_dominique.m…

2022年7月22日 9時00分

kitamura-a さん

> ①転送、またはファイルを実機にインストールするやり方としてどんな方法がありますか。

運用では、swupdate を使った方がおすすめします。
swupdate を使うことで、A/B面という安全性でアップデートに失敗しても戻れる保証もありますので、一個のデバイスでも便利に使えたらと思います。

ドキュメンテーションはちょっとばらばらで分かりにくいですが、以下のページを参考にできればと思います
- 製品マニュアル (mkswuの参考書) https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
- 開発ガイド(swupdateの実行例) https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…
- ブログ記事 https://armadillo.atmark-techno.com/index.php/blog/15349/11131

個人的には、 ATDE に web server を起動させて 「swupdate -d '-u http:///file.swu'」 で便利に使っています。

もちろん scp や USB メモリによる転送も可能ですので、質問に答えさせていただきます。(順番を変えました)

>  実機側接続のターミナルにて
>  rc-update add sshd のコマンドをターミナルで入力したところ、
> * rc-update: sshd already installed in runlevel `default'; skipping
> というメッセージが出て、既に存在しているような表示が出ています。
>  こちらが使えていない状態ですので、これを含め別の方法があるかも含め教えていただけると助かります。

これは armadillo で実行したコマンドですね。デフォルト状態では sshd が無効になってるはずですが、何かの手順ですでに有効にしましたか?

> 仮想環境で作成したファイルを、Armadillo-IoT G4本体に転送する方法についてSSHがあるようなので試したところ、
>  仮想環境のターミナルにて
> ssh atmark@192.168.100.113と入力したところ、パスワード入力後、
>  Prmission denied, Please try again と表示されます。

192.168.100.113 は armadillo のIPアドレスでよろしいですね?
atmark ユーザーはデフォルトでロックされていますので、パスワードを設定していただけましたか?シリアルコンソールで同じパスワードでログインできるかを確認していただけますか?
また、/root/.ssh/authorized_keys に自分の公開鍵 ($HOME/.ssh/id_*.pub )をコピーしていただければ、 root ユーザーにも直接に ssh で接続できます。
再起動に/rootのファイルも消えますので、persist_file も実行してください。

逆に、armadillo から ATDE への ssh も可能ですが、仮想マシンのネットワーク設定によってポート転送か firewall の設定が必要です。

> ②Armadillo-IoT G4にてQtアプリケーションを動かしたい場合、必要な設定、ファイルはありますか。
>  (Armadillo-IoT G4本体にQtの実行ができる状態であるかが分かりません)

Armadillo Base OS で直接に Qt のアプリケーションを動かせませんが、コンテナを起動してそこから自分のアプリケーションを起動できます。
Qt のアプリケーションではないですが、そこも開発ガイドを参考にできると思います。基本的な開発の流れはこちらです: https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…

よろしくお願いします。

ご回答ありがとうございます。

・製品マニュアル (mkswuの参考書)をやってみましたが、添付のようなメッセージが出ており、この状態がどういうものか分れば教えてください。
 環境はVirtualBoxでADTE9です。

・コンテナを起動させて、そこからQtのアプリを実行するところまでは確認できました。
 Armadilloにコンテナイメージをネットワーク接続で持ってきて、起動し、Qtパッケージをインストール。ADTEからwgetで転送し実行。
 (最初に質問させていただきました、SSHは一旦保留にしました。)
 このような手順の場合、1度動作させた名前のコンテナを再度動かして、実行ファイルを転送してアプリを試す…ということはできますか。
 (swupdateというのがやはり1番良いのでしょうか)

 よろしくお願いします。
 

 

ファイル ファイルの説明
WS000249.JPG

at_dominique.m…

2022年7月25日 8時57分

kitamura-aさん

> ・製品マニュアル (mkswuの参考書)をやってみましたが、添付のようなメッセージが出ており、この状態がどういうものか分れば教えてください。

すみません、こちらの文書が分かりにくかったですね。
「mkswu .../initial_setup.desc other_desc_files」は初期 swu に他の機能を組み込みたい場合の再構成コマンドで、「other_desc_files」の部分は「他の.descファイルのファイル名」の意味で書いていました。
「other_desc_file」というファイルが存在しないのでエラーしますが、これで特に問題ありません。

社内に言い方の改善をできないかと相談してみます。「other_desc_files」も日本語に翻訳したら少しは分かりやすくなると思います。

組み込み例としては製品マニュアルの「9.7.2. SWUイメージの作成」にある「mkswu initial_setup.desc enable_sshd.desc」を参考にできますが、今回は無理に合体させなくてもいいです。マニュアル通りに一度 initial_setup.swu をインストールしてから、他の独立している swu もインストールできるようになります。(初期の initial_setup.swu で mkswu --init の際に作成した鍵を Armadillo に登録します)

> ・コンテナを起動させて、そこからQtのアプリを実行するところまでは確認できました。
>  Armadilloにコンテナイメージをネットワーク接続で持ってきて、起動し、Qtパッケージをインストール。ADTEからwgetで転送し実行。
>  (最初に質問させていただきました、SSHは一旦保留にしました。)
>  このような手順の場合、1度動作させた名前のコンテナを再度動かして、実行ファイルを転送してアプリを試す…ということはできますか。
>  (swupdateというのがやはり1番良いのでしょうか)

そうですね、アプリケーションをwgetで取得できましたらボリュームマウントは使えると思います。

1. コンテナの準備。「abos-ctrl podman-storage --disk」で開発モードのコンテナイメージをeMMCに保存する設定に切り替えてから、コンテナを取得してQtパッケージをインストールします。
アプリケーションの起動準備ができたら「podman commit [コンテナ名] [新しいイメージ名]」でコンテナを保存してください。

2. コンテナの起動ファイル。そこはどうしても必要というわけではありませんが、ボリュームの設定に便利です。

armadillo:~# cd /etc/atmark/containers/
armadillo:~# vi app.conf
set_image [イメージ名]
 
# gpu のドライバなど
add_volumes /opt/firmware:/opt/firmware:ro
 
# 自分のアプリケーションをインストールするディレクトリ
# 以下の設定では、Armadillo の /var/app/rollback/volumes/app/
# を /opt/app にマウントされます
add_volumes app:/opt/app
 
# とりあえず全デバイスにアクセスを許可します
# テストできたら /etc/atmark/containers/at-debian-image.conf.exampleや
# マニュアルを参考にして最低限の権利に絞れます。
add_args --privileged
 
# 自分のアプリケーションを実行するコマンド。
# 最初は sleep で、podman exec [コンテナ名] で試すことができます。
set_command sleep infinity

3.ファイルを保存してコンテナを起動します

armadillo:/etc/atmark/containers# persist_file -v app.conf
'/etc/atmark/containers/app.conf' -> '/mnt/etc/atmark/containers/app.conf'
armadillo:/etc/atmark/containers# podman_start app
Starting 'app'
e3705f380d21af9fed0f8e39bf8b3270a8167df1ccf00bca321c6576cdfde2a3

4. これで wget でアプリケーションを更新できます。コンテナ内では /opt/app、 armadillo では /var/app/rollback/volumes/app に自分のアプリケーションをインストールしたら直接に eMMC に書いてあるので、普通に保存されますし容量もあります。
アプリケーションを更新したらまた podman_start でコンテナを再起動させるか、Armadilloを再起動させることで新しいバージョンを試せます。

何か分からないことありましたらまた聞いてください。

よろしくお願いします。

回答ありがとうございます。

●mkswuについて
->マニュアル通りに一度 initial_setup.swu をインストールしてから、他の独立している swu もインストールできるようになります。
->(初期の initial_setup.swu で mkswu --init の際に作成した鍵を Armadillo に登録します)

マニュアルに記載されている証明書や鍵...といったメッセージ(①~⑨の内容)は出てきていませんが設定的に問題ないのでしょうか。
実行した結果とmkswu内のファイル状態、参考にしているマニュアルを添付しますので参照してください。

●コンテナについて
"1. コンテナの準備。" について下記のコマンドでエラーが出ますが、この手順を踏む前に必要な手順やコマンドがあるのでしょうか。
armadillo:~# abos-ctrl podman-storage --disk
-ash: abos-ctrl: not found

よろしくお願いします。

ファイル ファイルの説明
WS000262.JPG initial_setup.swuの結果
WS000263.JPG 参考にしているマニュアル

at_dominique.m…

2022年7月27日 10時54分

kitamura-aさん

> ●mkswuについて
> ->マニュアル通りに一度 initial_setup.swu をインストールしてから、他の独立している swu もインストールできるようになります。
> ->(初期の initial_setup.swu で mkswu --init の際に作成した鍵を Armadillo に登録します)
>
> マニュアルに記載されている証明書や鍵...といったメッセージ(①~⑨の内容)は出てきていませんが設定的に問題ないのでしょうか。
> 実行した結果とmkswu内のファイル状態、参考にしているマニュアルを添付しますので参照してください。

はい、これで問題ないです。一度「mkswu --init」を実行したらプロンプトの返事を覚えてしまったので、二度目以降の実行はそのまま聞きません。
(最初から作り直したい場合には ~/mkswu/initial_setup.desc、または ~/mkswu ディレクトリすべてを削除すればできますが、鍵を一度インストールしたら新しい鍵を作成しても簡単に使えないのでおすすめしません)

> ●コンテナについて
> "1. コンテナの準備。" について下記のコマンドでエラーが出ますが、この手順を踏む前に必要な手順やコマンドがあるのでしょうか。
> armadillo:~# abos-ctrl podman-storage --disk
> -ash: abos-ctrl: not found

abos-ctrl podman-storage は 4月末にリリースされた 3.15.4-at.6 で搭載されましたので、恐らくArmadilloをまだ更新していないと思われます。

お手数ですが、アップデートすることをおすすめします。
最新のアップデートはこちらです: https://armadillo.atmark-techno.com/news/20220628/update-aiotg4
以下のコマンドで latest のバージョンをアップデートできます。(「swupdate triggering reboot!」のエラーメッセージはただのinfoなので無視していいです、古いswupdateバージョンの制限でしたのでこれからはもうエラーとして表示されません):

swupdate -d '-u https://download.atmark-techno.com/armadillo-iot-g4/image/baseos-x2-latest.swu'

# BaseOS の更新の際に /etc/swupdate_preserve_files に乗っていないファイルが保存されてないので、ご注意ください。
# ファイルをなくしたら、アップデート後に「abos-ctrl mount-old」でアップデート前のパティションをマウントしてコピーできます。

今すぐのワークアラウンドとして、「podman_switch_storage --disk」で同じ結果になりますが、また他のコマンドが失敗するかもしれませんので更新をお願いします。

よろしくお願いします。