bc10-router

arago-projectについて

主にTIがメンテナンスを行っているOpenEmbedded Linux Projectです。
TIの評価ボード用のLinux SDKを作成するのにも使われています。
bc10で動作させるためのビルド環境の構築とビルド手順を記載します。

ビルド環境構築手順について

ビルド環境構築に使用するホストOSはUbuntu 10.04(64bit)です。
追加パッケージ、設定変更とビルド環境の構築手順について記載します。

追加導入パッケージ

ビルド環境構築のために以下の各パッケージを導入します。

ssh vim git-core build-essential curl ia32-libs diffstat cvs subversion chrpath texi2html texinfo 
libncurses5-dev bison flex gettext

dashからbashへの変更

Ubuntu 10.04のデフォルトshellはdashで、そのままbitbakeを実行するとエラーが起こるため、
以下のコマンドを実行しデフォルトshellをbashに変更します。

$ sudo dpkg-reconfigure dash

「dash を /bin/sh インストールしますか?」と聞かれるので「No」or 「いいえ」を選択します。
これで sh は bash に変更されます。

ビルド環境構築

bc10-router用のarago-projectビルド環境構築について記載します。

Toolchain設定までの手順はarago-projectのWebページに記載されている手順で行います。
大まかな手順はarago-project環境構築に必要なファイルの取得、設定ファイルの編集と
環境変数設定です。

http://arago-project.org/wiki/index.php/Setting_Up_Build_Environment

$ mkdir $HOME/oe
$ cd $HOME/oe
$ git clone git://arago-project.org/git/arago.git
$ git clone git://arago-project.org/git/arago-oe-dev.git
$ git clone git://arago-project.org/git/arago-bitbake.git

設定ファイルのサンプルをコピーします。

$ cp arago/setenv.sample arago/setenv
$ cp arago/conf/local.conf.sample arago/conf/local.conf

コピーしたlocal.confを修正します。
MACHINE指定をbeagleboardに変更します。

$ vi arago/conf/local.conf

@@ -22,9 +22,9 @@ TMPDIR = "${SCRATCH}/arago-tmp"
 # Select the machine platform to build for
 # The default value is "arago", which is a unified armv5te MACHINE
 # to build filesystem images for OMAP3 and DaVinci
-MACHINE ?= "arago"
+# MACHINE ?= "arago"
 # MACHINE = "omap3evm"
-# MACHINE = "beagleboard"
+MACHINE = "beagleboard"
 # MACHINE = "davinci-dvevm"

TOOLCHAIN_BRANDをaragoに変更します。

@@ -32,7 +32,8 @@ MACHINE ?= "arago"
 DISTRO = "arago"

 # What toolchain to use (csl, arago, angstrom etc.)
-TOOLCHAIN_BRAND ?= "csl"
+#TOOLCHAIN_BRAND ?= "csl"
+TOOLCHAIN_BRAND ?= "arago"

並列実行の設定を2に設定します。
(使用環境によって適切な値に設定してください)

@@ -85,6 +86,8 @@ IMAGE_FSTYPES = "jffs2 tar.gz ext2.gz"
 # in the process of marking these so let us know if you find any.
 #PARALLEL_MAKE = "-j 4"
 #BB_NUMBER_THREADS = "4"
+PARALLEL_MAKE = "-j 2"
+BB_NUMBER_THREADS = "2"

arago-projectの環境設定を行います。

$ source arago/setenv

Toolchainのインストール

ToolchainはTIのWebページに掲載されているToolchainを取得し使用します。
TIのToolchainを使用する理由についてはToolcahinについてを参照してください。

TIのWebページからToolchainを適当なディレクトリにダウンロードしインストールします。
インストール先を指定しなければ${HOME}/ti-sdk-beagleboard-05.05.01.00にBeagelBoardSDKがインストールされ、
${HOME}/ti-sdk-beagleboard-05.05.01.00/linux-devkit/以下にToolchainが展開されます。

$ wget http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/sdk/BeagleBoardSDK/latest/exports/ti-sdk-beagleboard-05.05.01.00-Linux-x86-Install
$ chmod +x ti-sdk-beagleboard-05.05.01.00-Linux-x86-Install

consoleでインストールするため --mode consoleオプションを付けて実行します。

$ ./ti-sdk-beagleboard-05.05.01.00-Linux-x86-Install --mode console

インストールしたToolchainのPATHをbashrcの末尾に設定します。

$ vi ${HOME}/.bashrc

PATH=${HOME}/ti-sdk-beagleboard-05.05.01.00/linux-devkit/bin:$PATH
$ source ${HOME}/.bashrc

Toolcahinについて

arago-projectのWebページに記載されている環境構築手順にそってToolchainにCodeSourceryを
選択、使用すると少なくともsysvinitのbuildでエラーが起こります。
http://arago-project.org/wiki/index.php/Setting_Up_Build_Environment

