第11章 ビルド手順

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

使用するソースコードは、開発セット付属のDVDに収録されています。最新版のソースコードは、Armadilloサイトからダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、DVDに収録されているものよりも新しいバージョンがリリースされているかを確認して、最新バージョンのソースコードを利用することを推奨します。

[警告]

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

11.1. Linuxカーネル/ユーザーランドをビルドする

ここでは、ソースコードディストリビューションである「Atmark Dist」と、「Linuxカーネル」のソースコードからイメージファイルを作成する手順を説明します。

手順11.1 Linuxカーネル/ユーザーランドをビルド

  1. ソースコードの準備

    ソースコードを準備します。Atmark DistとLinuxカーネルのソースコードアーカイブを準備し展開します。展開後、Atmark DistにLinuxカーネルのソースコードを登録するために、シンボリックリンクを作成します。

    [ATDE ~]$ ls
    atmark-dist-[version].tar.gz  linux-3.4-at[version].tar.gz
    [ATDE ~]$ tar zxf atmark-dist-[version].tar.gz
    [ATDE ~]$ tar zxf linux-3.4-at[version].tar.gz
    [ATDE ~]$ ls
    atmark-dist-[version]  atmark-dist-[version].tar.gz  linux-3.4-at[version]  linux-3.4-at[version].tar.gz
    [ATDE ~]$ ln -s ../linux-3.4-at[version] atmark-dist-[version]/linux-3.x  1

    1

    シンボリックリンク名は常にlinux-3.xである必要があります。

    [警告]

    Armadillo-840 1GB版に対応した Linuxカーネルは v3.4-at16以降です。

    以降のコマンド入力例では、カーネル・ユーザーランド・ブートローダのソースファイルからバージョンを省略した表記を用います。

  2. コンフィギュレーションの開始

    Atmark Distディレクトリに入り、コンフィギュレーションを行います。ここでは、menuconfigを利用します。

    [ATDE ~]$ cd atmark-dist
    [ATDE ~/atmark-dist]$ make menuconfig
     atmark-dist v1.32.0 Configuration
    ------------------------------------------------------------------------
                                    Main Menu
      Arrow keys navigate the menu.  <Enter> selects submenus --->.
      Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,
      <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.
      Legend: [*] built-in  [ ] excluded  <M> module  < > module capable
      --------------------------------------------------------------------
                    Vendor/Product Selection  --->
                    Kernel/Library/Defaults Selection  --->
                    ---
                    Load an Alternate Configuration File
                    Save Configuration to an Alternate File
    
    
      --------------------------------------------------------------------
    
                        <Select>    < Exit >    < Help >
  3. ベンダー/プロダクト名の選択

    メニュー項目は、上下キーで移動することができます。下部のSelect/Exit/Helpは左右キーで移動することができます。選択するにはEnterキーを押下します。 "Vendor/Product Selection --->"に移動してEnterキーを押下します。 Vendorには "AtmarkTechno" を選択し、AtmarkTechno Productsには "Armadillo-840" を選択します。

     atmark-dist v1.32.0 Configuration
    ------------------------------------------------------------------------
                            Vendor/Product Selection
      Arrow keys navigate the menu.  <Enter> selects submenus --->.
      Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,
      <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.
      Legend: [*] built-in  [ ] excluded  <M> module  < > module capable
      --------------------------------------------------------------------
                    --- Select the Vendor you wish to target
                    (AtmarkTechno) Vendor
                    --- Select the Product you wish to target
                    (Armadillo-840) AtmarkTechno Products
    
    
      --------------------------------------------------------------------
    
                        <Select>    < Exit >    < Help >
  4. デフォルトコンフィギュレーションの適用

    前のメニューに戻るには、"Exit"に移動してEnterキーを押下します。 続いて、"Kernel/Library/Defaults Selection --->"に移動してEnterキーを押下します。"Default all settings (lose changes)"に移動して"Y"キーを押下します。押下すると"[*]"のように選択状態となります。

     atmark-dist v1.32.0 Configuration
    ------------------------------------------------------------------------
                        Kernel/Library/Defaults Selection
      Arrow keys navigate the menu.  <Enter> selects submenus --->.
      Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,
      <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.
      Legend: [*] built-in  [ ] excluded  <M> module  < > module capable
      --------------------------------------------------------------------
                 --- Kernel is linux-3.x
                 (default) Cross-dev
                 (None) Libc Version
                 [*] Default all settings (lose changes) (NEW)
                 [ ] Customize Kernel Settings (NEW)
                 [ ] Customize Vendor/User Settings (NEW)
                 [ ] Update Default Vendor Settings (NEW)
    
      --------------------------------------------------------------------
    
                        <Select>    < Exit >    < Help >
  5. コンフィギュレーションの終了

    前のメニューに戻るため、"Exit"に移動してEnterキーを押下します。コンフィギュレーションを抜けるためにもう一度"Exit"に移動してEnterキーを押下します。

  6. コンフィギュレーションの確定

    コンフィギュレーションを確定させるために"Yes"に移動してEnterキーを押下します。

     atmark-dist v1.32.0 Configuration
    ------------------------------------------------------------------------
    
    
            ----------------------------------------------------------
                Do you wish to save your new kernel configuration?
    
                                < Yes >      <  No  >
    
            ----------------------------------------------------------
    
    	
  7. ビルド

    コンフィギュレーションが完了するので、続いてビルドを行います。 ビルドは"make"コマンドを実行します。

    [ATDE ~/atmark-dist]$ make

    ビルドログが表示されます。 ビルドするPCのスペックにもよりますが、数分から十数分程度かかります。

  8. イメージファイルの生成確認

    ビルドが終了すると、atmark-dist/images/ディレクトリ以下にイメージファイルが作成されています。Armadillo-840では圧縮済みのイメージ(拡張子が".gz"のもの)を利用します。

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

