[[bc9/bc9-oe-sdk]] bc9-oe-sdk setup -version --bc9-oe-sdk--release20090801 #contents * Vmware [#p80852e6] bc9-oe-sdk での Vmware イメージの設定を記述します。~ -Version:6.5互換 -Disk 容量:仮想ディスク20G(2Gごとに分割の設定) -CPU数:cpu 1 -memory:512M --VMイメージの memory、cpu を増やしたい場合は、bc9-android-sdk--release20090801.vmx(VMware 仮想マシン構成ファイル)の memsize、numvcpus を編集して増やしてください) -Network:bridge network -OS --Ubuntu 8.04.3 LTS(8.04.2LTSでインストール後 update) --アプリケーションは以下の変更以外はインストール後の default のまま --gnome-games ほか game 関連は削除します。(容量削減のため) ---sudo apt-get remove gnome-cards-data gnome-games gnome-games-data libggzmod4 --ssh、ntp、vim、lv、nautilus-open-terminal、adobe falsh 10、adobe acroread 追加インストール --vmware-tools インストール済みです。 --default 解像度 1280x768に設定しています。 --network は dhcp でアドレスを取得する設定です。 --作業用に作成してある user は beat、beat の password は beatcraft です。 * gumstix-oe [#t72a21c2] -/bin/sh のシンボリックリンクが dash になっているので bash に変更します。(bitbake の build 時に影響がでないよう) $ sudo dpkg-reconfigure dash -必須アプリケーション・ツール類をインストールします。~ $ sudo apt-get update $ sudo apt-get install build-essential help2man diffstat texi2html texinfo libncurses5-dev cvs gawk $ sudo apt-get install python-dev python-pysqlite2 python-psyco ckermit lrzsz subversion ** gumstix-oeの取得 [#p108bd7a] -gumstix-oe を svn checkout~ 以下の手順で gumstix-oe を取得します。~ $ mkdir ~/gumstix $ cd ~/gumstix $ svn co https://gumstix.svn.sourceforge.net/svnroot/gumstix/trunk gumstix-oe ** 環境設定 [#h3cb48dd] -ソースコードキャッシュ保存場所を設定~ 以下のコマンドで bitbake 実行時にダウンロードされるソースコードの保存場所を設定します。~ $ sudo groupadd oe $ sudo usermod -a -G oe beat $ sudo mkdir /usr/share/sources $ sudo chgrp oe /usr/share/sources $ sudo chmod 0775 /usr/share/sources $ sudo chmod ug+s /usr/share/sources 管理用のグループ設定をしているので、これが終わったら一度 logout して再度 login します。~ -環境設定~ 以下のコマンドで bitbake 実行時に必要な環境変数を設定します。 ~ $ cat ~/gumstix/gumstix-oe/extras/profile >> ~/.bashrc 一度これを実行したら .bashrc に書き込まれるので、以降いつでも bitbake 実行に必要な PATH は通っている状態になっています。 ** ソースファイル調整 [#r6d74ae9] build 内容の調整をします。~ -iwmmxt に最適化し、FEED_ARCH も iwmmxt に変更します。~ beat@bc9-oe-sdk:~/gumstix/gumstix-oe$ svn diff com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc Index: com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc =================================================================== --- com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc (リビジョン 318) +++ com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc (作業コピー) @@ -1,6 +1,9 @@ # Configurations for the Intel PXA27x Appications Processor Family. # Please use tune-xscale for PXA255/PXA26x based processors. -TARGET_CC_ARCH = "-march=iwmmxt -mcpu=iwmmxt -mtune=iwmmxt" +FEED_ARCH = "iwmmxt" + +TARGET_CC_ARCH = "-march=iwmmxt -mtune=iwmmxt" +TARGET_CC_KERNEL_ARCH = "-march=iwmmxt -mtune=iwmmxt" PACKAGE_ARCH = "iwmmxt" PACKAGE_EXTRA_ARCHS += "iwmmxt" -kernel size を拡大(後ですぐ 2.6.29 kernel に更新するため、予め kernel 分に取られるサイズを大きめにしておきます。) beat@bc9-oe-sdk:~/gumstix/gumstix-oe$ svn diff com.gumstix.collection/conf/machine/include/gumstix.inc Index: com.gumstix.collection/conf/machine/include/gumstix.inc =================================================================== --- com.gumstix.collection/conf/machine/include/gumstix.inc (リビジョン 318) +++ com.gumstix.collection/conf/machine/include/gumstix.inc (作業コピー) @@ -10,7 +10,7 @@ PREFERRED_PROVIDER_virtual/kernel = "gumstix-kernel" KERNEL_IMAGETYPE = "uImage" RDEPENDS_kernel-base = "" -KERNEL_IMAGE_MAXSIZE = "1048577" +KERNEL_IMAGE_MAXSIZE = "2097154" UBOOT_ENTRYPOINT = "a0008000" -microSD 起動のため mmcboot に変更し、bc9 では使用しない bluetooth を無効化します。~ beat@bc9-oe-sdk:~/gumstix/gumstix-oe$ svn diff com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf Index: com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf =================================================================== --- com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf (リビジョン 318) +++ com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf (作業コピー) @@ -5,12 +5,12 @@ MACHINE_FEATURES += "verdex" MACHINE_FEATURES += "iwmmxt" require conf/machine/include/gumstix.inc -require conf/machine/include/tune-xscale.inc +require conf/machine/include/tune-iwmmxt.inc # # Your flash size = Total flash (in MB) - 1 (for linux kernel partition) -ROOT_FLASH_SIZE = "15" -#ROOT_FLASH_SIZE = "31" +#ROOT_FLASH_SIZE = "15" +ROOT_FLASH_SIZE = "30" # # Enable use of virtual terminal for LCD on tty1 if USE_VT = "1" @@ -28,7 +28,7 @@ #MACHINE_FEATURES += "spi" MACHINE_FEATURES += "serial" -MACHINE_FEATURES += "bluetooth" +#MACHINE_FEATURES += "bluetooth" MACHINE_FEATURES += "sound" # if you enable robostix you will need to disable both "lcd" and "touchscreen" features @@ -51,7 +51,7 @@ MACHINE_FEATURES += "fat" # enable one of the following if you want to target build for uimage/rootfs on mmc/microSD or CF -#MACHINE_FEATURES += "mmcroot" +MACHINE_FEATURES += "mmcroot" #MACHINE_FEATURES += "cfroot" # ** build [#o2d59418] 2010/06/11 追記~ 注:bitbake gumstix-basic-image 実行時に zlib-native-1.2.3 の箇所で 404 Not Found が返ってきます。~ zlib-1.2.3 を取得する場合 bb ファイルを以下のように編集してください。~ #zlib の最新版は2010年6月10日時点で zlib-1.2.5 になっています。~ $ vi gumstix/gumstix-oe/org.openembedded.snapshot/packages/zlib/zlib_1.2.3.bb LICENSE = "zlib" PR="r2" #SRC_URI = "http://www.zlib.net/zlib-1.2.3.tar.bz2 \ SRC_URI = "http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.bz2 file://visibility.patch;patch=1 \ file://autotools.patch;patch=1 " S = "${WORKDIR}/zlib-${PV}" 以下のコマンドで microSD 起動用の kernel と userland を build します。~ $ bitbake gumstix-basic-image build が終了すると以下のファイルが生成されます。~ beat@bc9-oe-sdk:~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex$ ls -l 合計 18152 -rw-r--r-- 1 beat beat 8576116 2009-07-24 18:57 Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20090724-gumstix-custom-verdex.rootfs.jffs2 -rw-rw-r-- 1 beat beat 7081015 2009-07-24 18:57 Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20090724-gumstix-custom-verdex.rootfs.tar.gz lrwxrwxrwx 1 beat beat 94 2009-07-24 18:57 gumstix-basic-image-gumstix-custom-verdex.jffs2 -> Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20090724-gumstix-custom-verdex.rootfs.jffs2 lrwxrwxrwx 1 beat beat 95 2009-07-24 18:57 gumstix-basic-image-gumstix-custom-verdex.tar.gz -> Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20090724-gumstix-custom-verdex.rootfs.tar.gz -rw-rw-r-- 1 beat beat 1881391 2009-07-24 18:24 modules-2.6.21-r1-gumstix-custom-verdex.tgz -rw-r--r-- 1 beat beat 998520 2009-07-24 18:24 uImage-2.6.21-r1-gumstix-custom-verdex.bin ここで生成される kernel は 2.6.21 ですが、起動用 microSD を作成する時点で最初から~ 以下の手順で生成される 2.6.29 に入れ替えてしまいますので、実質的に必要になるのは~ Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20090724-gumstix-custom-verdex.rootfs.tar.gz だけです。 ** 2.6.29 kernel & modules [#o0348413] bc9-android-sdk で取得した linux-android-2.6.29 kernel を /home/beat/kernel_work/ に linux-android-2.6.29 の名でコピーし、~ patch-kernel-2.6.29.4-bc9-r3 を当て、bc9_android_defconfig を .config としてコピーします。~ patch 後 linux-android-2.6.29 を linux-android-2.6.29-bc9-r3 にリネームしておきます。~ 以下の内容で kernel だけを cross compile するための環境設定ファイル envsetup.sh を作成します。~ #!/bin/sh export PATH=/home/beat/gumstix/gumstix-oe/tmp/cross/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-angstrom-linux-gnueabi- このファイルを source し linux-android-2.6.29-bc9-r3 で make を実行すれば kernel が build できますが、~ bc9 用の microSD 起動用ファイルを得るにはさらに以下の作業が必要です。~ 以下の内容で make-bc9-kernel.sh を作成し linux-android-2.6.29-bc9-r3/ で実行します。 #!/bin/sh export LANG=C GUMSTIX_HOME="/home/beat/gumstix/gumstix-oe" SYSMAP="./System.map" TOOL_PREFIX="${GUMSTIX_HOME}/tmp/cross/bin/arm-angstrom-linux-gnueabi-" DEPMOD="${TOOL_PREFIX}depmod-2.6" OBJCOPY=${TOOL_PREFIX}objcopy MKIMG=${GUMSTIX_HOME}/tmp/staging/i686-linux/bin/uboot-mkimage UBOOT_ENTRYPOINT="a0008000" MOD_WORKDIR="./mod_work" make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX} prepare KERNREL=`make kernelrelease` KERNVER=`make kernelversion` KERNIMG="uImage-${KERNREL}.bin" MODTGZ="modules-${KERNREL}.tgz" KERNIMGLN="uImage-${KERNVER}-bc9.bin" MODTGZLN="modules-${KERNVER}-bc9.tgz" echo "### Cleanup" rm -rf ${MOD_WORKDIR} rm -f ${KERNIMG} ${MODTGZ} ${KERNIMGLN} ${MODTGZLN} echo "### Build kernel" make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX} if [ $? != 0 ]; then echo "*** Failed to build kernel" exit 1 fi echo "### Make kernel image" ${OBJCOPY} -O binary -R .note -R .comment \ -S ./arch/arm/boot/compressed/vmlinux linux.bin if [ $? != 0 ]; then echo "*** Failed to make kernel image" exit 1 fi ${MKIMG} -A arm -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} \ -e ${UBOOT_ENTRYPOINT} -n "oe/verdex/arm" -d linux.bin ${KERNIMG} if [ $? != 0 ]; then echo "*** Failed to make kernel image" exit 1 fi ln -s ${KERNIMG} ${KERNIMGLN} echo "### Install modules" make ARCH=arm DEPMOD=echo INSTALL_MOD_PATH=${MOD_WORKDIR} modules_install if [ $? != 0 ]; then echo "*** Failed to modules_install" exit 1 fi ${DEPMOD} -A -b ${MOD_WORKDIR} -F ${SYSMAP} ${KERNREL} if [ $? != 0 ]; then echo "*** Failed to depmod modules" exit 1 fi echo "### Make modules tar ball" tar czvf ${MODTGZ} -C ${MOD_WORKDIR} lib if [ $? != 0 ]; then echo "*** Failed to make modules tarball" exit 1 fi ln -s ${MODTGZ} ${MODTGZLN} echo "### Finished" ls -l ${KERNIMG} ${MODTGZ} make が終了すると、vmlinux など標準の make を実行したときに生成されるファイルの他に~ bc9 用に必要な以下のファイルが生成されます。 -rw-rw-r-- 1 beat beat 1.4M 2009-07-28 20:39 modules-2.6.29-bc9-r3.tgz lrwxrwxrwx 1 beat beat 25 2009-07-28 20:39 modules-2.6.29-bc9.tgz -> modules-2.6.29-bc9-r3.tgz -rw-rw-r-- 1 beat beat 1.5M 2009-07-28 20:38 uImage-2.6.29-bc9-r3.bin lrwxrwxrwx 1 beat beat 24 2009-07-28 20:38 uImage-2.6.29-bc9.bin -> uImage-2.6.29-bc9-r3.bin