Howto

Armadillo-BTOサービス:ROMイメージの作成方法(Armadillo-640)Armadillo Base OS版

ボード本体のフラッシュメモリに書き込む、指定イメージファイルを作成する方法を記載します。

必要なもの

本手順を実行するために必要なものは以下の通りです。

  • 以下の条件を満たす Armadillo-640 本体
    • 開発完了済みのソフトウェアが書き込まれていること
    • インターネットに接続されていること
    • シリアルインターフェース経由で操作できること
  • 作業用 PC (シリアルインターフェース経由で Armadillo-640 を操作できるもの)
  • 16GB 以上の USB メモリ
  • 16GB 以上の microSD カード

指定イメージの種類

ROM イメージ書き込みで「指定イメージ」を選択された場合は、下記の 2 種類のファイルをあらかじめご用意ください。

ファイル内容 注意事項
イメージファイル ファイルタイプ:gz, tar, zip, tgz
ファイルサイズ上限:4GB 以下[*1]
MD5 ファイル ファイルタイプ:txt, md5
ファイルサイズ上限:2MB 以下

[*1] 本体基板に書き込むイメージファイルのサイズ上限については、製品マニュアルをご覧ください。

指定イメージの作成方法

Armadillo-640 では、開発完了後の Armadillo のソフトウェアを、別の Armadillo にクローンするインストールディスクを作成することができます。

Armadillo-640 の BTO では、このクローン用インストールディスクイメージを当社にファイル交換サイトを通じて送っていただくことで、指定イメージを書き込んだ状態で Armadillo-640 を出荷します。

以下に BTO 用インストールディスクの作成手順を示します。

事前準備

インストールディスク作成前にいくつかの前準備が必要なことがあります。 以下に必要な前準備とその手順について紹介します。

Armadillo Base OS の更新

基本的にArmadillo Base OSは常に最新版を使用することを推奨します。 開発中にArmadillo Base OSの新しいバージョンがリリースされている場合もありますので、インストールディスクを作成する前にArmadillo Base OSのバージョンを最新版にしてください。

/etc/swupdate_preserve_fileへの追記

ここでは SWUpdate というアップデート機能を使用して Armadillo Base OS のアップデートを行ないますが、このアップデートを行なうと、 /etc/swupdate_preserve_files に記載の無いファイルは消えてしまいます。

Armadillo Base OS のルートファイルシステム上に消えてほしくないファイルを開発中に配置していた場合は、以下に示すコマンドを実行することで /etc/swupdate_preserve_files にそのファイルが追記され、アップデート後も保持し続けるようになります。

[armadillo]# persist_file -p <ファイルのパス>
Armadillo Base OS アップデートの実行

Armadillo-640 Armadillo Base OS から「Armadillo-640 用 SWUイメージイメージファイル」のURLをコピーして、以下に示すコマンドを実行することで Armadillo Base OS を最新版にアップデートできます。

[armadillo]# swupdate -d '-u https://armadillo.atmark-techno.com/files/downloads/armadillo-640/image/baseos-600-[VERSION].swu'

SWUpdate の初期設定

これまでに一度もSWUpdateによるアップデートを行なっていない場合、Armadillo Base OS 開発ガイド「SWUpdateによる初回アップデート」の手順にしたがって初回アップデートを実行してください。

Armadillo Base OS 搭載製品は、USB メモリにアップデートイメージを配置して Armadillo に接続することで、SWUpdate によるアップデートを行うことができます。 一度も SWUpdate を実行していない個体に関しては、第三者が作ったアップデートイメージであっても受け付けてしまいます。そのため、初回アップデートを行なっていないArmadilloを量産して出荷することはとても危険です。 SWUpdate による初回アップデートでは、自分以外が作成したアップデートイメージを受け付けなくするように設定します。

初回 SWUpdate 時に作成した認証鍵は、出荷後のリモートアップデートなどに使用できるため削除しないよう注意してください。

パスワードの確認と変更

Armadillo の各ユーザの初回ログイン時に、ログインパスワードを設定しました。 開発中はログインしやすいような単純なパスワードにしていることがよくあるので、製品に適用しないようにこのタイミングで強固なパスワードに変更することを推奨します。

パスワードの変更は以下の手順で実施できます。

[armadillo /]# passwd (1)
Changing password for root
New password: (2)
Retype password: (3)
passwd: password for root changed by root

[armadillo /]# passwd atmark (4)
Changing password for atmark
New password: (5)
Retype password: (6)
passwd: password for atmark changed by root