11.1.1. ツールチェーンを変更するには

Armadillo-840では、ARMの2つのアーキテクチャに対応しています。 "armhf" (デフォルト) では、浮動小数点演算にVFPコプロセッサを利用します。 "armel"では、浮動小数点演算に専用のソフトウェアライブラリを利用します。 基本的には"armhf"の方が性能が高く、特に"armel"でなければならない場合以外は"armhf" を利用してください。

[警告]

"armel"アーキテクチャを利用する場合は、SGX540ライブラリを利用することができません。そのため、QtなどのSGX540ライブラリを必要とする機能を利用することができなくなります。

ATDEには、上記2つのアーキテクチャ用のツールチェーン(コンパイラやリンカ、クロスライブラリなど)を用意してあります。

Linuxカーネル及びユーザーランドのアーキテクチャを変更するには、Atmark Distのコンフィギュレーション時に、"Cross-dev"に利用したいアーキテクチャを選択します。次の例では、"armel"を指定している状態となります。"default"となっている場合は、Armadillo-840の場合では"armhf"が選択されます。

 atmark-dist v1.32.0 Configuration
------------------------------------------------------------------------
                    Kernel/Library/Defaults Selection
  Arrow keys navigate the menu.  <Enter> selects submenus --->.
  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,
  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.
  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable
  --------------------------------------------------------------------
             --- Kernel is linux-3.x
             (armel) Cross-dev
             (None) Libc Version
             [*] Default all settings (lose changes) (NEW)
             [ ] Customize Kernel Settings (NEW)
             [ ] Customize Vendor/User Settings (NEW)
             [ ] Customize Vendor/User Settings (NEW)

  --------------------------------------------------------------------

                    <Select>    < Exit >    < Help >

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

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

手順11.2 ブートローダーをビルド

  1. ソースコードの準備

    Hermit-Atのソースコードアーカイブを準備し展開します。展開後、hermit-atディレクトリに移動します。

    [ATDE ~]$ ls
    hermit-at.tar.gz
    [ATDE ~]$ tar zxf hermit-at.tar.gz
    [ATDE ~]$ ls
    hermit-at  hermit-at.tar.gz
    [ATDE ~]$ cd hermit-at
    [警告]

    Armadillo-840 1GB版に対応したブートローダは hermit-at v3.7.0以降です。

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

    Armadillo-840用にコンフィギュレーションを行います。ここでは例としてフラッシュメモリ起動用イメージを作成します。デフォルトコンフィグには"armadillo840_nor_defconfig"を指定します。SDカード起動用イメージを作成する場合は、"armadillo840_mmcsd_defconfig"を指定してください。

    [ATDE ~/hermit-at]$ make armadillo840_nor_defconfig
  3. ビルド

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

    [ATDE ~/hermit-at]$ make
  4. イメージファイルの生成確認

    ビルドが終了すると、hermit-at/src/target/armadillo8x0/ディレクトリ以下にイメージファイルが作成されています。

    [ATDE ~/hermit-at]$ ls src/target/armadillo8x0/loader-armadillo840*.bin
    src/target/armadillo8x0/loader-armadillo840-nor-[version].bin

11.2.1. ツールチェーンを変更するには

Linuxカーネルとユーザーランドのアーキテクチャを変更するのと同様に、ブートローダーもアーキテクチャを変更することができます。ただし、特に動作に影響を与えないため、変更する必要はありません。

ブートローダーのビルド時にアーキテクチャを変更するには、CROSS_COMPILEオプションを利用します。"armel"を指定する場合は、ビルド時に "CROSS_COMPILE=arm-linux-gnueabi-"をつけてビルドしてください。

[ATDE ~/hermit-at]$ make CROSS_COMPILE=arm-linux-gnueabi-