ブログ

Armadillo Base OS:Armadilloで動作確認しながらVScodeでコンテナ開発を行う方法

at_shinya.matsumoto
2023年11月27日 16時55分

本ブログはVScodeでアプリケーション開発を行う際に、どのパッケージが必要か確認しながら
進めたり、動作が問題無いかなどトライ&エラーで確認したい方向けの実施方法となります。

実施手順

本手順ではシェルスクリプトを実行する標準プロジェクト(※)を使用します。
※LEDを点滅させるだけのコンテナでプロジェクト作成時にデモアプリが動作する様になっています。

手順
1.プロジェクト作成
2.コンテナのビルド~SWUインストール
3.Armadilloのモード切替(RAM⇒eMMC)
4.コンテナ内でデバッグ
5.Armadilloのモード切替(eMMC⇒RAM)
6.VScodeに反映


・以下、ATDE環境を構築済みかつ、VScodeにArmadillo Base OS Development Environmentを
 インストール済みとして説明します。未実施の方は製品マニュアルを参照下さい。
・また、Armadillo内に使用しないコンテナがある場合には事前にコンテナを削除しておきます。
 製品マニュアルのGenerate Container Clear Swuの説明を参照下さい。

1.プロジェクト作成

VScodeを立ち上げ、下記手順で新規にプロジェクトを作成します。
プロジェクト名は任意ですが、本ブログでは test_pj とします。
※製品(A600,A6E,G4/X2)は適宜使用する製品に合わせて選択下さい。

※プロジェクト名を決めると、右下に作成したプロジェクトを①別ウインドウで開くか、
 ②同じウインドウで開くかを聞かれますが、どちらでも問題ありません。
 元のプロジェクトを残しておく場合は①、そうでない場合は②を選ぶと良いと思います。

2.コンテナのビルド~SWUインストール

本ブログではコンテナ内のアプリを変更しない為、プロジェクト内のファイルは編集せずに
進めますが、実際にアプリを開発する時は test_pj 内の各種ファイルを適宜編集します。

下記順に選択し、Generate release swu の右の△をクリックしてコンテナイメージをビルドし、
swuファイル(アップデート用ファイル)を作成します。

作成したSWUファイル(test_pj/release.swu)をインストールします。
実施方法は下記から選択します。実施方法は製品マニュアルを参照下さい。
1.ABOS Webを立ち上げて「SWUインストール」から test_pj/release.swu をインストール
2.USBメモリ/SDカードのTOP階層に release.swu を置いてArmadilloに挿入(自動インストール)

3.Armadilloのモード切替(RAM⇒eMMC)

SWUファイルのインストールが完了し、Armadilloがリブートした状態になりましたら、コンソールから
Armadilloにログインします。

Armadilloは一部を除き、OverlayFS(読み取り専用)になっている為、Armadillo内でコンテナを編集する
場合はコンテナの動作モードを変更します。

コンテナの保存先をRAM⇒eMMCに変更
(電源OFFでも引き継ぐ為、戻し忘れにご注意下さい)
[Armadillo]# podman stop -a
[Armadillo]# abos-ctrl podman-storage --disk

この後コンテナ内に入ってデバッグする為、コンテナのコンフィグファイルを編集
します。以下はデフォルトのシェルプロジェクトから修正した場合の例です。

[Armadillo]# vi /etc/atmark/containers/test_pj.conf
set_image localhost/{{PROJECT}}:latest

add_volumes {{PROJECT}}:/vol_app
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data

add_volumes /sys:/sys

#スクリプト実行をコメント化
#set_command bash /vol_app/src/main.sh

#デバッグ用に追記
add_args -it
set_autostart no
set_command /bin/bash

最後に、RAM上に作成した /etc/atmark/containers/test_pj.conf をeMMCに保存します。

[Armadillo]# persist_file /etc/atmark/containers/test_pj.conf

4.コンテナ内でデバッグ

コンテナ内に入ってデバッグします。

コンテナイメージからコンテナを作成&起動する場合(初回のみ or コンテナを上書き)
[Armadillo]# podman_start test_pj

コンテナに入る
[Armadillo]# podman attach test_pj
[container]#  ←プロンプトが変わる(左記は例)

《補足》
作成済みのコンテナを起動~コンテナに入る場合(コンテナ作成済みの場合)
[Armadillo]# podman start -ai test_pj
[container]#  ←プロンプトが変わる(左記は例)

ここで必要と思われるパッケージをインストールしたり、実際にデバイスを動かして
正常に動作するか確認します。インストールが必要なパッケージはVScodeのpackages.txt に
追記していくと記載漏れがないと思います。

5.Armadilloのモード切替(eMMC⇒RAM)

動作確認完了後、コンテナから出る場合は下記コマンドを実行します。

コンテナから出る
[container]# exit

デバッグで使用したコンテナをeMMCから消す場合
[Armadillo]# podman rm test_pj

保存先をeMMC⇒RAMに変更
[Armadillo]# abos-ctrl podman-storage --tmpfs

6.VScodeに反映

デバッグで確認した結果をVScodeの方に反映します。
その後は Generate release swu を実行してArmadilloにインストールし、動作確認が
問題無ければ完了となります。