第7章 ビルド

この章では、ソースコードから出荷イメージと同じイメージを作成する手順と、それをカスタマイズする方法について説明します。

開発環境を構築してない場合は、5章開発環境の準備を参照して作業用 PC に開発環境を構築してください。

より詳細な開発手順については「Atmark-Dist 開発者ガイド」を参照してください。

以下の例では、ホームディレクトリ(~/)以下のディレクトリで作業を行います。

[警告]

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

7.1. カーネルイメージとユーザーランドイメージのビルド

ここでは、ソースコードベースのディストリビューションである Atmark-Dist と、Linux カーネルのソースコードから、ユーザーランドとカーネルのイメージを作成する手順について説明します。

7.1.1. ソースコードの準備

まず最初に、ソースコードを取得します。イメージを作成するために、Atmark-DistとLinuxカーネルのソースコードを取得します。また、Armadillo-WLANモジュール(AWL12)を使用する場合はAerialドライバー、Armadillo-WLANモジュール(AWL13)を使用する場合はAWL13ドライバーを取得します。

7.1.1.1. Atmark-Dist

付属 DVD の Atmark-Dist ソースアーカイブディレクトリ (source/dist) にある atmark-dist-[version].tar.gz を作業ディレクトリに展開します。

展開後、Atmark-Dist にカーネルソースを登録します。図7.1「ソースコード準備(Atmark-Dist)」のように作業してください。

[PC ~]$ tar zxvf linux-[version].tar.gz
[PC ~]$ ls
atmark-dist-[version].tar.gz  atmark-dist-[version]
[PC ~]$ ln -s atmark-dist-[version] atmark-dist

図7.1 ソースコード準備(Atmark-Dist)


7.1.1.2. Linuxカーネル

付属 DVD の Atmark-Dist カーネルソースアーカイブディレクトリ (source/kernel) にある linux-[version].tar.gz を作業ディレクトリに展開します。

展開後、Atmark-Dist にカーネルソースを登録するため、シンボリックリンクを作成します。図7.2「ソースコード準備(Linuxカーネル)」のように作業してください。

[PC ~]$ tar zxvf linux-[version].tar.gz
[PC ~]$ ls
atmark-dist-[version].tar.gz  atmark-dist-[version]
linux-[version].tar.gz  linux-[version]
[PC ~]$ cd atmark-dist
[PC ~/atmark-dist]$ ln -s ../linux-[version] linux-2.6.x

図7.2 ソースコード準備(Linuxカーネル)


7.1.1.3. Aerialドライバー

この手順は、Armadillo-WLANモジュール(AWL12)を使用する場合にのみ必要です。

AWL12を使用するイメージを作成する場合は、カーネルソースの他に、AWL12用のデバイスドライバー(Aerialドライバー)をAtmark-Distに登録する必要があります。

付属 DVD の Aerialドライバーのソースアーカイブディレクトリ (source/awlan_driver) にある aerial-[version].tar.gzを作業ディレクトリに展開します。

展開後、Atmark-DistにAerialドライバーのソースを登録するため、シンボリックリンクを作成します。図7.3「ソースコード準備(Aerialドライバー)」のように作業してください。

[PC ~]$ tar zxvf aerial-[version].tar.gz
[PC ~]$ ls
atmark-dist-[version].tar.gz  atmark-dist-[version]
linux-[version].tar.gz  linux-[version]
aerial-[version].tar.gz  aerial-[version]
[PC ~]$ cd atmark-dist
[PC ~/atmark-dist]$ ln -s ../aerial-[version] aerial

図7.3 ソースコード準備(Aerialドライバー)


7.1.1.4. AWL13ドライバー

この手順は、Armadillo-WLANモジュール(AWL13)を使用する場合にのみ必要です。

AWL13を使用するイメージを作成する場合は、カーネルソースの他に、AWL13用のデバイスドライバー(AWL13ドライバー)をAtmark-Distに登録する必要があります。

付属 DVD の AWL13ドライバーのソースアーカイブディレクトリ (source/awlan_driver) にある awl13-[version].tar.gzを作業ディレクトリに展開します。

展開後、Atmark-DistにAWL13ドライバーのソースを登録するため、シンボリックリンクを作成します。図7.4「ソースコード準備(AWL13ドライバー)」のように作業してください。

