量産の進め方の概略図を図4.1「Armadillo 量産時の概略図」に示します。
お客様の製品仕様や製造工程の要件によってはこの例とは違った工程順となる場合や、工程の追加・削除がある可能性があります。
量産モデルを発注後、お客様に納品されるまでにリードタイムが発生します。
開発セットや少量の量産モデル購入の場合、アットマークテクノや代理店在庫によって、短期間で納品できることもあります。
しかし、まとまった数量の量産モデルの場合、納品までにお時間をいただくことがあります。
新規に製品を量産・出荷する場合はリードタイムを考慮したスケジューリングをお願いします。
また、リピート製造をする場合でも、欠品を起こさないよう適切な在庫の確保をお願いいたします。
リードタイムは状況・タイミングによって異なりますので、都度、弊社営業、ご利用の販売代理店にお問い合わせください。
4.1.2. Armaidllo 納品後の製造・量産作業
お客様が Armadillo を納品後に次に示すようなキッティング作業、組み立て、検査を実施し出荷を行います。
ソフトウェア書き込み
-
Armadillo Base OS やアプリケーションコンテナイメージの書き込み
-
設定ファイルの書き込み
別部品の組み立て
-
SD カード/ SIM カード/ RTC バックアップ電池等の接続
-
拡張基板接続やセンサー・外部機器の接続
-
お客様専用筐体への組み込み
検査
-
Armadillo の受け入れ検査
-
組み立て後の通電電検・機能検査
-
目視検査
-
梱包作業
-
出荷作業
有償の BTO サービスを利用することで、これらの作業の一部をアットマークテクノへ委託・実施済みの状態で Armadillo を納品することも可能です。
費用はいただきますがお客様による工程立ち上げ、場所の確保、作業者の教育、品質管理等のトータルコストを考えると委託した方が安く済むケースが多いです。
また、 BTO サービスではお受けできないようなキッティング、検査、作業については、実施可能な業者をご紹介する等、個別の対応をすることで解決できる場合もございます。
詳しくは弊社担当の営業、またはご利用の販売代理店にご相談ください。
量産時に必要な手順は最終製品によって異なりますが、開発したソフトウェアをArmadilloに書き込む手順は必ず実施することになります。
Armadillo Base OS 搭載製品において、量産時に任意のソフトウェアを書き込む際には、以下の2つの手法のどちらかを用いると実現できます。
-
インストールディスクを用いてソフトウェアを書き込む
-
SWUpdateを用いてソフトウェアを書き込む
ただし、SWUpdateは運用中のArmadilloのアップデート機能であり、量産時のイメージ書き込みは本来の用途でないため、基本的にはイメージ書き込みに特化しているインストールディスクを用いた方法を選択してください。
それぞれの手法の特徴を表4.1「インストールディスクとSWUpdateによるソフトウェア書き込みの比較」にまとめます。
ソフトウェア書き込み工程を決定する際の参考にしてください。
表4.1 インストールディスクとSWUpdateによるソフトウェア書き込みの比較
手段 | メリット | デメリット |
---|
インストールディスク | -
インストールの前後処理を行なうシェルスクリプトのテンプレートが用意されている
-
インストールの前後処理は、microSDカード内にシェルスクリプトを配置するだけなので製造担当者にも編集しやすい
| -
インストール実行に microSD カードを装着するために Armadillo のケースを開ける必要がある
-
動いているシステムをそのままインストールディスクにするため、出荷時の標準イメージから手動で同じ環境を構築する手順が残らない
|
SWUpdate | -
microSD カードを使用せずに実行できるため、Armadilloのケースを開ける必要がない
-
必ず必要となる初回アップデートを別途実行する必要がない
| -
swuイメージの作成には、mkswuを使用できる環境とdescファイルの記述方法を知る必要があるため、開発担当者以外にswuイメージを更新させるハードルが少し高い
-
ログの取得など、インストール前後の処理が必要な場合は自分で記述する必要がある
|
量産時のイメージ書き込みにインストールディスクを使用する場合は、「インストールディスクを用いてイメージ書き込みする」に進んでください。
量産時のイメージ書き込みにSWUpdateを使用する場合は、「SWUpdate を用いてイメージ書き込みする」に進んでください。
4.4. インストールディスクを用いてイメージ書き込みする
「インストールディスクについて」でも紹介したとおり、 Armadillo Base OS 搭載製品では、開発が完了した Armadillo のクローン用インストールディスクを作成することができます。
以下では、クローン用インストールディスクを作成する手順を準備段階から紹介します。
4.4.1. /etc/swupdate_preserve_fileへの追記
Armadillo Base OS のバージョンを最新版にしておくことを推奨しています。
最新版でない場合は、バージョンが古いゆえに以下の作業を実施出来ない場合もありますので、ここで Armadillo Base OS のバージョンをアップデートしてください。
ここでは SWUpdate を使用して Armadillo Base OS のアップデートを行ないますが、このアップデートを行なうと、/etc/swupdate_preserve_filesに記載の無いファイルは消えてしまいます。
Armadillo Base OS のルートファイルシステム上に消えてほしくないファイルを開発中に配置していた場合は、図4.3「任意のファイルパスを/etc/swupdate_preserve_filesに追記する」に示すコマンドを実行することで /etc/swupdate_preserve_files にそのファイルが追記され、アップデート後も保持し続けるようになります。
一部のファイルやディレクトリは初めから /etc/swupdate_preserve_files に記載されている他、 podman commit
したコンテナイメージについてもアップデート後に引き継がれるので、本ドキュメントのサンプルアプリケーションの場合は実行する必要はありません。
「SWU イメージのインストール」 で SWUpdate の初回アップデートを行った際に、各ユーザーのパスワード設定をしました。
開発中はログインしやすいような単純なパスワードにしていることがよくあるので、製品に適用しないようにこのタイミングで強固なパスワードに変更しておきましょう。
|
rootユーザのパスワードを変更します。
|
|
新しいrootユーザ用パスワードを入力します。
|
|
再度新しいrootユーザ用パスワードを入力します。
|
|
atmarkユーザのパスワードを変更します。
|
|
新しいatmarkユーザ用パスワードを入力します。
|
|
再度新しいatmarkユーザ用パスワードを入力します。
|
|
パスワードの変更を永続化させます。
|
4.4.4. 開発中のみ使用していたコンテナイメージの削除
開発用に使用し、運用時には不要なコンテナ及びコンテナイメージは、インストールディスク作成前に削除することを推奨します。
以下のコマンドを実行することで作成したコンテナの一覧を取得できます。
[armadillo /]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ca118e9473b docker.io/library/alpine:latest /bin/sh 3 seconds ago Exited (0) 3 seconds ago vibrant_easley
9c908ab45ed8 localhost/abos-dev-guide:v1.0.0 /bin/bash 3 minutes ago Exited (0) 5 months ago sample_container
基本的に運用時におけるコンテナは /etc/atmark/containers/*.conf ファイルによって自動的に作成されますので、上記コマンドで表示されたコンテナは全て削除して問題無いはずです。以下にコンテナを削除する例を示します。
[armadillo /]# podman rm sample_container
[armadillo /]# podman rm 3ca118e9473b
[armadillo /]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
コンテナの名前で削除するコンテナを指定しています。
|
|
コンテナのIDで削除するコンテナを指定しています。
|
|
何も表示されず、全てのコンテナが削除されたことを確認します
|
以下に示すコマンドを実行することでコンテナイメージの一覧を取得できます。 readonly 領域に保存されているコンテナイメージが 1 つでもある場合は、 R/O 列が表示されます。 R/O 列が表示されない場合は、全てのコンテナイメージの R/O が false であることを意味しています。
[armadillo /]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE R/O
docker.io/library/alpine latest 6e30ab57aeee 2 weeks ago 5.56 MB false
docker.io/library/busybox latest 3c19bafed223 5 days ago 1.64 MB true
localhost/abos-container v1.0.0 2394ea5f177f 5 hours ago 932 MB false
ここでは運用時に必要な localhost/abos-container:v1.0.0 を除いた、その他のコンテナイメージを削除します。
R/O が false のイメージは podman rmi コマンドで削除できます。
[armadillo /]# podman rmi docker.io/library/alpine
Untagged: docker.io/library/alpine:latest
Deleted: 6e30ab57aeeef1ebca8ac5a6ea05b5dd39d54990be94e7be18bb969a02d10a3f
R/O が true のイメージは abos-ctrl podman-rw rmi コマンドで削除できます。
[armadillo /]# abos-ctrl podman-rw rmi docker.io/library/busybox:latest
Untagged: docker.io/library/busybox:latest
Deleted: 3c19bafed22355e11a608c4b613d87d06b9cdd37d378e6e0176cbc8e7144d5c6
4.4.5. 開発したコンテナイメージを tmpfs に移行する
開発中は podman のデータは電源を切っても保持されるように eMMC に保存していました。 開発中はこのままで問題ありませんが、運用する場合には eMMC への書き込みを最小限にする観点から、 podman のデータの保存先を tmpfs に変更しておくことを推奨します。
以下に示すコマンドを実行することで、eMMCに保存されている開発完了後のコンテナイメージをtmpfsモードでも読み取り専用で使用できるように変更できます。
[armadillo /]# abos-ctrl podman-storage --tmpfs
List of images configured on development storage:
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/abos-dev-guide v1.0.0 2394ea5f177f 5 hours ago 932 MB
What should we do? ([C]opy (default), [N]othing, [D]elete)
C
Delete subvolume (no-commit): '/mnt/containers_storage'
Replacing development images to readonly storage succeeded
Switching back to tmpfs container storage.
Successfully reverted podman storage to tmpfs
[armadillo /]# abos-ctrl podman-rw image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/abos-dev-guide v1.0.0 2394ea5f177f 5 hours ago 932 MB
|
C を入力しEnterを押下します。
|
|
tmpfsモードでコンテナイメージが読み込めていることを確認します。
|
4.4.6. 開発したシステムをインストールディスクにする
| |
---|
Armadillo-IoT ゲートウェイ A6E では、WLAN 搭載モデルはインストールディスク以外で microSD を使用できないため、一旦 USB メモリへインストールディスクイメージを書き出し、 ATDE にて microSD カードへコピーして動作確認する手順としております。 |
Armadillo Base OS では、 abos-ctrl make-installer コマンドを実行することで、現在起動しているルートファイルシステム及びブートローダーをそのままインストールディスクイメージとして出力し、USB メモリに書き込むことができます。
あらかじめ、USB メモリに Armadillo-IoT ゲートウェイ A6E のインストールディスクイメージをコピーしてください。
Armadillo-IoT ゲートウェイ A6E インストールディスクイメージよりダウンロードできます。
以下の例では、インストールディスクイメージを a6e-bto-installer.img とリネームして実施しております。
abos-ctrl make-installer コマンドを実行する前に、Armadillo がインターネットに接続されており、かつ USB メモリが挿入されていることを確認してください。
armadillo:~# abos-ctrl make-installer --output /mnt/a6e-bto-installer.img
/mnt/a6e-bto-installer.img (534MiB) was bigger than 366MiB and was not truncated.
An installer system is already available on image file. Use it? [Y/n]
Y
Copying boot image
Copying rootfs
314572800 bytes (315 MB, 300 MiB) copied, 69 s, 4.5 MB/s
300+0 records in
300+0 records out
314572800 bytes (315 MB, 300 MiB) copied, 69.2607 s, 4.5 MB/s
Copying appfs
At subvol app/snapshots/volumes
At subvol app/snapshots/boot_volumes
At subvol app/snapshots/boot_containers_storage
Trying to shrink the installer partition...
Installer partition is not shrinkable
Cleaning up and syncing changes to disk...
Installer updated successfully!
-rwxr-xr-x 1 root root 534M May **:**:** /mnt/a6e-bto-installer.img
|
Y キーを押下します。
|
「Installer updated successfully!」と表示されれば、正常に USB メモリにインストールディスクイメージを書き込むことができています。 Armadillo から USB メモリを抜去してください。
4.4.7. インストールディスクの動作確認を行う
作成したインストールディスクの動作確認を実施してください。開発に使用した Armadillo 以外の個体が必要になります。また、インストール先の Armadillo の eMMC 内のデータは上書きされて消えるため、必要なデータは予めバックアップを取っておいてください。
開発したシステムをインストールディスクにするの手順で使用した USB メモリの中に a6e-bto-installer.img が存在しますので、ATDE 上でこのイメージをもとに microSD カードにインストールディスクを作成してください。ATDE 上に a6e-bto-installer.img をコピーした場合、コマンドは以下のようになります。/dev/sd[X] の [X] は microSD を示す文字を指定してください。
[ATDE ~] sudo dd if=a6e-bto-installer.img of=/dev/sd[X] bs=1M oflag=direct status=progress
上記コマンドで作成した microSD のインストールディスクを、インストール先の Armadillo に挿入してください。その後、SW2 (起動デバイス設定スイッチ)を ON にしてから電源を入れます。 Armadilloがインストールディスクから起動し、自動的にインストールスクリプトが動作します。
しばらくすると「reboot: Power down」と表示されるので、Armadilloの電源を切ります。 その後 Armadillo から microSD カードを抜き、SW2 (起動デバイス設定スイッチ)を OFF にします。 再度電源を投入することで、インストールは完了です。
実際にクローンした Armadillo が想定した通りの動作をすることを確認してください。
4.5. SWUpdate を用いてイメージ書き込みする
ここでは、sample-container という名称のコンテナの開発を終了したとします。
コンテナアーカイブの作成方法は 「コンテナの自動作成やアップデート」 を参照ください。
-
sample-container-v1.0.0.tar (動かしたいアプリケーションを含むコンテナイメージアーカイブ)
-
sample-container.conf (コンテナ自動実行用設定ファイル)
これらのファイルを /home/atmark/mkswu/sample-container ディレクトリを作成して配置した例を記載します。
SWUpdate実行時に、「SWU イメージの準備」で挙げたファイルをArmadilloに書き込むような SWU イメージを生成します。
SWUイメージを作成するためには、SWUpdate時に実行する処理等を示したdescファイルを記述し、そのdescファイルを入力として mkswu
コマンドを実行することで、SWUイメージが出来上がります。
|
SWUpdate完了後に電源を切るように設定します。
|
|
コンテナイメージファイルをswuイメージに組み込み、Armadilloに転送します。
|
|
コンテナ起動設定ファイルをArmadilloに転送します。
|
desc ファイルの詳細な書式については、「mkswu の .desc ファイルを編集する」を参照してください。
また、作成されたSWUイメージの内容を確認したい場合は、「SWU イメージの内容の確認」を参照してください。
SWUpdate によってイメージ書き込みを行った後には、イメージが書き込まれた Armadillo が正しく動作するか、実際に動かして確認してみます。
再度電源を投入して、期待したアプリケーションが動作することを確認してください。