bc10
概要 †2010/09/22
bc10 用OpenEmbeddedビルド環境作成手順 †Ubuntu 10.04 を使って、the Angstrom Distribution の Building Angstrom の手順に従ってビルド環境用の設定をします。 Ubuntu 10.04 開発環境 †
Ubuntu デフォルトの sh は dash なので以下のコマンドを実行し bash に変更します。
$ sudo dpkg-reconfigure dash 「dash を /bin/sh インストールしますか?」と聞かれるので「No」を選択します。 OEandYourDistro の Debian の項 の通りに build に必要な deb package をインストールします。 $ sudo apt-get install ssh $ sudo apt-get install sed wget cvs subversion git-core \ coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \ gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ \ desktop-file-utils chrpath (一行にすると長いので\(円マークに見えますがバックスラッシュです)で改行しています。) $ sudo apt-get install libxml2-utils xmlto python-psyco docbook
また、Ubuntu 10.04 では bitbake base-image 実行時に expat-2.0.1.tar.gz で
DATA-CRC Errorが発生します。 gzip のバージョン確認 $ gzip --version gzip 1.3.12 1.3.12 なので 1.4 に更新します。 $ wget ftp://ftp.gnu.org/gnu/gzip/gzip-1.4.tar.gz $ tar xvfz gzip-1.4.tar.gz $ cd gzip-1.4 $ ./configure $ make $ sudo make install インストール完了後 version が1.4 になっていることを確認します。 $ gzip --version gzip 1.4 bitbake 環境構築 †bitbake は 組込向け Linux ディストリビューションとして必要な kernel、パッケージ ここでは Building Angstrom に記載されている方法と bc10 用への変更を記載します。
$ cd ~ $ git clone git://gitorious.org/angstrom/angstrom-setup-scripts.git $ cd angstrom-setup-scripts oebb.sh でセットアップ対象のマシン名を指定します。
ここでは beagleboard を指定します。 $ ./oebb.sh config beagleboard 実行後以下のようなメッセージが出ます。 There now is a sourceable script in ~/.oe/enviroment. You can do '. ~/.oe/environment' and run 'bitbake something' without using ./oebb.sh as wrapper Setup for beagleboard completed oebb.sh update を実行し OE と bitbake のファイルをダウンロードします。 $ ./oebb.sh update ここで 実行最後に以下のようなエラーがでますが、ビルド自体には問題ありません。 fatal: git checkout: branch org.openembedded.dev already exists (注)stable/2009 branch は2010年11月以降 ビルドシステム自体に大きな変更が加えられたためstable/2009 ブランチでの
$ cd ~/angstrom-setup-scripts/build/conf $ vi local.conf BB_NUMBER_THREADS = "2" DISTRO = "angstrom-2008.1" MACHINE ?= "beagleboard" # Set TMPDIR instead of defaulting it to /tmp TMPDIR = "/home/beat/angstrom-setup-scripts/build/tmp-angstrom_2008_1" # Don't generate the mirror tarball for SCM repos, the snaps hot is enough BB_GENERATE_MIRROR_TARBALLS = "0"
環境設定用ファイル ~/.oe/enviroment を読み込み、beagleboard 用の各PATHが設定が完了します。 $ . ~/.oe/environment
Ubuntu 10.04 では bitbake 実行時 qemu-arm のビルドで vm/mmap_min_addr の値を0 にしないとビルドエラーを起こします。 $ MACHINE=beagleboard bitbake base-image FATAL: Openembedded's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker (see sanity.conf). Following is the list of potential problems / advisories: /proc/sys/vm/mmap_min_addr is not 0. This will cause problems with qemu so please fix the value (as root). To fix this in later reboots, set vm.mmap_min_addr = 0 in /etc/sysctl.conf. Wikiの[SOLVED - update 2010-05]の項目 に書かれている方法 a)またはb) にてmmap_min_addr の値を 0に設定します。 $ sudo -s a) # echo 0 > /proc/sys/vm/mmap_min_addr # cat /proc/sys/vm/mmap_min_addr 0 b) # sysctl -w vm.mmap_min_addr=0 Angstrom イメージ作成 1 †bitbake 実行 †
mmap_min_addr の設定完了後、bitbake base-image を実行します。 $ MACHINE=beagleboard bitbake base-image <中略> NOTE: Running task 2909 of 2910 (ID: 18, /home/beat/angstrom-setup-scripts/sources/openembedded/recipes/images/base-image.bb, do_rm_work) NOTE: package base-image-1.0-r0: task do_rm_work: Started NOTE: package base-image-1.0-r0: task do_rm_work: Succeeded NOTE: Running task 2910 of 2910 (ID: 0, /home/beat/angstrom-setup-scripts /sources/openembedded/recipes/images/base-image.bb, do_rm_work_all) NOTE: package base-image-1.0-r0: task do_rm_work_all: Started NOTE: package base-image-1.0-r0: task do_rm_work_all: Succeeded NOTE: Tasks Summary: Attempted 2910 tasks of which 2822 didn't need to be rerun and 0 failed. 上記のように表示されると bitbake base-image の完了です。
bitbake base-image 実行完了後、bitbake console-image を実行します。 $ MACHINE=beagleboard bitbake cosole-image <中略> NOTE: package console-image-1.0-r0: task do_rm_work: Started NOTE: package console-image-1.0-r0: task do_rm_work: Succeeded NOTE: Running task 2892 of 2892 (ID: 0, /home/beat/angstrom-setup-scripts /sources/openembedded/recipes/images/console-image.bb, do_rm_work_all) NOTE: package console-image-1.0-r0: task do_rm_work_all: Started NOTE: package console-image-1.0-r0: task do_rm_work_all: Succeeded NOTE: Tasks Summary: Attempted 2892 tasks of which 2854 didn't need to be rerun and 0 failed. 上記のように表示されると bitbake console-image の完了です。
作成されたイメージファイルは beat@bc10-oedev:~/angstrom-setup-scripts/build/tmp-angstrom_2008_1/deploy/glibc /images/beagleboard$ ls Angstrom-base-image-glibc-ipk-2009.X-stable-beagleboard-testlab Angstrom-base-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2 Angstrom-console-image-glibc-ipk-2009.X-stable-beagleboard-testlab Angstrom-console-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2 base-image-beagleboard.tar.bz2 base-image-beagleboard.ubi console-image-beagleboard.tar.bz2 console-image-beagleboard.ubi modules-2.6.29-r46-beagleboard.tgz u-boot-beagleboard-2009.05+r30+gitrd363f9cb0918a1b6b92e2e20d01543d0c4f53274-r30.bin u-boot-beagleboard.bin uImage-2.6.29-r46-beagleboard.bin uImage-beagleboard.bin ubinize.cfg 環境変数設定 †bitbake で使用した toolchain で bc10 用の x-loader、u-boot、bc10-rowboat-kernel をビルドします。 beat@bc10-oedev:~/angstrom-setup-scripts/build/tmp-angstrom_2008_1/cross/armv7a/bin$ ls arm-angstrom-linux-gnueabi-addr2line arm-angstrom-linux-gnueabi-gccbug arm-angstrom-linux-gnueabi-modprobe arm-angstrom-linux-gnueabi-ar arm-angstrom-linux-gnueabi-gcov arm-angstrom-linux-gnueabi-nm arm-angstrom-linux-gnueabi-as arm-angstrom-linux-gnueabi-generate-modprobe.conf arm-angstrom-linux-gnueabi-objcopy arm-angstrom-linux-gnueabi-c++ arm-angstrom-linux-gnueabi-gfortran arm-angstrom-linux-gnueabi-objdump arm-angstrom-linux-gnueabi-c++filt arm-angstrom-linux-gnueabi-gprof arm-angstrom-linux-gnueabi-ranlib arm-angstrom-linux-gnueabi-cpp arm-angstrom-linux-gnueabi-insmod arm-angstrom-linux-gnueabi-readelf arm-angstrom-linux-gnueabi-depmod-2.6 arm-angstrom-linux-gnueabi-insmod.static arm-angstrom-linux-gnueabi-rmmod arm-angstrom-linux-gnueabi-g++ arm-angstrom-linux-gnueabi-ld arm-angstrom-linux-gnueabi-size arm-angstrom-linux-gnueabi-gcc arm-angstrom-linux-gnueabi-lsmod arm-angstrom-linux-gnueabi-strings arm-angstrom-linux-gnueabi-gcc-4.3.1 arm-angstrom-linux-gnueabi-modinfo arm-angstrom-linux-gnueabi-strip 以下のように環境変数を設定します。 $ export PATH=${HOME}/angstrom-setup-scripts/build/tmp-angstrom_2008_1/cross/armv7a/bin:${PATH} $ export ARCH=arm $ export CROSS_COMPILE=arm-angstrom-linux-gnueabi- x-loader ビルド †bc10用 x-loader を取得し ビルドを実行します。 $ cd ~/ $ git clone git://gitorious.org/~bc-dev/x-load-omap3/x-load-bc10.git x-load-bc10 $ cd x-load-bc10 $ git checkout -t -b bc10 origin/bc10 $ make omap3530bc10_config $ make ビルド完了後に x-load.bin が生成されます。
signGP は以下のように使用します。 $ ./signGP x-load.bin 完了後 x-load.bin.ift が生成されます。 SDカードへの配置 1 †この時点で一度 bc10 の boot のために必要なファイル類を SD カードに
コピーします。 U-Bootから起動するOSとしてLinuxを使用することを前提として、最終的にはSDカード内の構成を以下のようにします。
FAT32 パーティション †
1段目のブートローダであるX-Loaderは、SDカード上の配置方法に制限があります。必ず以下のように配置してください。
$ cd ~/bc10/x-load-bc10 $ cp x-load.bin.ift /media/LABEL1/MLO bc10 用の X- Loder ですので以降は更新しません。
$ cd ~/angstrom-setup-scripts/build/tmp-angstrom_2008_1/deploy/glibc/images/beagleboard $ cp u-boot-beagleboard.bin /media/LABEL1/u-boot.bin
$ cp uImage-beagleboard.bin /media/LABEL1/uImage
bc10/rowboat-eclair-dsp と同様に boot.scr を作成します。 $ cd ~ $ vi boot.script if fatload mmc 0 84000000 uImage then echo ***** Kernel: /dev/mmcblk0p1/uImage.bin ***** fi echo ***** RootFS: /dev/mmcblk0p2 ***** setenv bootargs 'mem=88M@0x80000000 mem=128M@0x88000000 androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapfb.video_mode=680x480MR-24@60' bootm 84000000 このファイルを引数に指定して、以下のように mkimage を実行します。 $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n ./boot.script -d ./boot.script ./boot.scr &> /dev/null 生成された boot.scr をSDカードのFATパーティションにコピーします。 $ sudo cp boot.scr /media/LABEL1/ Linux パーティション †以下の3つのファイルを Linux パーティションにコピーします。
$ cd ~/angstrom-setup-scripts/build/tmp-angstrom_2008_1/deploy/glibc/images/beagleboard $ sudo tar xvfj Angstrom-base-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2 -C /media/LABEL2/ $ sudo tar xvfj Angstrom-console-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2 -C /media/LABEL2/ $ sudo tar xvfz modules-2.6.29-r46-beagleboard.tgz -C /media/LABEL2/ Linux の userland の配置が終わりです。
Angstrom イメージ作成 2 †上記が確認できれば、bc10 用にカスタマイズしている u-boot と bc10-rowboat-kernelをビルドします。 u-boot ビルド †bc10用 u-boot を取得しビルドします。 $ cd ~/ $ git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10 $ cd u-boot-bc10 $ git checkout -t -b build origin/build $ make mrproper $ make omap3_bc10_config $ make ビルド完了後 u-boot.bin が生成されます。 bc10-rowboat-kernel ビルド †$ git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel $ cd bc10-rowboat-kernel $ git checkout -t -b bc10-2.6.32-build origin/bc10-2.6.32-build $ make omap3_bc10_defconfig $ make uImage $ make modules ビルド完了後以下のディレクトリにuImage が作成されます。 $ ls ~/bc10-rowboat-kernel/arch/arm/boot/ Image Makefile bootp compressed install.sh uImage zImage modules ビルド †$ cd ~/bc10-rowboat-kernel/ $ mkdir mod_work $ make ARCH=arm DEPMOD=echo INSTALL_MOD_PATH=mod_work modules_install 実行最後に DEPMOD (*注)が表示されます。 DEPMOD 2.6.32-bc10-gdfb6acc (*注) $ arm-angstrom-linux-gnueabi-depmod-2.6 -A -b /home/beat/bc10-rowboat-kernel/mod_work -F ./System.map 2.6.32-bc10-gdfb6acc $ tar cvfz modules-2.6.32-bc10-gdb6acc.gz -C mod_work lib $ ln -s modules-2.6.32-bc10-gdb6acc.gz modules-2.6.32-bc10-gdb6acc.tgz (*注):kernel config で 「Automatically append version informaiton to the version string」を enable に $ git rev-parse --verify HEAD dfb6acc(略)......... またバージョンの値は以下のコマンドで確認できます。 $ make kernelrelease 2.6.32-bc10-gdfb6acc SDカードへの配置 2 †SDカードを再度ビルドマシンにマウントします。 FAT32 パーティション †
以前の u-boot.bin を削除し、u-boot-bc10 の u-boot.binを配置します。 $ rm /media/LABEL1/u-boot.bin $ cd ~/u-boot-bc10/ $ cp u-boot.bin /media/LABEL1/u-boot.bin
同じく以前の Linux Kernel を削除し bc10-rowboat-kernel の uImage を配置します。 $ rm /media/LABEL1/uImage $ cd ~/bc10-rowboat-kernel/arch/arm/boot/ $ cp uImage /media/LABEL1/uImage Linux パーティション †moduleを新たにコピーします。 $ cd ~/bc10-rowboat-kernel/ $ sudo tar xvfz modules-2.6.32-bc10-gdb6acc.tgz -C /media/LABEL2/ 以上で、完了です。
参考 †
更新記録 †2010/05/07 初稿記載。主にOpenEmbedded 構築用の設定までの説明。 |