Yocto Linux に関するメモ
ホームページ
https://www.yoctoproject.org/
使い方の書いてあるサイト
http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/
http://www.crashcourse.ca/wiki/index.php/Yocto_Project_Quick_Start
Debianでの使い方
必須パッケージのインストール
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm
poky
$ git clone git://git.yoctoproject.org/poky
ひな形作成
$ cd poky
$ source oe-init-build-env
beagleboard用に設定変更
パラレルビルドの値は環境に合わせる
$ vi conf/local.conf
BB_NUMBER_THREADS = "16"
PARALLEL_MAKE = "-j 16"
MACHINE ?= "beagleboard"
最小限イメージのビルド
$ bitbake core-image-minimal
イメージは tmp/deploy/images/ に格納されてる
$ ls tmp/deploy/images/
MLO-beagleboard
MLO-beagleboard-1.5.0+git1+9f94c6577e3a018b6b75cbe39f32bb331871f915-r0
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
core-image-minimal-beagleboard-20121209215617.rootfs.jffs2
core-image-minimal-beagleboard-20121209215617.rootfs.tar.bz2
core-image-minimal-beagleboard.jffs2
core-image-minimal-beagleboard.tar.bz2
modules-3.4.11-yocto-standard-r4.3-beagleboard.tgz
u-boot-beagleboard-v2011.06+git5+b1af6f532e0d348b153d5c148369229d24af361a-r3.bin
u-boot-beagleboard.bin
u-boot.bin
uImage
uImage-3.4.20+git1+6737e890fff2a423fbb022ab1f7f82ef187fd8b1_1+449f7f520350700858f21a5554b81cc8ad23267d-r4.3-beagleboard-20121209215617.bin
uImage-beagleboard.bin
x-load-beagleboard-1.5.0+git1+9f94c6577e3a018b6b75cbe39f32bb331871f915-r0.bin.ift
x-load-beagleboard.bin.ift
外部のレシプやメタデータを利用する
外部メタデータのダウンロード
ひな形を作る
source poky/oe-init-build-env foo-build
conf/bblayers.conf にメタデータが格納されているディレクトリパスを指定する。
conf/local.conf の MACHINE にマシン名を指定する。パラレルビルドしたいなら、BB_NUMBER_THREADS と PARALLEL_MAKE も変更する。
ビルド
再ビルド
以下、linux-yocto レシピを再ビルドする場合の例:
$ bitbake linux-yocto -c compile -f
$ bitbake linux-yocto
chroot 内でビルドする方法
ロックに shmem 使うので、/dev/shm を bind
- chroot /tmp を chmod で 777 に変更
proc bind
sudo mount --bind /proc ./precise/proc でproc bind
/dev/shm もbind
sudo rm ./p/dev/shm sudo mkdir ./p/dev/shm sudo mount --bind /dev/shm ./p/dev/shm
linaro toolchain を使う
http://lists.linuxtogo.org/pipermail/openembedded-core/2012-July/026659.html を適用する。
meta-linaro と meta-openembedded をダウンロードする
git clone git://git.linaro.org/openembedded/meta-linaro.git git clone git://git.openembedded.org/meta-openembedded
conf/bblayers.conf を変更する
BBLAYERS に以下を追加。ディレクトリ構成によってはパスが異なるので注意。
${TOPDIR}/../meta-openembedded/toolchain-layer ${TOPDIR}/../meta-linaro
conf/local.conf を変更する
EXTERNAL_TOOLCHAIN = "${TOPDIR}/../gcc-linaro-arm-linux-gnueabihf-4.7-2013.02-01-20130221_linux" TCMODE = "external-linaro" IMAGE_LINGUAS = "" LIMIT_BUILT_LOCALES = "POSIX" DEFAULTTUNE = "armv7athf-neon" INSANE_SKIP_${PN} += "ldflags"
以下のパッチを適用
diff --git a/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb b/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb index 83a8532..a7a080f 100644 --- a/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb +++ b/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb @@ -150,6 +150,8 @@ FILES_libstdc++ = "${base_libdir}/libstdc++.so.*" FILES_libstdc++-dev = "\ ${includedir}/c++/${PV} \ ${base_libdir}/libstdc++.so \ +" +FILES_libstdc++-staticdev ="\ ${base_libdir}/libstdc++.a \ ${base_libdir}/libsupc++.a \ "
bitbake でビルド
bitbake core-image-minimal
linaro toolchain もリビルド
バイナリのlinaro toolchainを使わず、ビルドして使うには config/loca.conf を以下のようにする。
GCCVERSION = "linaro-4.7"
SDKGCCVERSION = "linaro-4.7"
# set the default machine and target
DEFAULTTUNE = "armv7athf-neon"
# specify the alignment of the root file system
# this is required when building for qemuarmv7a
IMAGE_ROOTFS_ALIGNMENT = "2048"
カーネルパッチが遅い
conf/local,conf に PATCHTOOL = "quilt" git ()が遅いのです。
wiki.yoctoproject.org
- BKM Packaging a BSP for Release (Japanese)