このエラーを回避するpatchも存在しますが、arago-project内部ではCodeSourceryは
使ったことがないとMLで紹介されており、他の箇所でもbuildエラーが発生するため、
本稿ではToolchainはTIのWebからダウンロードしたti-sdk-beagleboard-05.05.01.00を
使用した手順を記載しています。
http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/sdk/BeagleBoardSDK/latest/index_FDS.html

bc10-router用の追加パッケージ設定について

bc10-routerで使用する機能項目でデフォルトのビルド手順(arago-console-image)では
導入されないパッケージは以下の通りです。

bridge-utils
dnsmasq
dropbear
ebtables 
grep 
hostap-daemon
hostap-utils
ifplugd
iperf
iproute2
iptables
iw
ntpclient 
nuttcp 
procps 
openssl
rp-pppoe
u-boot-spl(MLO)
wireless-tools

またbitbakeコマンドで導入できるパッケージ一覧を以下のように取得することができます。
導入可能パッケージ量が多いのでlistsというファイルにリダイレクトをしています。

$ bitbake -s > lists

bc10-router用bbファイル編集

bc10-routerでは不必要なパッケージをビルドしないよう、また上記パッケージを予めビルドするよう
以下のように~/oe/arago/recipes/tasksにあるtask-arago-base.bb、task-arago-console.bbを
編集します。

$ cd arago/recipes/tasks

task-arago-base.bb

--- __task-arago-base.bb_orig   2012-12-13 10:58:06.961625083 +0900
+++ task-arago-base.bb  2012-12-13 10:58:46.651002889 +0900
@@ -8,13 +8,13 @@ inherit task
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""

-ARAGO_ALSA_BASE = "\
-    alsa-lib \
-    alsa-utils-aplay \
-       "
+#ARAGO_ALSA_BASE = "\
+#    alsa-lib \
+#    alsa-utils-aplay \
-#     "

 ARAGO_BASE = "\
-    ${ARAGO_ALSA_BASE} \
+#    ${ARAGO_ALSA_BASE} \
     mtd-utils \
     curl \
     arago-feed-configs \

task-arago-console.bb

--- __task-arago-console.bb_orig  2013-01-16 12:03:46.169805920 +0900
+++ task-arago-console.bb       2013-01-15 20:08:00.067476800 +0900
@@ -5,21 +5,21 @@ PR = "r16"
 inherit task

 # alsa-utils-alsamixer depends on ncurses
-ARAGO_ALSA_EXTRA = "\
-    alsa-conf \
-    alsa-conf-base \
-    alsa-server \
-    alsa-utils \
-    alsa-utils-aconnect \
-    alsa-utils-alsaconf \
-    alsa-utils-alsactl \
-    alsa-utils-alsamixer \
-    alsa-utils-amixer \
-    alsa-utils-iecset \
-    alsa-utils-midi \
-    alsa-utils-speakertest \
-    alsa-state \
-    "
+#ARAGO_ALSA_EXTRA = "\
+#    alsa-conf \
+#    alsa-conf-base \
+#    alsa-server \
+#    alsa-utils \
+#    alsa-utils-aconnect \
+#    alsa-utils-alsaconf \
+#    alsa-utils-alsactl \
+#    alsa-utils-alsamixer \
+#    alsa-utils-amixer \
+#    alsa-utils-iecset \
+#    alsa-utils-midi \
+#    alsa-utils-speakertest \
+#    alsa-state \
+#    "

 ARAGO_TSLIB = "\
     tslib-conf \
@@ -47,6 +47,25 @@ ARAGO_UTILS = "\
     i2c-tools \
     iproute2 \
     tcpdump \
+    bridge-utils \
+    dnsmasq \
+    dropbear \
+    ebtables \
+    grep \
+    hostap-daemon \
+    hostap-utils \
+    ifplugd \
+    iperf \
+    iproute2 \
+    iptables \
+    iw \
+    ntpclient \
+    nuttcp \
+    procps \
+    openssl \
+    rp-pppoe \
+    u-boot-spl \
+    wireless-tools \
     "

 ARAGO_DVSDK_PREREQ = "\
@@ -61,7 +80,7 @@ ARAGO_DVSDK_PREREQ = "\ 

 # cppstub is needed to install libstdc++ in the image
 ARAGO_CONSOLE = "\
-    ${ARAGO_ALSA_EXTRA} \
+#    ${ARAGO_ALSA_EXTRA} \
     ${ARAGO_TSLIB} \
     ${ARAGO_NCURSES} \
     ${ARAGO_FSTOOLS} 

bc10-routerイメージ作成

arago-console-imageのビルドを行います。
このarago-console-imageのビルドに最小イメージの
arago-base-imageのビルドも含まれます。

