[[bc10-router]] #contents * arago-projectについて [#h6fdb282] 主にTIがメンテナンスを行っているOpenEmbedded Linux Projectです。~ TIの評価ボード用のLinux SDKを作成するのにも使われています。~ bc10で動作させるためのビルド環境の構築とビルド手順を記載します。~ * ビルド環境構築手順について [#d3684403] ビルド環境構築に使用するホストOSはUbuntu 10.04(64bit)です。~ 追加パッケージ、設定変更とビルド環境の構築手順について記載します。~ ** 追加導入パッケージ [#oa3a893e] ビルド環境構築のために以下の各パッケージを導入します。~ ssh vim git-core build-essential curl ia32-libs diffstat cvs subversion chrpath texi2html texinfo libncurses5-dev bison flex gettext ** dashからbashへの変更 [#r762cc8b] Ubuntu 10.04のデフォルトshellはdashで、そのままbitbakeを実行するとエラーが起こるため、~ 以下のコマンドを実行しデフォルトshellをbashに変更します。~ $ sudo dpkg-reconfigure dash 「dash を /bin/sh インストールしますか?」と聞かれるので「No」or 「いいえ」を選択します。~ これで sh は bash に変更されます。~ ** ビルド環境構築 [#x3521c9b] 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のインストール [#o4482f6f] ToolchainはTIのWebページに掲載されているToolchainを取得し使用します。~ TIのToolchainを使用する理由については[[Toolcahinについて>http://labs.beatcraft.com/ja/index.php?bc10-router%2Farago-project#nbca35c2]]を参照してください。~ ~ 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について [#nbca35c2] 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用の追加パッケージ設定について [#p73c4624] 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ファイル編集 [#ee60aa75] 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 ~ --- __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 ~ --- __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 --- __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 # 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 = "\ 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 +77,7 @@ ARAGO_DVSDK_PREREQ = "\ 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} \ ${ARAGO_FSTOOLS} ** bc10-routerイメージ作成 [#jf6779c5] arago-console-imageのビルドを行います。~ このarago-console-imageのビルドに最小イメージの~ arago-base-imageのビルドも含まれます。~ ~ CPU:Core i7 2.93GHz,Memory8GBのマシンで ~ 各パッケージのダウンロードを含め上記の設定で約3~4時間かかります。~ (ビルドだけなら約2時間程度かかります)~ $ time bitbake arago-console-image ** ビルド済みイメージ配置ディレクトリ [#s65a9f24] ビルド済みイメージの配置ディレクトリは~/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について [#rf959e90] これまでの設定(u-boot-splを追加)でMLOは作成されていますが、~ ti-sdk-beagleboard-05.05.01.00内にあるMLOを使用することも可能です。 ~ * SDへの書き込み [#rb8f0367] [[bc10/booting 起動用SDカードの作成>http://labs.beatcraft.com/ja/index.php?bc10%2Fbooting#q0449272]]の手順で作成された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完了後にデバイスの認識が始まることがあります。~ その場合は再起動を試みてください。~ * ビルド後のパッケージ追加インストールについて [#idb49be8] 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 * 更新記録 [#w76fe123] 2012/12/14 初稿公開 ~ 2012/12/18 文言修正 ~ 2013/01/07 構成変更、文言修正 ~ 2013/01/16 追加パッケージの更新 ~ RIGHT:syariten