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