CPU:Core i7 2.93GHz,Memory8GBのマシンで 
各パッケージのダウンロードを含め上記の設定で約3~4時間かかります。
(ビルドだけなら約2時間程度かかります)

$ time bitbake arago-console-image

ビルド済みイメージ配置ディレクトリ

ビルド済みイメージの配置ディレクトリは~/oe/arago-tmp/deploy/glibc/images/beagleboard以下に
作成されます。そのディレクトリ内に配置されるファイル群は以下の通りです。

$ cd ~/oe/arago-tmp/deploy/glibc/images/beagleboard 
$ ls -l
 lrwxrwxrwx 1 beat beat       29 2012-12-13 13:58 MLO-beagleboard -> MLO-beagleboard-2012.04.01-r0
-rwxr-xr-x 1 beat beat    43468 2012-12-13 13:58 MLO-beagleboard-2012.04.01-r0
lrwxrwxrwx 1 beat beat       64 2012-12-13 14:30 arago-console-image-beagleboard.ext2.gz -> arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.ext2.gz
lrwxrwxrwx 1 beat beat       62 2012-12-13 14:29 arago-console-image-beagleboard.jffs2 -> arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.jffs2
lrwxrwxrwx 1 beat beat       64 2012-12-13 14:30 arago-console-image-beagleboard.tar.bz2 -> arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.bz2
lrwxrwxrwx 1 beat beat       63 2012-12-13 14:29 arago-console-image-beagleboard.tar.gz -> arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.gz
lrwxrwxrwx 1 beat beat       60 2012-12-13 14:30 arago-console-image-beagleboard.ubi -> arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.ubi
drwxr-xr-x 2 beat beat     4096 2012-12-13 14:31 arago-console-image-glibc-ipk-2011.09-beagleboard-testlab
-rw-r--r-- 1 beat beat 20488760 2012-12-13 14:29 arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.ext2.gz
-rw-r--r-- 1 beat beat 26935296 2012-12-13 14:29 arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.jffs2
-rw-r--r-- 1 beat beat 17672000 2012-12-13 14:30 arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.bz2
-rw-r--r-- 1 beat beat 19988817 2012-12-13 14:29 arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.gz
-rw-r--r-- 1 beat beat 34603008 2012-12-13 14:30 arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.ubi
-rw-r--r-- 1 beat beat 33804288 2012-12-13 14:30 arago-console-image-glibc-ipk-2011.09-beagleboard.ubifs.img
-rw-r--r-- 1 beat beat  9637520 2012-12-13 14:24 modules-3.3.7-r115-beagleboard.tgz
drwxr-xr-x 2 beat beat     4096 2012-12-13 14:30 tmp.gz
-rwxr-xr-x 1 beat beat   336080 2012-12-13 14:00 u-boot-beagleboard-2012.04.01-r3.0.img
lrwxrwxrwx 1 beat beat       38 2012-12-13 14:00 u-boot-beagleboard.img -> u-boot-beagleboard-2012.04.01-r3.0.img
-rw-r--r-- 1 beat beat  3425936 2012-12-13 14:24 uImage-3.3.7-r115-beagleboard.bin
lrwxrwxrwx 1 beat beat       33 2012-12-13 14:24 uImage-beagleboard.bin -> uImage-3.3.7-r115-beagleboard.bin
-rw-r--r-- 1 beat beat      218 2012-12-13 14:30 ubinize.cfg
uImage-beagleboard.bin
ubinize.cfg

このうちで今回のイメージ作成に使用するファイルは

MLO-beagleboard-2012.04.01-r0
arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.gz
u-boot-beagleboard-2012.04.01-r3.0.img
uImage-3.3.7-r115-beagleboard.bin

です。

MLOについて

これまでの設定(u-boot-splを追加)でMLOは作成されていますが、
ti-sdk-beagleboard-05.05.01.00内にあるMLOを使用することも可能です。

SDへの書き込み

bc10/booting 起動用SDカードの作成の手順で作成されたSDカードを
使用する前提で記載しています。FAT32、Ext3それぞれのディレクトリ名は
/media/FAT,/media/EXT3とします。

上記までで作成したファイルをそれぞれのディレクトリにコピー、展開をします。

$ cp MLO-beagleboard-2012.04.01-r0 /media/FAT/MLO
$ cp u-boot-beagleboard-2012.04.01-r3.0.img /media/FAT/u-boot.img
$ cp uImage-3.3.7-r115-beagleboard.bin /media/FAT/uImage
$ sudo tar xvfz arago-console-image-glibc-ipk-2011.09-beagleboard.rootfs.tar.gz -C /media/EXT3

uboot用環境設定ファイルuEnv.txtを作成し/media/FAT以下に配置します。
uEnv.txtの内容は以下のとおりです。

