本章では、開発を経て完成したソフトウェア含むArmadilloを量産するためにインストールディスクを作成する手順について説明します。
作成したインストールディスクを製造担当者に渡すことで、簡単かつミスも少なくArmadilloを量産することが可能です。
インストールディスクイメージをmicroSDに書き込んだものがインストールディスクです。
インストールディスクイメージには、インストール先のArmadilloに書き込む任意のルートファイルシステム及びブートローダーと、イメージ書き換え用のスクリプトが組み込まれます。
SDブートでインストールディスクから起動することで、自動的にイメージ書き換えスクリプトが動作し、eMMC内のイメージを予めインストールディスクイメージに組み込んだ任意のOSやブートローダに書き換えることができます。
インストールディスクには2つの種類があります。
初期化インストールディスク
これを用いてインストールを実行することで、対象のArmadilloのeMMC内のイメージを標準イメージに書き換えることができます。
主にArmadilloを初期化する際に使用します。
アットマークテクノが提供しているイメージですが、ユーザが同等のイメージを作成することも可能です。
クローンインストールディスク
開発完了後のArmadilloを複製する為にユーザが作成するインストールディスクです。
インストールディスクイメージには、開発完了後のルートファイルシステム、コンテナイメージやブートローダなどを組み込みます。
以下の手順ではクローンインストールディスクを作成し、製造の準備を行ないます。
| |
---|
本ドキュメントでは紹介しませんが、初期化インストールディスクは、Armadilloが起動しなくなった場合などにeMMC内のイメージを標準イメージに書き換えるために使用されます。
詳細はArmadillo-IoT ゲートウェイ G4 製品マニュアルの「 Armadilloのソフトウェアの初期化」を参照してください。 |
8.2. インストールディスクを作成する準備を行なう
インストールディスク作成前にいくつかの前準備が必要なことがあります。
以下に必要な前準備とその手順について紹介しますので、クローン元のArmadillo上で作業を実施してください。
8.2.1. Armadillo Base OSの更新
基本的にArmadillo Base OSは常に最新版を使用することを推奨します。
開発中にArmadillo Base OSの新しいバージョンがリリースされている場合もありますので、クローンインストールディスクを作成する前にArmadillo Base OSのバージョンを最新版にしてください。
8.2.1.1. /etc/swupdate_preserve_fileへの追記
ここではSWUpdateというアップデート機能を使用してArmadillo Base OSのアップデートを行ないますが、このアップデートを行なうと、/etc/swupdate_preserve_filesに記載の無いファイルは消えてしまいます。
Armadillo Base OSのルートファイルシステム上に消えてほしくないファイルを開発中に配置していた場合は、図8.1「任意のファイルパスを/etc/swupdate_preserve_filesに追記する」に示すコマンドを実行することで/etc/swupdate_preserve_filesにそのファイルが追記され、アップデート後も保持し続けるようになります。
一部のファイルやディレクトリは初めから/etc/swupdate_preserve_filesに記載されている他、 podman commit
したコンテナイメージについてもアップデート後に引き継がれるので、本ドキュメントのサンプルアプリケーションの場合は実行する必要はありません。
これまでに一度もSWUpdateによるアップデートを行なっていない場合、「SWUpdateによる初回アップデート」の手順にしたがって初回アップデートを実行してください。
Armadillo Base OS搭載製品は、USBメモリにアップデートイメージを配置してArmadilloに接続することで、SWUpdateによるアップデートが行われます。
一度もSWUpdateを実行していない個体に関しては、第三者が作ったアップデートイメージであっても受け付けてしまいます。
そのため、初回アップデートを行なっていないArmadilloを量産して出荷することはとても危険です。
SWUpdateによる初回アップデートでは、自分以外が作成したアップデートイメージを受け付けなくするように設定します。
初回SWUpdate時に作成した認証鍵は、出荷後のリモートアップデートなどに使用できるため削除しないよう注意してください。
Armadilloの各ユーザの初回ログイン時に、ログインパスワードを設定しました。
開発中はログインしやすいような単純なパスワードにしていることがよくあるので、製品に適用しないようにこのタイミングで強固なパスワードに変更しておきましょう。
|
rootユーザのパスワードを変更します。
|
|
新しいrootユーザ用パスワードを入力します。
|
|
再度新しいrootユーザ用パスワードを入力します。
|
|
atmarkユーザのパスワードを変更します。
|
|
新しいatmarkユーザ用パスワードを入力します。
|
|
再度新しいatmarkユーザ用パスワードを入力します。
|
|
パスワードの変更を永続化させます。
|
8.2.4. 開発中のみ使用していたコンテナイメージの削除
開発中に使用していて運用時には不要なコンテナ及びコンテナイメージは、インストールディスク作成前に削除しておくべきです。
図8.4「作成済みコンテナ一覧を表示する」に示すコマンドを実行することで作成したコンテナの一覧を取得できます。
基本的に運用時におけるコンテナは/etc/atmark/containers/*.confファイルによって自動的に作成されますので、図8.4「作成済みコンテナ一覧を表示する」のコマンドによって取得したコンテナは全て削除して問題無いはずです。
|
コンテナの名前で削除するコンテナを指定しています。
|
|
コンテナのIDで削除するコンテナを指定しています。
|
|
何も表示されず、全てのコンテナが削除されたことを確認します。
|
図8.6「コンテナイメージ一覧を表示する」に示すコマンドを実行することでコンテナイメージの一覧を取得できます。
readonly領域に保存されているコンテナイメージが1つでもある場合は、 R/O
列が表示されます。
R/O
列が表示されない場合は、全てのコンテナイメージの R/O
が false
であることを意味しています。
ここでは運用時に必要な localhost/abos-dev-guide:v1.0.0
を除いた、その他のコンテナイメージを削除します。
R/O
が false
のイメージは podman rmi
コマンドで削除できます。
R/O
が true
のイメージは abos-ctrl podman-rw rmi
コマンドで削除できます。
8.2.5. 開発したコンテナイメージをtmpfsに移行する
開発中は「開発前の準備」で行なったように、podmanのデータは電源を切っても保持されるようにeMMCに保存していました。
開発中はこのままで問題ありませんが、運用する場合にはeMMCへの書き込みを最小限にする観点から、podmanのデータの保存先をtmpfsに変更しておくことを推奨します。
図8.9「podmanのデータの保存先をtmpfsに変更する」に示すコマンドを実行することで、eMMCに保存されている開発完了後のコンテナイメージをtmpfsモードでも読み取り専用で使用できるように変更できます。
|
C を入力しEnterを押下します。
|
|
tmpfsモードでコンテナイメージが読み込めていることを確認します。
|
8.3. 開発したシステムをインストールディスクにする
Armadillo Base OSでは、 abos-ctrl make-installer
コマンドを実行することで、現在起動しているルートファイルシステム及びブートローダーをそのままインストールディスクイメージとして出力し、microSDカードに書き込むことができます。
abos-ctrl make-installer
コマンドを実行する前に、Armadilloがインターネットに接続されており、かつmicroSDカードが挿入されていることを確認してください。
microSDカード内のデータはインストールディスク作成時に上書きされて消えてしまうので、必要なデータは予めバックアップを取っておいてください。
「Installer updated successfully!」と表示されれば、正常にmicroSDカードにインストールディスクイメージを書き込むことができています。
ArmadilloからmicroSDカードを抜去してください。
| |
---|
これまでに一度もSWUpdateによるアップデートを行なっていない場合、 abos-ctrl make-installer 実行時に以下のようなエラーメッセージが出力され実行に失敗します。 ERROR: Refusing to build installer image with public onetime swupdate certificate installed
ERROR: Please install initial_setup.swu (from mkswu --init) first このメッセージが出力された場合は、「SWUpdateによる初回アップデート」の手順にしたがって初回アップデートを実行してください。
SWUpdateによる初回アップデートでは、自分以外が作成したアップデートイメージを受け付けなくするように設定します。 Armadillo Base OS搭載製品は、USBメモリにアップデートイメージを配置してArmadilloに接続することで、SWUpdateによるアップデートが行われます。
一度もSWUpdateを実行していない個体に関しては、第三者が作ったアップデートイメージであっても受け付けてしまいます。
そのため、初回アップデートを行なっていないArmadilloを量産して出荷することはとても危険です。 |
8.3.1. インストール時に任意のシェルスクリプトを実行する
作成したインストールディスクの所定の場所に、 installer_overrides.sh
というファイル名でシェルスクリプトを配置することで、インストール処理の前後で任意の処理を行なうことができます。
installer_overrides.sh
に記載された表8.1「インストール中に実行される関数」に示す3つの名前の関数のみが、それぞれ特定のタイミングで実行されます。
表8.1 インストール中に実行される関数
関数名 | 備考 |
---|
preinstall | インストール中、eMMCのパーティションが分割される前に実行されます。 |
postinstall | send_log関数を除く全てのインストール処理の後に実行されます。 |
send_log | 全てのインストール処理が完了した後に実行されます。指定した場所にインストールログを保存できます。 |
installer_overrides.sh
を書くためのサンプルとして、 インストールディスクイメージの第1パーティション及び、「開発したシステムをインストールディスクにする」で作成したのであれば第2パーティション直下に installer_overrides.sh.sample
を用意してあります。
このサンプルをコピーして編集するなどして、行ないたい処理を記述してください。
作成した installer_overrides.sh
は、インストールディスクの第1パーティション(ラベル名は"rootfs_0")か、「開発したシステムをインストールディスクにする」で作成したのであれば第2パーティション(ラベル名は"INST_DATA")の直下に配置することで実行されます。
両方に配置した場合は、第2パーティションに配置した記述が適用されます。
| |
---|
インストールディスクの第1パーティションはbtrfs、第2パーティションはexfatでフォーマットされているため、第2パーティションのみWindows PCでもマウントして読み書きすることができます。 製造担当者が installer_overrides.sh を記述する場合に、仮にWindows PCしか作業環境がない場合でも、第2パーティションを作成しておくことで作業を行なうことができるというメリットもあります。 |
これを利用することで、複数台のArmadilloに対してそれぞれに異なる固定IPアドレスを設定したり、各種クラウドへの接続鍵などを個体ごとに配置したりしたいなど、個体ごとに異なる設定を行なうなど柔軟な製造を行なうことも可能です。
詳しくは「インストール時に任意の処理を行なう」で紹介します。
作成したインストールディスクの動作確認は必ず行なってください。
開発に使用したArmadillo以外の個体が必要になります。
また、インストール先のArmadilloのeMMC内のデータは上書きされて消えるため、必要なデータは予めバックアップを取っておいてください。
まず、インストール先のArmadilloにインストールディスクイメージを書き込んだmicroSDカードを挿入してください。
その後、JP1をショートさせてから電源を入れます。
Armadilloがインストールディスクから起動し、自動的にインストールスクリプトが動作します。
しばらくすると「reboot: Power down」と表示されるので、Armadilloの電源を切ります。
その後ArmadilloからmicroSDカードを抜き、JP1をオープンにします。
再度電源を投入することで、インストールは完了です。
実際にクローンしたArmadilloが想定した通りの動作をすることを確認してください。
動作確認の際には、クローンしたArmadilloの起動時に図8.12「インストールに失敗したArmadilloに出力されるメッセージ」に示す末尾3行のWARNINGメッセージが出力されないことを必ず確認してください。
上記のメッセージが出力された場合は、インストールディスクによるイメージ書き込みが正しくできていません。
「インストールディスクを作成する準備を行なう」からインストールディスクの作成をやり直してください。