ブログ

Armadillo Base OS:アプリケーションの作り方

at_shinya.matsumoto
2024年3月1日 14時30分

Armadillo Base OS搭載製品でVScodeを使用してアプリケーションを作成する方法を紹介します。
ここではシェルプロジェクトを使用しますが、他のプロジェクトも同様に開発が可能です。

作成手順

1.プロジェクト作成
2.SSH接続設定を行う(任意)
3.アプリケーションコンテナ作成
4.コンテナのビルド
5.アップデートでSWUファイル書き込み
6.デバッグ実行(任意)
7.リリース版SWUファイル作成
8.SSHの無効化設定
9.参考情報(量産時のsshの鍵の作成方法)

1.プロジェクト作成

VScodeを立ち上げて新規プロジェクトを作成します。ここでは下記手順でexample1というプロジェクトを
作成します。以下の図ではseminarディレクトリにプロジェクトを作成していますが、任意のディレクトリで
問題ありません。

プロジェクトを作成するとLEDが点滅するだけの簡単なプロジェクトが作成されますので、各ファイルを
修正してアプリケーションを作成します。

プロジェクトで使用する各ディレクトリ/ファイルの主な役割は下記の通りです。

コンテナやファイルの配置場所(シェルプロジェクトの場合)

《補足》
 上記app内のvolumesというディレクトリはeMMCに直接データ保存が可能な領域です。コンテナ内の
 データはRAM上にのみ保存され電源OFFやコンテナの停止/再起動で消去される為、保存が必要な場合は
 本ディレクトリを使用します。
 ・/var/app/volumes  ・・・ロールバックに非対応(アプリのバージョンに依存しないものを配置)
  デフォルト設定は /var/app/volumes/プロジェクト名 をコンテナ内の /vol_data でマウント

 ・/var/app/rollback/volumes  ・・・ロールバックに対応(アプリのバージョンに依存するものを配置)
  デフォルト設定は /var/app/rollback/volumes/プロジェクト名 をコンテナ内の /vol_app でマウント

2.SSH接続設定を行う(任意)

SSH接続はVScodeでデバッグを行う場合のみ実施します。デバッグをしない場合はここはスキップして
構いません。SSH接続の設定を行うには以下の3つの手順を実行します。

1.ATDEでsshの鍵を生成(ATDE1アカウントで1回実施)

VScodeで下記手順でSetup environmentを実行します。
実行中にSSHのパスワードを聞かれますので、任意のパスワードを設定します。
※本手順は1度実行して~./sshに生成される鍵を消さない限り、以後実施する必要はありません。

2.VScodeのプロジェクト内のssh_configのIPを書き換え

ATDEのネットワーク設定がブリッジの設定の場合(MONITORにArmadilloが見える場合)は、下記のボタンを
押すことでssh_configを簡単に書き換える事が出来ます。下記の様に手入力でも可能です。
ブリッジではない場合は手入力でssh_configを当該のArmadilloのIPアドレスで書き換えます。

ボタンで書き換え(ブリッジの場合のみ可能)

手入力で書き換え

3.アプリ作成後に Generate development swu を実行してArmadilloにインストール

本作業は後ほど実行しますのでここでは何もしません。

3.アプリケーションコンテナ作成

コンテナを作成する際に下記ファイルを修正します。(順不同)

app.conf

 app.confにはアクセス権限やコンテナ内での権限、環境変数の設定などを行う事が可能です。
 詳細は製品マニュアルを参照下さい。

 以下はシェルプロジェクトのデフォルト設定

#Dockerfileでビルドするイメージを指定(変更不要)
set_image localhost/{{PROJECT}}:latest

#コンテナ外とのファイル・ディレクトリ共有
add_volumes {{PROJECT}}:/vol_app    //アプリのスクリプトや実行ファイルを格納するディレクトリ(変更不要)
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data //アプリのデータを格納するディレクトリ(変更不要)
add_volumes /sys:/sys	//今回のアプリでLEDを制御する為に必要

#コンテナで実行するコマンド(変更不要)
set_command bash /vol_app/src/main.sh

《補足》
 ・/vol_data と /vol_app は前述したeMMCに直接保存可能な領域になります。
 ・add_volumes {{PROJECT}}:/vol_app とは /var/app/rollback/volumes/プロジェクト名 のディレクトリに
  コンテナ内の /vol_app でマウントする事と同じです。