[armadillo /]# persist_file /etc/shadow (7)
  • (1) rootユーザのパスワードを変更します。
  • (2) 新しいrootユーザ用パスワードを入力します。
  • (3) 再度新しいrootユーザ用パスワードを入力します。
  • (4) atmarkユーザのパスワードを変更します。
  • (5) 新しいatmarkユーザ用パスワードを入力します。
  • (6) 再度新しいatmarkユーザ用パスワードを入力します。
  • (7) パスワードの変更を永続化させます。

開発中のみ使用していたコンテナイメージの削除

開発用に使用し、運用時には不要なコンテナ及びコンテナイメージは、インストールディスク作成前に削除することを推奨します。

以下のコマンドを実行することで作成したコンテナの一覧を取得できます。

[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 (1)
[armadillo /]# podman rm 3ca118e9473b (2)
[armadillo /]# podman ps -a
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES (3)
  • (1) コンテナの名前で削除するコンテナを指定しています。
  • (2) コンテナのIDで削除するコンテナを指定しています。
  • (3) 何も表示されず、全てのコンテナが削除されたことを確認します。

以下に示すコマンドを実行することでコンテナイメージの一覧を取得できます。 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

開発したコンテナイメージを 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 (1)
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 (2)
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
localhost/abos-dev-guide   v1.0.0      2394ea5f177f  5 hours ago   932 MB
  • (1) C を入力しEnterを押下します。
  • (2) tmpfsモードでコンテナイメージが読み込めていることを確認します。

開発したシステムをインストールディスクにする

Armadillo Base OS では、 abos-ctrl make-installer コマンドを実行することで、現在起動しているルートファイルシステム及びブートローダーをそのままインストールディスクイメージとして出力し、USB メモリに書き込むことができます。

あらかじめ、USB メモリに Armadillo-640 のインストールディスクイメージをコピーしてください。
Armadillo Base OS対応 Armadillo-640 インストールディスクイメージよりダウンロードできます。
以下の例では、インストールディスクイメージを a640-bto-installer.img とリネームして実施しております。

abos-ctrl make-installer コマンドを実行する前に、Armadillo がインターネットに接続されており、かつ USB メモリが挿入されていることを確認してください。

armadillo:~# abos-ctrl make-installer --output /mnt/a640-bto-installer.img --make-archive
/mnt/a640-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] (1)
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...
Computing install disk image's checksum...
Creating the install disk image archive...
Checking archived image's checksum... 
Installer updated successfully!
-rw-r--r-- 1 root root 534M May **:**:** /mnt/a640-bto-installer.img
-rw-r--r-- 1 root root   56 May **:**:** /mnt/a640-bto-installer.img.md5 
-rw-r--r-- 1 root root 270M May **:**:** /mnt/a640-bto-installer.img.tgz
  • (1) Y キーを押下します。

「Installer updated successfully!」と表示されれば、正常に USB メモリにインストールディスクイメージを書き込むことができています。 Armadillo から USB メモリを抜去してください。

USBメモリに生成された、圧縮されたインストールディスクイメージ a640-bto-installer.img.tgz、MD5ファイル a640-bto-installer.img.md5 をアットマークテクノに送付してください。

インストールディスクの動作確認を行う

作成したインストールディスクの動作確認を実施してください。開発に使用した Armadillo 以外の個体が必要になります。また、インストール先の Armadillo の eMMC 内のデータは上書きされて消えるため、必要なデータは予めバックアップを取っておいてください。

開発したシステムをインストールディスクにするの手順で使用した USB メモリの中に a640-bto-installer.img が存在しますので、ATDE 上でこのイメージをもとに microSD カードにインストールディスクを作成してください。ATDE 上に a640-bto-installer.img をコピーした場合、コマンドは以下のようになります。/dev/sd[X] の [X] は microSD を示す文字を指定してください。

[ATDE ~] sudo dd if=a640-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 が想定した通りの動作をすることを確認してください。

指定イメージファイルの送付方法

指定イメージファイルは、ご発注時まで[*3]に「アットマークテクノ BTO イメージファイル受付サイト」からお送りください。
「アットマークテクノ BTO イメージファイル受付サイト」のアクセス方法については、ご発注時に営業担当よりご案内いたします。

注意事項

[*3] 期日までに指定イメージファイルをお送りいただけなかった場合、納期をお約束いたしかねますのであらかじめご了承ください。お手続きの流れについては、「Armadillo BTO サービスのご案内(各製品シリーズの共通事項)」の「お申込みから納品までの流れ」の内容をご確認ください。