[PC ~]$ tar zxvf awl13-[version].tar.gz
[PC ~]$ ls
atmark-dist-[version].tar.gz  atmark-dist-[version]
linux-[version].tar.gz  linux-[version]
awl13-[version].tar.gz  awl13-[version]
[PC ~]$ cd atmark-dist
[PC ~/atmark-dist]$ ln -s ../awl13-[version] awl13

図7.4 ソースコード準備(AWL13ドライバー)


7.1.2. デフォルトコンフィギュレーションの適用

ターゲットとなる Armadillo 用に Atmark-Dist をコンフィギュレーションします。Linux カーネルは Atmark-Dist の管理下にあるため、Atmark-Dist を適切に設定すれば、カーネルのコンフィギュレーションも適切に行われるようになっています。

以下の例のようにコマンドを入力し、コンフィギュレーションを開始します[23]

[PC ~/atmark-dist]$ make config

最初に、使用するボードのベンダー名を尋ねられます。「AtmarkTechno」と入力してください。

[PC ~/atmark-dist]$ make config
config/mkconfig > config.in
#
# No defaults found
#
*
* Vendor/Product Selection
*
*
* Select the Vendor you wish to target
*
Vendor (3com, ADI, Akizuki, Apple, Arcturus, Arnewsh, AtmarkTechno, Atmel, Avnet, Cirrus, Cogent, Conexant, Cwlinux, CyberGuard, Cytek, Exys, Feith, Future, GDB, Hitachi, Imt, Insight, Intel, KendinMicrel, LEOX, Mecel, Midas, Motorola, NEC, NetSilicon, Netburner, Nintendo, OPENcores, Promise, SNEHA, SSV, SWARM, Samsung, SecureEdge, Signal, SnapGear, Soekris, Sony, StrawberryLinux, TI, TeleIP, Triscend, Via, Weiss, Xilinx, senTec) [SnapGear] (NEW) AtmarkTechno

次にプロダクト名を尋ねられます。表7.1「プロダクト名一覧」から、使用する製品に対応するプロダクト名を入力してください。

表7.1 プロダクト名一覧

製品プロダクト名備考
Armadillo-420 ベーシックモデルArmadillo-420出荷時イメージ
Armadillo-420 WLANモデル(AWL12対応)Armadillo-420.WLAN-AWL12出荷時イメージ
Armadillo-420 WLANモデル(AWL13対応)Armadillo-420.WLAN-AWL13出荷時イメージ
Armadillo-440 液晶モデルArmadillo-440出荷時イメージ
Armadillo-460 ベーシックモデルArmadillo-460出荷時イメージ

以下は、Armadillo-440 の例です。

*
* Select the Product you wish to target
*
AtmarkTechno Products (Armadillo-210.Base, Armadillo-210.Recover, Armadillo-220.Base, Armadillo-220.Recover, Armadillo-230.Base, Armadillo-230.Recover, Armadillo-240.Base, Armadillo-240.Recover, Armadillo-300, Armadillo-420, Armadillo-420.WLAN-AWL12, Armadillo.WLAN-AWL13, Armadillo-440, Armadillo-460, Armadillo-500, Armadillo-500-FX.base, Armadillo-500-FX.dev, Armadillo-9, Armadillo-9.PCMCIA, SUZAKU-V.SZ310, SUZAKU-V.SZ310-SID, SUZAKU-V.SZ310-SIL, SUZAKU-V.SZ310-SIL-GPIO, SUZAKU-V.SZ410, SUZAKU-V.SZ410-SID, SUZAKU-V.SZ410-SIL, SUZAKU-V.SZ410-SIL-GPIO, SUZAKU-V.SZ410-SIV) [Armadillo-210.Base] (NEW) Armadillo-440

ビルドする開発環境を尋ねられます。「default」と入力してください。Armadillo-400 シリーズでは、「default」と入力すると、armel (EABI)の開発環境が選択されます。

*
* Kernel/Library/Defaults Selection
*
*
* Kernel is linux-2.6.x
*
Cross-dev (default, arm-vfp, arm, armel, armnommu, common, h8300, host, i386, i960, m68knommu, microblaze, mips, powerpc, sh) [default] (NEW) default

ビルドする libc を指定します。Armadillo-400 シリーズでは「None」を選択してください。「None」を選択することで、開発環境にインストールされているビルド済みの libc (glibc) を使用します。

