主に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
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はTIのWebページに掲載されているToolchainを取得し使用します。
TIのToolchainを使用する理由についてはToolcahinについてを参照してください。
TIのWebページからToolchainを適当なディレクトリにダウンロードしインストールします。
インストール先を指定しなければ${HOME}/ti-sdk-beagleboard-05.05.01.00
以下に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
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で使用する機能項目でデフォルトのビルド手順(arago-console-image)では
導入されないパッケージは以下の通りです。
bridge-utils dnsmasq dropbear hostap-daemon hostap-utils iperf iproute2 iptables iw ntpclient nuttcp procps openssl u-boot-spl(MLO) wireless-tools
またbitbakeコマンドで導入できるパッケージ一覧を以下のように取得することができます。
導入可能パッケージ量が多いのでlistsというファイルにリダイレクトをしています。
$ bitbake -s > lists
bc10-routerでは不必要なパッケージをビルドしないよう、また上記パッケージを予めビルドするよう
以下のように~/oe/arago/recipes/tasksにあるtask-arago-base.bb、task-arago-console.bbを
編集します。
$ cd arago/recipes/tasks $ vi 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 \
$ vi task-arago-console.bb --- __task-arago-console.bb_orig 2012-12-13 11:00:59.671001552 +0900 +++ task-arago-console.bb 2012-12-13 11:22:55.280933938 +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,22 @@ ARAGO_UTILS = "\ i2c-tools \ iproute2 \ tcpdump \ + bridge-utils \ + dnsmasq \ + dropbear \ + ebtables \ + hostap-daemon \ + hostap-utils \ + iperf \ + iproute2 \ + iptables \ + iw \ + ntpclient \ + nuttcp \ + procps \ + openssl \ + u-boot-spl \ + wireless-tools \ " ARAGO_DVSDK_PREREQ = "\ @@ -61,7 +77,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} \
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以下に
作成されます。そのディレクトリ内に配置されるファイル群は以下の通りです。
またイメージ作成に使用するファイルは
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
です。
$ 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
これまでの設定(u-boot-splを追加)でMLOは作成されていますが、
ti-sdk-beagleboard-05.05.01.00内にあるMLOを使用することも可能です。
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 構成変更、文言修正