ブログ

Armadillo Base OS:Debianからの移行について

at_shinya.matsumoto
2023年4月27日 13時27分

本ブログはDebianで開発されていた方で、Armadillo Base OS製品に移行する際の開発の違いについて
ご説明します。本ブログでは概略のみの説明となりますので、詳細な説明やコマンド等は製品マニュアルを
ご参照下さい。

Armadillo Base OSについてはこちらのご説明を参照下さい。
また、Armadillo Base OSのハンズオンセミナーを開催中です。詳細についてはこちらもご参照下さい。

DebianとABOSの概略開発手順について

DebianとABOSの概略開発手順(違い)は下記の通りです。
四角の大きさは開発に掛かる工数をイメージしています。
※ユーザー固有の内容については省略



上記の様にアップデート機能やリカバリ対策、セキュリティ対策、インストールディスク作成などの機能を
Armadillo Base OSに標準搭載している為、アプリケーション(コンテナ)開発に注力頂く事が出来ます。

以下にそれぞれの項目についてご説明します。

1.Ethernet/LTE/Wifi/BT等のネットワーク設定

本作業はArmadillo Base OS上で行います。
設定方法は従来のDebianと同様にnmcliコマンドで設定出来ます。

2.コンテナの作成

本作業はArmadillo Base OSで行います。

作業内容

・コンテナイメージ及びコンテナをeMMCへ保存する設定に変更
 RAM上に保存する設定となっている為、開発時は下記コマンドで切り替えます。
 eMMCに保存:abos-ctrl podman-storage --disk (電源OFFでも引き継ぐ)

・使用コンテナイメージの決定
 使用するコンテナイメージを選定します。DebianやUbuntuなどDocker Hubから選択できます。
 使用可能なアーキテクチャは下記の通りです。
  ・Arm64v8:Armadillo-IoT G4、Armadillo-X2
  ・Armv7 :Armadillo-IoT A6E
 コンテナイメージを探す方法は下記のブログを参考にしてください。
 参考ブログ:コンテナイメージの取得方法

・コンフィグファイル作成
 コンフィグファイルはpoman runまたはdocker runコマンドに相当するコンテナ作成用ファイルです。
 コンフィグファイル名の.confを除いたファイル名がコンテナ名となります。(abc.conf → コンテナ名:abc)
 コンフィグファイル書式については製品マニュアルまたはこちらのブログを参考に作成下さい。
 参考ブログ:コンテナの自動起動とconfファイルの説明(改訂版)

・コンテナ作成
 コンテナを新規に作成する場合 podman_start コンテナ名> を1度だけ実行します。
 コンフィグファイルの内容でコンテナが作成されます。
 コンテナに入るにはpodman attachコマンドを使用します。
 コンテナ内に入るとプロンプトが変化します。

[armadillo]# podman_start <コンテナ名>     //コンテナ作成&起動
Starting '<コンテナ名>'
0a68053d4a3d8a5f1105aaf73d4aa170862956a0f28734bae33e1477022dac19
[armadillo]# podman attach <コンテナ名>     //コンテナに入る
[container]#                              //コンテナ内

3.アプリケーションの作成

本作業はコンテナ内で行います。

コンテナ内で行う作業は従来の開発方法と同じです。
コンテナイメージは必要最低限のパッケージしかインストールされていない為、必要なパッケージを
適宜インストールします。

既に必要なパッケージリストやファイルが揃っている場合はDockerfileを使用する事で、一括で
コンテナイメージを作ることが出来ます。以下のブログを参考にしてください。
参考URL:Dockerfileを用いたコンテナイメージ作成方法

開発が完了したら、コンテナから出てコンテナをコンテナイメージとして保存します。
実運用ではこのコンテナイメージを使用します。

[container]# exit                       // コンテナから出る
[armadillo]# podman commit <コンテナ名> <保存するコンテナイメージ名>:<タグ名>  // コンテナイメージ名とタグ名は任意

全てのコンテナの開発が完了後、 abos-ctrl podman-storage --tmpfs コマンドを実行し、
コンテナをRAM上に保存する設定に戻しておきます。(製品化時はこの設定を使用)
イメージの処理を聞かれた場合は"C(デフォルト)"を選択します。

《注意》
 podman_start コンテナ名> コマンドはコンテナを新規作成するコマンドの為、作成済みの
 コンテナで開発を再開する場合は、podman start コンテナ名> でコンテナを起動します。
 podman_start コンテナ名> は同名のコンテナがある場合は上書きされます。

4.ソフトウェアアップデートの設定

本作業はArmadillo Base OSで行います。

ソフトウェアアップデートはローカル/リモートで実行可能な機能を標準搭載しています。
また、電源断や通信切断などで不完全なアップデートにより起動できなくなった場合にも
自動で前の状態にロールバックして起動する機能も搭載しています。


実施する事

・ATDEでinitial_setup.swuを作成し、Armadilloに署名を書き込む
・リモートアップデート設定を行う(コマンドラインまたはswuファイルで設定可能)
 参考ブログ:①Hawkbitサーバーを用いてソフトウェアアップデートする方法
       ②簡易Webサーバーでソフトウェアをリモートアップデートする方法

《注意》
 出荷状態のArmadilloは誰でもアップデートで書き込めるようになっている為、実運用では
 第三者が改竄出来ない様に最初にATDEでinitial_setup.swuを作成してインストールする
 必要があります。これによりArmadilloに固有の署名が書き込まれ、署名が一致する場合のみ
 アップデートを実行出来る様になります。

 Armadillo起動後に下記WARNINGが出ている状態では製品化しない様にご注意下さい。
 (下記WARNINGは上記のinitial_setup.swuをインストール出来ていないメッセージになります)

WARNING: swupdate onetime public certificate is present, anyone can access this device
WARNING: Please install initial_setup.swu (from mkswu --init),
WARNING: or remove the first certificate from /etc/swupdate.pem

5.セキュリティ設定

本作業はArmadillo Base OSで行います。

セキュリティ対策としてセキュリティマニュアルを公開しております。
マニュアルを参考に必要な対策を実施下さい。
(現状はG4のみ公開しておりますが、A6E,X2も順次追加予定)

6.インストールディスク作成

インストールディスクとは、製品化する際に一括でOSやアプリケーションなどをROMに書き込む
メディアの事を指します。

当社従来製品では当社で提供しておりますATDE環境でインストールディスクイメージを作成し、
SDカードに書き込むようにしておりましたが、Armadillo Base OSではコマンドで現在のArmadilloの
状態をインストールディスクにする事が可能になっております。


個別にIPアドレスを割り振りたい等、個別設定を必要とする場合はインストールディスクに
パーティションを設けて処理を追加する事も可能です。