第7章 ビルド

この章では、ソースコードからデフォルトイメージを作成する手順を説明します。以下の例では、作業ディレクトリとしてホームディレクトリ(~/)を使用していきます。

[警告]

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

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

ここでは、付属CDに収録されているデフォルトイメージを作成してみます。開発環境を構築してない場合は、5章開発環境の準備を参照して作業用PCに開発環境を構築してください。

7.1.1. ソースコードの準備

付属CDのsource/distにあるatmark-dist.tar.gzsource/kernelにあるlinux.tar.gzを作業ディレクトリに展開します。展開後、atmark-distにカーネルソースを登録します。図7.1「ソースコード準備」のように作業してください。

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

図7.1 ソースコード準備


7.1.2. コンフィグレーション

ターゲットボード用のdistをコンフィグレーションします。以下の例のようにコマンドを入力し、コンフィグレーションを開始します。

[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-210Armadillo-210.Base 
Armadillo-210.Recover出荷時イメージ
Armadillo-220Armadillo-220.Base 
Armadillo-220.Recover出荷時イメージ
Armadillo-230Armadillo-230.Base 
Armadillo-230.Recover出荷時イメージ
Armadillo-240Armadillo-240.Base 
Armadillo-240.Recover出荷時イメージ
Armadillo-9Armadillo-9出荷時イメージ
Armadillo-9.PCMCIA 
Armadillo-300Armadillo-300出荷時イメージ
Armadillo-500Armadillo-500出荷時イメージ
Armadillo-500 FXArmadillo-500-FX.dev出荷時イメージ

以下は、Armadillo-210.Baseの例です。

*
* 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-500, Armadillo-500-FX.dev, Armadillo-9, Armadillo-9.PCMCIA, SUZAKU-V.SZ310, SUZAKU-V.SZ310-SIL, SUZAKU-V.SZ410, SUZAKU-V.SZ410-SIL) [Armadillo-210.Base] (NEW) Armadillo-210.Base

ビルドする開発環境を聞かれます。「default」と入力してください。

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

使用するCライブラリを指定します。「None」を選択してください。

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.2「ビルド」のようにコマンドを実行します。ビルドが完了すると、atmark-dist/imagesディレクトリにlinux.bin.gzromfs.img.gzが作成されます。

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

図7.2 ビルド


7.2. ユーザーランドイメージをカスタマイズする

自作のアプリケーションを/binに追加したユーザーランドイメージの作成方法について説明します。ここでは、「カーネルイメージとユーザーランドイメージのビルド」が完了している前提で説明します。

自作アプリケーションは、~/sample/helloにある仮定とします。

[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.3 ユーザーランドイメージのカスタマイズ


できたromfs.img及びromfs.img.gz/binには、helloがインストールされています。

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

7.3.1. ソースコードの準備

付属CDのsource/bootloaderにあるhermit-at-[version]-source.tar.gzを作業ディレクトリに展開します。図7.4「ソースコード展開例」のように作業してください。

[PC ~]$ tar zxvf hermit-at-[version]-source.tar.gz

図7.4 ソースコード展開例


7.3.2. ビルド

ビルドオプションにTARGETとPROFILEを指定します。製品毎にパラメータが異なりますので、表7.2「ビルドオプション一覧」を参照してください。

また、生成されるイメージファイル名はloader-[TARGET]-[PROFILE].bin(PROFILEが未指定の場合はloader-[TARGET].bin)になります。

表7.2 ビルドオプション一覧

製品TARGETPROFILE説明

Armadillo-210

Armadillo-220

Armadillo-230

Armadillo-240

armadillo2x0指定なしhermitコンソールにシリアルインターフェース1を使用。
eth

出荷時イメージ。

hermitコンソールにシリアルインターフェース1を使用。

tftpによるフラッシュメモリ書き換えが可能。

ttyAM1hermitコンソールにシリアルインターフェース2を使用。
nottyhermitコンソールにシリアルインターフェースを使用しない。
bootShoehorn-Atで使用。
boot-eth

Shoehorn-Atで使用。

LAN経由でのフラッシュメモリ書き換えが可能。

Armadillo-9armadillo9指定なし

出荷時イメージ。

hermitコンソールにシリアルインターフェース1を使用。

eth

hermitコンソールにシリアルインターフェース1を使用。

tftpによるフラッシュメモリ書き換えが可能。

ttyAM1hermitコンソールにシリアルインターフェース2を使用。
nottyhermitコンソールにシリアルインターフェースを使用しない。
bootShoehorn-Atで使用。
boot-eth

Shoehorn-Atで使用。

LAN経由でのフラッシュメモリ書き換えが可能。

Armadillo-300armadillo3x0指定なしhermitコンソールにシリアルインターフェース2を使用。
eth

出荷時イメージ。

hermitコンソールにシリアルインターフェース2を使用。

tftpによるフラッシュメモリ書き換えが可能。

ttyAM1hermitコンソールにシリアルインターフェース1を使用。
nottyhermitコンソールにシリアルインターフェースを使用しない。
bootShoehorn-Atで使用。
boot-eth

Shoehorn-Atで使用。

LAN経由でのフラッシュメモリ書き換えが可能。

Armadillo-500

Armadillo-500 FX

armadillo5x0指定なし[a]Armadillo-500開発ボード用のイメージ。
400mhz[b]

Armadillo-500開発ボード用のイメージ。

CPUコアクロックのデフォルト値を400MHzに設定。

fx[a]Armadillo-500 FX液晶モデル用のイメージ。
fx-400mhz[b]

Armadillo-500 FX液晶モデル用のイメージ。

CPUコアクロックのデフォルト値を400MHzに設定。

boot[a]Shoehorn-Atで使用。
zero[a]Armadillo-500 CPUモジュール単体用のイメージ。

[a] CPUコアクロックのデフォルト値は最高値に設定されます。CPUコアクロックの最高値はArmadillo-500 CPUモジュールに搭載されているFreescale社製i.MX31/i.MX31Lのシリコンリビジョンによって異なります。詳しくは「Armadillo-500 ハードウェアマニュアル」を参照してください。

[b] hermit-at v1.1.22以降で指定可能。


例えば、Armadillo-210(PROFILE=指定なし)の場合図7.5「ビルド例1」のように実行します。

[PC ~]$ cd hermit-at-[version]
[PC ~/hermit-at]$ make TARGET=armadillo2x0
    :
    :
[PC ~/hermit-at]$ ls src/target/armadillo2x0/*.bin
loader-armadillo2x0.bin

図7.5 ビルド例1


同様に、Armadillo-500 FXの場合図7.6「ビルド例2」のように実行します。

[PC ~]$ cd hermit-at-[version]
[PC ~/hermit-at]$ make TARGET=armadillo5x0 PROFILE=fx
    :
    :
[PC ~/hermit-at]$ ls src/target/armadillo5x0/*.bin
loader-armadillo5x0-fx.bin

図7.6 ビルド例2