第7章 ビルド手順

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

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

[警告]

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

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

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

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

  1. アーカイブの展開

    各ソースコードアーカイブを展開します。

    [ATDE ~]$ ls
    atmark-dist-[version].tar.gz  linux-3.14-at[version].tar.gz
    [ATDE ~]$ tar zxf atmark-dist-[version].tar.gz
    [ATDE ~]$ tar zxf linux-3.14-at[version].tar.gz
    [ATDE ~]$ ls
    atmark-dist-[version]         linux-3.14-at[version]
    atmark-dist-[version].tar.gz  linux-3.14-at[version].tar.gz
  2. シンボリックリンクの作成

    Atmark Distに、Linuxカーネルのシンボリックリンクを作成します。

    [ATDE ~]$ cd atmark-dist-[version]
    [ATDE ~/atmark-dist-[version]]$ ln -s ../linux-3.14-at[version] linux-3.x

    以降のコマンド入力例では、各ファイルからバージョンを省略した表記を用います。

  3. AWL13ドライバーの登録

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

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

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

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

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

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


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

    コンフィギュレーションを開始します。ここでは、menuconfigを利用します。

    [ATDE ~/atmark-dist]$ make menuconfig
     atmark-dist v1.45.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 >
  5. ベンダー/プロダクト名の選択

    メニュー項目は、上下キーで移動することができます。下部のSelect/Exit/Helpは左右キーで移動することができます。選択するにはEnterキーを押下します。 "Vendor/Product Selection --->"に移動してEnterキーを押下します。 Vendorには "AtmarkTechno" を選択し、AtmarkTechno Productsには 表7.1「プロダクト名一覧」 から選択します。

    表7.1 プロダクト名一覧

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

     atmark-dist v1.45.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-420) AtmarkTechno Products
    
    
      --------------------------------------------------------------------
    
                        <Select>    < Exit >    < Help >
  6. デフォルトコンフィギュレーションの適用

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

     atmark-dist v1.45.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 >
  7. コンフィギュレーションの終了

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

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

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

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

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

    [ATDE ~/atmark-dist]$ make

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

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

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

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

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

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

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

[ATDE ~/atmark-dist]$ make menuconfig

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


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

 atmark-dist v1.45.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 >

図7.3 menuconfig: Main Menu


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

 atmark-dist v1.45.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 >

図7.4 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キーを押してください。

 atmark-dist v1.45.0 Configuration
------------------------------------------------------------------------


        ----------------------------------------------------------
            Do you wish to save your new kernel configuration?

                            < Yes >      <  No  >

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

	

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


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

 .config - Linux/arm 3.14.36-at4 Kernel Configuration
------------------------------------------------------------------------
                    Linux/arm 3.14.36-at4 Kernel Configuration
  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
  --------------------------------------------------------------------
                -*- Patch physical to virtual translations at runtime
                General setup  --->
            [*] Enable loadable module support  --->
            [*] Enable the block layer  --->
                System Type  --->
                Bus support  --->
                Kernel Features  --->
                Boot options  --->
                CPU Power Management  --->
                Floating point emulation  --->
                Userspace binary formats  --->
                Power management options  --->
            [*] Networking support  --->
                Device Drivers  --->
                File systems  --->
                Kernel hacking  --->
                Security options  --->
            -*- Cryptographic API  --->
                Library routines  --->
            [ ] Virtualization  ----
  --------------------------------------------------------------------
                  <Select>    < Exit >    < Help >    < Save >    < Load >

図7.6 menuconfig: Linux Kernel Configuration


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

Armadillo-420.WLAN-AWL13 以外のプロダクトを選択した場合に、Armadillo-WLAN(AWL13)をSDIOインターフェースで使用するには、以下のカーネルコンフィギュレーションを有効にします。

  System Type  --->
      [*] Freescale i.MX family
            Freescale i.MX support  --->
              *** MX25 platforms: ***
          [*] Support Armadillo-420 platform
                Device options  --->
                    -*- Enable eSDHC2
                Armadillo-400 Board options  --->
                    [*] Enable SDHC2 at CON9
					[*]   Enable PWREN for SDHC2 at CON9_1 

図7.7 Armadillo-WLAN用SDIOインターフェース有効化


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

 atmark-dist v1.45.0 Configuration
------------------------------------------------------------------------
                    Userland Configuration
  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 specific  --->
              Fonts  --->
              Core Applications  --->
              Library Configuration  --->
              Flash Tools  --->
              Filesystem Applications  --->
              Network Applications  --->
              Miscellaneous Applications  --->
              BusyBox  --->
              Tinylogin  --->
              Qt  --->
              X Window System  --->
              MicroWindows  --->
              Games  --->
              Miscellaneous Configuration  --->
              Debug Builds  --->
              ---
              Load an Alternate Configuration File
              Save Configuration to an Alternate File
  --------------------------------------------------------------------

                    <Select>    < Exit >    < Help >

図7.8 menuconfig: Userland Configuration


[ティップ]AWL13を使用する場合のユーザーランドコンフィギュレーション変更について

Armadillo-WLAN(AWL13)を使用するには、ユーザーランドコンフィギュレーションのVendor SpecificArmadillo-WLANを選択してください。

Armadillo-WLAN ProductsでAWL13を選択した場合、使用するインターフェースとして SDIOまたは USBを選択できます。

また、ユーザーランドに組み込むAWL13のファームウェアとして、STA (ステーション)とAP (アクセスポイント)を選択できます。 両方を選択した場合は、どちらのファームウェアを標準で使用するかを、AWL13 Default Mode で指定します。

  Userland Configuration
      Vendor specific  --->
          [*] Armadillo-WLAN
          (AWL13) Armadillo-WLAN Products
          (SDIO) AWL13 Support interface
          --- AWL13 Firmware
          [*] AWL13 Station Mode
          [*] AWL13 Access Point Mode
          (STA) AWL13 Default Mode

図7.9 AWL13を使用する場合のコンフィギュレーション例(SDIOインターフェース、ステーションモード)


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

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

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

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

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

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

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

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

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

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


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

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

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

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

  1. ソースコードの準備

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

    [ATDE ~]$ ls
    hermit-at-[version]-source.tar.gz
    [ATDE ~]$ tar zxf hermit-at-[version]-source.tar.gz
    [ATDE ~]$ ls
    hermit-at-[version]  hermit-at-[version]-source.tar.gz

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

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

    Hermit-Atディレクトリに入り、Armadillo-400 シリーズ用のデフォルトコンフィギュレーションを適用します。ここでは例としてフラッシュメモリ起動用イメージを作成します。デフォルトコンフィグにはarmadillo4x0_defconfigを指定します。UART起動用イメージを作成する場合は、armadillo4x0_boot_defconfigを指定してください。

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

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

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

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

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


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