mmcroot=/dev/mmcblk0p2 rw
uenvcmd=run loaduimagefat; run mmcboot

今回のハードウェア構成で使用しているWLI-UC-AG300Nを動作させるため
firmware(ra2800usb)をralinkのサイトからダウンロードする必要があります。
http://www.ralinktech.com/en/04_support/license.php?sn=5030 

適当なディレクトリにダウンロードしたRT2870_Firmware_V22.zipを展開すると
LICENSE.ralink-firmware.txt,rt2870.binがあります。
それらを/media/EXT3/lib/firmware以下に配置します。

$ unzip RT2870_Firmware_V22.zip
$ cd RT2870_Firmware_V22
$ ls 
LICENSE.ralink-firmware.txt  rt2870.bin
$ sudo cp * /media/EXT3/lib/firmware/

以上で、SDへの書き込みは完了です。
初回起動時はboot完了まで若干時間がかかり、USB機器の認識に 
失敗することがあります。またboot完了後にデバイスの認識が始まることがあります。
その場合は再起動を試みてください。

ビルド後のパッケージ追加インストールについて

bitbake arago-console-image完了後、bitbakeに含まれているパッケージを
追加でビルド、インストールする手順について記載します。
ここでは例としてvimを追加でビルド、インストールする手順を記載します。
bitbake vim実行後arago-tmp/deploy/glibc/ipk/armv7a以下に
vim_7.2-r8.3.6_armv7a.ipkファイルが作成されます。

$ cd ~/oe
$ bitbake vim
NOTE: Handling BitBake files: / (7722/7722) [100 %]
Parsing of 7722 .bb files complete (7256 cached, 466 parsed). 7962 targets, 408 skipped, 585 masked, 0 errors.

Build Configuration:
BB_VERSION        = "1.10.2"
METADATA_BRANCH   = "master"
METADATA_REVISION = "9e4a18d"
TARGET_ARCH       = "arm"
TARGET_OS         = "linux-gnueabi"
MACHINE           = "beagleboard"
DISTRO            = "angstrom"
DISTRO_VERSION    = "2011.09"
TARGET_FPU        = "hard"
...<略>
Packaged contents of vim-dev into /home/syariten/oe/arago-tmp/deploy/glibc/ipk/armv7a/vim-dev_7.2-r8.3.6_armv7a.ipk
NOTE: Not creating empty archive for vim-static-7.2-r8.3.6
NOTE: Not creating empty archive for vim-locale-7.2-r8.3.6
NOTE: package vim-7.2-r8.3: task do_package_write_ipk: Succeeded
NOTE: Running task 525 of 528 (ID: 5, /home/syariten/oe/arago-oe-dev/recipes/vim/vim_7.2.bb, do_package_write)
NOTE: package vim-7.2-r8.3: task do_package_write: Started
NOTE: package vim-7.2-r8.3: task do_package_write: Succeeded
NOTE: Running task 526 of 528 (ID: 6, /home/syariten/oe/arago-oe-dev/recipes/vim/vim_7.2.bb, do_package_stage)
NOTE: package vim-7.2-r8.3: task do_package_stage: Started
NOTE: package vim-7.2-r8.3: task do_package_stage: Succeeded
NOTE: Running task 527 of 528 (ID: 7, /home/syariten/oe/arago-oe-dev/recipes/vim/vim_7.2.bb, do_package_stage_all)
NOTE: package vim-7.2-r8.3: task do_package_stage_all: Started
NOTE: package vim-7.2-r8.3: task do_package_stage_all: Succeeded
NOTE: Running task 528 of 528 (ID: 9, /home/syariten/oe/arago-oe-dev/recipes/vim/vim_7.2.bb, do_build)
NOTE: package vim-7.2-r8.3: task do_build: Started
NOTE: package vim-7.2-r8.3: task do_build: Succeeded
NOTE: Tasks Summary: Attempted 528 tasks of which 510 didn't need to be rerun and 0 failed.
$ cd arago-tmp/deploy/glibc/ipk/armv7a

vim_7.2-r8.3.6_armv7a.ipkをbc10へSDカードへコピーもしくは
ネットワーク経由でコピーを行い、ipkファイルを置いたbc10上のディレクトリで
実行するとvimがインストールされます。

# opkg install vim_7.2-r8.3.6_armv7a.ipk
Installing vim (7.2-r8.3.6) to root...
vim: unsatisfied recommendation for diffutils
Configuring vim.
update-alternatives: Linking //bin/vi to /usr/bin/vim

更新記録

2012/12/14 初稿公開
2012/12/18 文言修正
2013/01/07 構成変更、文言修正
2013/01/16 追加パッケージの更新

syariten

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-01-16 (水) 12:11:16 (4117d)