Libc Version (None, glibc, uC-libc, uClibc) [uClibc] (NEW) None

既定の設定にするかどうか質問されます。「y」(Yes)を選択してください。

Default all settings (lose changes) (CONFIG_DEFAULTS_OVERRIDE) [N/y/?] (NEW) y

最後の3つの質問は「n」(No)と答えてください。

Customize Kernel Settings (CONFIG_DEFAULTS_KERNEL) [N/y/?] n
Customize Vendor/User Settings (CONFIG_DEFAULTS_VENDOR) [N/y/?] n
Update Default Vendor Settings (CONFIG_DEFAULTS_VENDOR_UPDATE) [N/y/?] n

設定の入力が完了するとビルドシステムに反映されてコンフィギュレーションが行われ、プロンプトに戻ります。

7.1.3. ビルド

ビルドするには、atmark-dist ディレクトリで図7.5「Atmark-Dist のビルド」のようにコマンドを実行します。ビルドが完了すると、atmark-dist/images ディレクトリにイメージファイルが作成されます。romfs.img がユーザーランドの、linux.bin がカーネルのイメージです。romfs.img.gzlinux.bin.gz はそれぞれのファイルを圧縮したものです。

[PC ~/atmark-dist]$ make
	:
	:
[PC ~/atmark-dist]$ ls images
linux.bin  linux.bin.gz  romfs.img  romfs.img.gz

図7.5 Atmark-Dist のビルド


作成されたイメージは、6章フラッシュメモリの書き換え方法の手順に従って、ターゲットの Armadillo に書き込むことができます。通常は、フラッシュメモリの使用容量を少なくするため、圧縮イメージを書き込みます。

7.1.4. イメージをカスタマイズする

Atmark-Dist には、様々なアプリケーションやライブラリが含まれており、コンフィギュレーションによってそれらをイメージに含めたり、イメージから削除することができます。また、カーネルのコンフィギュレーションの変更を行うこともできます。

Atmark-Dist のコンフィギュレーションを変更するには、make menuconfig コマンドを使用します。

[PC ~/atmark-dist]$ make menuconfig

図7.6 Atmark-Dist のコンフィギュレーション


make menuconfigを実行すると、図7.7「menuconfig: Main Menu」に示すMain Menu画面が表示されます。

menuconfig: Main Menu

図7.7 menuconfig: Main Menu


キーボードの上下キーでフォーカスをKernel/Library/Defaults Selection --->に合わせ、Enterキーを押すと、Kernel/Library/Defaults Selection画面が表示されます。

menuconfig: Kernel/Library/Defaults Selection

図7.8 menuconfig: Kernel/Library/Defaults Selection


カーネルコンフィギュレーションを変更するには、Cuntomize Kernel Settingsを選択してください。また、ユーザーランドに含めるアプリケーションやライブラリを変更するには、Customize Vendor/User Settingsを選択してください。ここでいう、"選択する"とは、上下キーで選択したい項目ににフォーカスを合わせ、スペースキーを一度押し、*印を付けることを言います。

項目を選択したら、キーボードの左右キーでExitにフォーカスを合わせ、Enterキーを押してください。そうすることで、Kernel/Library/Defaults Selection画面を抜け、Main Menu画面へ戻ります。

Main Menu画面でも、Exitにフォーカスを合わせ、Enterキーを押してください。すると、Do you wish to save your new kernel configuration?と表示されますので、Yesにフォーカスを合わせたまま、Enterキーを押してください。

menuconfig: Do you wish to save your new kernel configuration?

図7.9 menuconfig: Do you wish to save your new kernel configuration?


Cuntomize Kernel Settingsを選択していた場合は、Linux Kenrel Configuration画面が表示されます。ここで、カーネルコンフィギュレーションを変更することができます。コンフィギュレーションが完了したら、Linux Kernel Configuration画面でExitにフォーカスを当ててEnterキーを押し、画面を抜けてください。

menuconfig: Linux Kernel Configuration

図7.10 menuconfig: Linux Kernel Configuration


[ティップ]AWL12またはAWL13を使用するためのコンフィギュレーション変更について

Armadillo-420/440/460のプロダクトを選択した場合に、Armadillo-WLAN(AWL12またはAWL13)を使用するには、以下のカーネルコンフィギュレーションを有効にします。