Dockerfile

Dockerfileはコンテナイメージのビルドを行う為の書式ファイルです。
コンテナ内でビルドしたりコンテナ内でコマンドを実行しておきたい場合などに指定が可能ですが、
特に指定がない場合は本ファイルを編集する必要はありません。

※インストールしたいパッケージやコンテナ内にファイルコピーする場合は以下で設定します。

packages.txt

packages.txtにはコンテナ内にインストールしたいパッケージ名を記載すると、Dockerfileをビルドする際に
一括でapt-get installによってインストールされます。(デフォルトのDebianコンテナの場合)
よって、pip installなどは本ファイルでは対応していない為、Dockerfileの方に記述します。

Dockerfileへの記載例)
 RUN pip3 install numpy

resourcesディレクトリ

コンテナ内にコピーしたいファイルがあれば本ディレクトリ下の作成しておくことで、コンテナに
コピーされます。

例)
/etc/setup/setup.sh をコンテナ内にコピーしたい場合は以下の様に配置
resources/etc/setup/setup.sh
※スクリプトなどの実行権限が必要なものは予め与えておく必要があります。

main.sh(シェルプロジェクトの場合)

main.shにコンテナ内で動作するスクリプトを記載します。
デフォルトではLEDを点滅させるスクリプトが記載されていますので、適宜変更下さい。

4.コンテナのビルド

デバッグを行う場合は下記手順に沿って Generate development swu でコンテナをビルドします。
デバッグ不要な場合は Generate release swu でビルドします。
※Generate development swu にはArmadillo Base OSのsshdを有効化する処理が含まれています。

5.アップデートでSWUファイル書き込み

こちらの手順と同様にABOS Web経由でSWUファイルをインストールします。
ビルドしたSWUファイルは作成したプロジェクトのディレクトリ下にあります。

また、ABOS Webのパスワード設定後は下記ボタンからでもSWUファイルを指定してインストール出来ます。

6.デバッグ実行(任意)

SWUファイルをインストールするとArmadilloが自動で再起動し、作成したアプリケーションが立ち上がります。
コンテナからの標準出力を設定した場合は、下記手順で標準出力結果を確認出来ます。
※初回はsshのパスワードを聞かれますので、2.SSH接続設定を行う(任意)で設定したパスワードを
 入力してください。

1.App stop on Armadillo でコンテナを停止
2.App run on Armadillo でコンテナを起動

App run on Armadillo を実行するとVScodeのコンソールにログが表示されるようになります。

以降、以下の図の様にコンテナの修正(Dockerfile,packages.txt,resourcesの変更)が無い限りは
App run on ArmadilloでArmadilloに修正内容が反映されます。(例:app.conf,main.shの修正)
コンテナの修正の場合は Generate development swu で再度ビルドしてインストールします。

7.リリース版SWUファイル作成

デバッグが完了したら、Generate release swu でsshd有効化処理の入っていないswuファイルを作成します。
ただし、Generate release swu と Generate development swu の違いはsshd有効化処理のみの為、
コンテナに変更がない場合は改めてArmadilloにインストールする必要はありません。

8.SSHの無効化設定

デバッグでsshdを有効化していますが、この後の作業でインストールディスクを作る過程で一度
sshdの鍵を消す必要がありますので、デバッグ完了時点で一度削除しておきます。
製品化の際にsshdを必要とする場合には別途手順を紹介します。

sshdの無効化・鍵の削除

sshdサービスを停止
[Armadillo]# rc-service sshd stop

sshdをサービスから消去
[Armadillo]# rc-update delete  sshd

実行スクリプトを消去
[Armadillo]# persist_file -d /etc/runlevels/default/sshd

鍵の消去
[Armadillo]# persist_file -d /etc/ssh/*key*

以上でアプリケーション開発は完了です。

9.参考情報(量産時のsshの鍵の作成方法)

インストールディスクで書き込む場合(当社BTO/ROM書き込みサービスも同様)
量産時にSSHの鍵を生成する方法(インストールディスク編)

swupdateでROM書き込みを行う場合
量産時にSSHの鍵を生成する方法(スクリプト実行編)
開発したArmadilloをインストールディスクを使わずに複製する


開発手順・TIPS集のTOPに戻る