ビルド手順

本章では、工場出荷イメージと同じイメージを作成する手順について説明します。

最新版のソースコードは、Armadilloサイトからダウンロードすることができます。 新機能の追加や不具合の修正などが行われているため、最新バージョンのソースコードを利用することを推奨します。

[警告]

開発作業では、基本ライブラリ・アプリケーションやシステム設定ファイルの作成・配置を行います。各ファイルは作業ディレクトリ配下で作成・配置作業を行いますが、作業ミスにより誤って作業用 PC 自体の OS を破壊しないために、すべての作業は root ユーザーではなく一般ユーザーで行ってください。

10.1. ブートローダーをビルドする

ここでは、ブートローダーである「U-Boot」のソースコードからイメージファイルを作成する手順を説明します。

  1. ソースコードの準備

    U-Bootのソースコードアーカイブを準備し展開します。

    [ATDE ~]$ tar xf u-boot-a600-v2018.03-at[version].tar.gz
  2. デフォルトコンフィギュレーションの適用

    U-Bootディレクトリに入り、Armadillo-610用のデフォルトコンフィギュレーションを適用します。

    [ATDE ~]$ cd u-boot-a600-v2018.03-at[version]
    [ATDE ~/u-boot-a600-v2018.03-at[version]]$ make ARCH=arm armadillo-640_defconfig
    [注記]

    デフォルトコンフィギュレーションは、Armadillo-610とArmadillo-640で共通です。

  3. ビルド

    ビルドには make コマンドを利用します。

    [ATDE ~/u-boot-a600-v2018.03-at[version]]$ make CROSS_COMPILE=arm-linux-gnueabihf-
  4. イメージファイルの生成確認

    ビルドが終了すると、U-Bootディレクトリにイメージファイルが作成されています。

    [ATDE ~/u-boot-a600-v2018.03-at[version]]$ ls u-boot.imx
    u-boot.imx

10.2. Linuxカーネルをビルドする

ここでは、Linuxカーネルのソースコードから、イメージファイルを作成する手順を説明します。

ビルドに必要なファイル
  • linux-v4.14-at[version].tar.gz
  • initramfs_a600-[version].cpio.gz

10.2.1. 手順:Linuxカーネルをビルド

  1. アーカイブの展開

    Linuxカーネルのソースコードアーカイブを展開します。

    [ATDE ~]$ ls
    initramfs_a600-[version].cpio.gz linux-v4.14-at[version].tar.gz
    [ATDE ~]$ tar xf linux-v4.14-at[version].tar.gz
    [ATDE ~]$ ls
    initramfs_a600-[version].cpio.gz linux-v4.14-at[version]  linux-v4.14-at[version].tar.gz
  2. initramfs アーカイブへのシンボリックリンク作成

    Linux カーネルディレクトリに移動して、initramfs アーカイブへのシンボリックリンクを作成します

    [ATDE ~]$ cd linux-v4.14-at[version]
    [ATDE ~/linux-v4.14-at[version]]$ ln -s ../initramfs_a600-[version].cpio.gz initramfs_a600.cpio.gz
  3. コンフィギュレーション

    コンフィギュレーションをします。

    [ATDE ~/linux-v4.14-at[version]]$ make ARCH=arm armadillo-640_defconfig
    [注記]

    デフォルトコンフィギュレーションは、Armadillo-610とArmadillo-640で共通です。

  4. ビルド

    ビルドするには、次のようにコマンドを実行します。

    [ATDE ~/linux-v4.14-at[version]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage
    [ATDE ~/linux-v4.14-at[version]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. イメージファイルの生成確認

    ビルドが終了すると、 arch/arm/boot/ ディレクトリと、 arch/arm/boot/dts/ 以下にイメージファイル(LinuxカーネルとDTB)が作成されています。

    [ATDE ~/linux-v4.14-at[version]]$ ls arch/arm/boot/uImage
    arch/arm/boot/uImage
    [ATDE ~/linux-v4.14-at[version]]$ ls arch/arm/boot/dts/armadillo-610-at-dtweb.dtb
    arch/arm/boot/dts/armadillo-610-at-dtweb.dtb  1
    [ATDE ~/linux-v4.14-at[version]]$ ls arch/arm/boot/dts/armadillo-610-extboard-eva-lcd.dtb
    arch/arm/boot/dts/armadillo-610-extboard-eva-lcd.dtb  2
    [ATDE ~/linux-v4.14-at[version]]$ ls arch/arm/boot/dts/armadillo-610-extboard-eva-grove.dtb
    arch/arm/boot/dts/armadillo-610-extboard-eva-grove.dtb  3

    1

    at-dtwebを利用してDevice Treeをカスタマイズする場合に使用します。詳しくは 「Device Treeをカスタマイズする」 を参照してください。

    2

    Armadillo-610 拡張ボードのLCDインターフェースを利用する場合に使用します。

    3

    Armadillo-610 拡張ボードのGroveインターフェースを利用する場合に使用します。

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 を使って構築することをお勧めします。

[警告]

Debian GNU/Linux 9(コードネーム stretch) ルートファイルシステムを構築するには、at-debian-builderのバージョンが v1.x.x (xは0以上の数字)である必要があります。

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.1 出荷状態のルートファイルシステムアーカイブを構築する手順


10.3.2. カスタマイズされたルートファイルシステムアーカイブを構築する

at-debian-builder-[VERSION]/a600_resouces内のファイルを変更し、build.shを実行することで、ルートファイルシステムをカスタマイズすることができます。

10.3.2.1. ファイル/ディレクトリを追加する

a600_resources/ 以下に配置したファイルやディレクトリは resources ディレクトリを除いて、そのまま、ルートファイルシステムの直下にコピーされます。ファイルのUIDとGIDは共にrootになります。

10.3.2.2. パッケージを変更する

a600_resources/resources/packages を変更することで、ルートファイルシステムにインストールするパッケージをカスタマイズすることができます。

パッケージ名は1行に1つ書くことができます。パッケージ名はArmadillo上で"apt-get install"の引数に与えることのできる正しい名前で記載してください。

誤ったパッケージ名を指定した場合は、ビルドログに以下のようなエラーメッセージが表示されて当該のパッケージが含まれないアーカイブが生成されます。

E: Unable to locate package XXXXX

図10.2 誤ったパッケージ名を指定した場合に起きるエラーメッセージ


[ティップ]

パッケージに依存する他のパッケージは明記しなくても、apt によって自動的にインストールされます。また、aptやdpkg等の Debian GNU/Linux の根幹となるパッケージも自動的にインストールされます。

[警告]

openssh-server のような「パッケージのインストールの際に、自動的に秘密鍵を生成する」パッケージは、基本的にpackagesには追加せず、Armadillo を起動した後に "apt-get install" を使って個別にインストールしてください。

openssh-server を packages に追加した場合、構築したルートファイルシステムアーカイブを書き込んだ全ての Armadillo に、単一の公開鍵を使ってログインすることができてしまいます。もし、意図的に、複数の Armadillo で同一の秘密鍵を利用したい場合、脆弱性となり得ることを理解して適切な対策をとった上で利用してください。