System Type  --->
  Freescale MXC Implementations  --->
    MX25 Options  --->
      Device Options  --->
        [*] Enable eSDHC2
    Armadillo-400 Board options  --->
      [*] Enable SDHC2 at CON9
      [*]   Enable PWREN for SDHC2 at CON9_1
Device Drivers  --->
  Voltage and Current regulators  --->
    <*> Voltage and Current Regulator Support

図7.11 AWLANの有効化


Customize Vendor/User Settingsを選択していた場合は、Userland Configuration画面が表示されます。ここで、ユーザーランドに含めるアプリケーションやライブラリを選択することができます。選択が完了したら、Userland Configuration画面でExitにフォーカスを当ててEnterキーを押し、画面を抜けてください。

menuconfig: Userland Configuration

図7.12 menuconfig: Userland Configuration


再び、Do you wish to save your new kernel configuration?と表示されますので、Yesにフォーカスを合わせたまま、Enterキーを押してください。

以上で、コンフィギュレーションの変更は完了です。

make menuconfig を使用したコンフィギュレーション方法の詳細については、「Atmark-Dist 開発者ガイド」を参照してください。

コンフィギュレーションを行ったあとは、「ビルド」の手順と同様に、make コマンドを実行すると、コンフィギュレーション結果を反映したイメージが作成されます。

7.1.5. ユーザーランドイメージにアプリケーションを追加する

ここでは、「カーネルイメージとユーザーランドイメージのビルド」で作成したユーザーランドに、自作のアプリケーションなど Atmark-Dist には含まれないファイルを追加する方法について説明します。

自作アプリケーションは、Out-Of-Tree コンパイル[24]で作成し、~/sample/hello にあると仮定とします。

Atmark-Dist では、romfs ディレクトリにユーザーランドイメージに含めるファイルが置かれています。ここに自作アプリケーションを追加し、make image コマンドを実行することで、自作アプリケーションを含んだユーザーランドイメージを作成することができます。

[PC ~/atmark-dist]$ cp ~/sample/hello romfs/bin/
[PC ~/atmark-dist]$ make image
	:
	:
[PC ~/atmark-dist]$ ls images
linux.bin  linux.bin.gz  romfs.img  romfs.img.gz

図7.13 ユーザーランドイメージのカスタマイズ


作成されたユーザーランドイメージの /bin ディレクトリには、hello がインストールされています。

7.2. ブートローダーイメージのビルド

ここでは、Hermit-At ブートローダーのイメージをソースコードからビルドする手順について説明します。ソースコードのバージョンは、v2.0.0 以降を使用します。

7.2.1. ソースコードの準備

付属 DVD の source/bootloader にある hermit-at-[version]-source.tar.gz を作業ディレクトリに展開します。図7.14「Hermit-At ソースアーカイブの展開」のように作業してください。

[PC ~]$ tar zxvf hermit-at-[version]-source.tar.gz
[PC ~]$ ln -s hermit-at-[version] hermit-at
[PC ~]$ cd hermit-at
[PC ~/hermit-at]$

図7.14 Hermit-At ソースアーカイブの展開


7.2.2. ビルド

Hermit-At v2.0.0 以降では、製品ごとに標準の設定が defconfig として用意されています。出荷イメージと同じイメージをビルドするには、図7.15「Hermit-At ビルド例」のようにコマンドを実行してください。

[PC ~/hermit-at]$ make armadillo4x0_defconfig
[PC ~/hermit-at]$ make
    :
    :
[PC ~/hermit-at]$ ls src/target/armadillo4x0/*.bin
loader-armadillo4x0-[version].bin

図7.15 Hermit-At ビルド例


loader-armadillo4x0-[version].bin が作成されたブートローダーイメージです。

Hermit-At v2.0.0 以降では、Atmark-Dist と同様に make menuconfig でのコンフィギュレーションに対応しています。コンフィギュレーションを変更することにより、コマンドの追加/削除や、動作の変更を行うことができます。



[23] ここでは、CUI でのコンフィギュレーション方法を説明しています。Atmark-Dist ではメニュー形式でのコンフィギュレーションも可能です。詳しくは「Atmark-Dist 開発者ガイド」をご参照ください。

[24] Out-Of-Tree コンパイルに関しては「Atmark-Dist 開発者ガイド」を参照してください