本章では、工場出荷イメージと同じイメージを作成する手順について説明します。
使用する最新版のソースコードは、Armadilloサイトからダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、最新バージョンのソースコードを利用することを推奨します。
| |
---|
開発作業では、基本ライブラリ・アプリケーションやシステム設定ファイルの作成・配置を行います。各ファイルは作業ディレクトリ配下で作成・配置作業を行いますが、作業ミスにより誤って作業用 PC 自体の OS を破壊しないために、すべての作業は root ユーザーではなく一般ユーザーで行ってください。
|
ここでは、ブートローダーである「U-Boot」のソースコードからイメージファイルを作成する手順を説明します。
| |
---|
u-boot-x1-at16 より、SPIフラッシュメモリ用とSD/eMMC用のデフォルトコンフィグは統合されました。
|
手順10.1 ブートローダーをビルド
ソースコードの準備
U-Bootのソースコードアーカイブを準備し展開します。
デフォルトコンフィギュレーションの適用
U-Bootディレクトリに入り、Armadillo-IoT ゲートウェイ G3用のデフォルトコンフィギュレーションを適用します。デフォルトコンフィグにはx1_config
を指定してください。
ビルド
ビルドにはmakeコマンドを利用します。
イメージファイルの生成確認
ビルドが終了すると、U-Bootディレクトリにイメージファイルが作成されています。
ここでは、Linuxカーネルのソースコードとinitramfsアーカイブから、イメージファイルを作成する手順を説明します。
- ビルドに必要なファイル
linux-4.9-x1-at[version] .tar.gz |
initramfs_x1-[version] .cpio.gz |
手順10.2 Linuxカーネルをビルド
アーカイブの展開
Linuxカーネルのソースコードアーカイブを展開します。
initramfsアーカイブへのシンボリックリンク作成
Linuxカーネルディレクトリに移動して、initramfsアーカイブへのシンボリックリンク作成します。
コンフィギュレーション
コンフィギュレーションをします。
ビルド
ビルドするには、次のようにコマンドを実行します。
イメージファイルの生成確認
ビルドが終了すると、arch/arm/boot/ディレクトリと、arch/arm/boot/dts/以下にイメージファイル(LinuxカーネルとDTB)が作成されています。
10.3. Debian GNU/Linux ルートファイルシステムをビルドする
ここでは、x1-debian-builder を使って、Debian GNU/Linuxルートファイルシステムを構築する方法を示します。
x1-debian-builder は ATDE 等のPCで動作しているLinux上でArmadillo-IoTG3用のarmhfアーキテクチャに対応したDebian GNU/Linux ルートファイルシステムを構築することができるツールです。
Armadillo-IoT G3 を一度起動した後のルートファイルシステム上には、使い方によってはsshの秘密鍵や、動作ログ、シェルのコマンド履歴、ハードウェアのUUIDに紐付く設定ファイル等が生成されています。そのまま、他の Armadillo-IoT G3 にルートファイルシステムをコピーした場合は、鍵の流出や UUID の不一致による動作の相違が起きる可能性があります。そのため、量産等に使用するルートファイルシステムは新規に x1-debian-builder を使って構築することをお勧めします。
10.3.1. 出荷状態のルートファイルシステムアーカイブを構築する
出荷状態のルートファイルシステムアーカイブを構築する手順を次に示します。パッケージをインターネット上から取得するため回線速度に依存しますが、40分程度かかります。
10.3.2. カスタマイズされたルートファイルシステムアーカイブを構築する
x1-debian-builder-[VERSION]
/aiotg3_resources内のファイルを変更し、build.shを実行することで、ルートファイルシステムをカスタマイズすることができます。
10.3.2.1. ファイル/ディレクトリを追加する
aiotg3_resources/ 以下に配置したファイルやディレクトリは resources ディレクトリを除いて、そのまま、ルートファイルシステムの直下にコピーされます。ファイルのUIDとGIDは共にrootになります。
aiotg3_resources/resources/packages を変更することで、ルートファイルシステムにインストールするパッケージをカスタマイズすることができます。
パッケージ名は1行に1つ書くことができます。パッケージ名は Armadillo-IoT G3 上で "apt-get install" の引数に与えることのできる正しい名前で記載してください。
誤ったパッケージ名を指定した場合は、ビルドログに以下のようなエラーメッセージが表示されて当該のパッケージが含まれないアーカイブが生成されます。
| |
---|
パッケージに依存する他のパッケージは明記しなくても、apt によって自動的にインストールされます。また、aptやdpkg等の Debian GNU/Linux の根幹となるパッケージも自動的にインストールされます。
|
| |
---|
packages には lua と rubyのインタプリタや、Webサーバー(lighttpd) が含まれていますが、これらが不要な場合は、それぞれの行を削除してください。
|
| |
---|
openssh-server のような「パッケージのインストールの際に、自動的に秘密鍵を生成する」パッケージは、基本的にpackagesには追加せず、Armadillo を起動した後に "apt-get install" を使って個別にインストールしてください。
openssh-server を packages に追加した場合、構築したルートファイルシステムアーカイブを書き込んだ全ての Armadillo に、単一の公開鍵を使ってログインすることができてしまいます。もし、意図的に、複数の Armadillo で同一の秘密鍵を利用したい場合、脆弱性となり得ることを理解して適切な対策をとった上で利用してください。
|