概要
-
Building Raspberry Pi Systems with Yoctoにしたがって、
console-image
をビルドするとこまで。 - ビルドは通ったっぽいが、らずぱいでの動作は、まだ確認していない...確認できたら、記事を更新する予定。
- 関連: @Nao1215さん - Raspberry Pi3 with Yocto Project:環境構築
環境
- ホスト: Windows 10 64bit
- Vagrant
- Virtualbox
- Git for Windows
-
ゲスト仮想機:
ubuntu/xenial64
- 120GBのディスクサイズに拡張してる(けど、80GBくらいでもだいじょうぶかも?)
Raspberry Pi 2/3実機
手順
- Vagrant, Virualbox, git for windowsを使えるようにする
- Vagrantのdisksizeプラグインを導入:
vagrant plugin install vagrant-disksize
-
Vagrantfile
Vagrantfile# Vagrantfile # mt08 #VB_NAME="build-VM" VM_MEMORY=8192 VM_CORES=2 #VM_HOSTNAME="build-yocto_poky-morty.local" Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" #config.vm.network "public_network", bridge: 'Intel(R) Ethernet Connection I217-LM' config.ssh.username = 'ubuntu' config.disksize.size = '120GB' config.vm.provider "virtualbox" do |vb| vb.gui = true #vb.name = VB_NAME vb.memory = VM_MEMORY vb.cpus = VM_CORES end config.vm.provision "shell", inline: <<-SHELL #echo 'Acquire::http::Proxy "http://apt-cache-server:3142";' | tee /etc/apt/apt.conf.d/02proxy export DEBIAN_FRONTEND=noninteractive apt-get update apt-get -y upgrade apt-get -y install build-essential chrpath diffstat gawk git libncurses5-dev pkg-config subversion texi2html texinfo apt-get -y install bc python2.7 ln -sf /usr/bin/python2.7 /usr/bin/python dpkg-reconfigure dash SHELL config.vm.provision "shell", privileged: false, inline: <<-SHELL cd ${HOME} git clone -b morty git://git.yoctoproject.org/poky.git poky-morty cd poky-morty git clone -b morty git://git.openembedded.org/meta-openembedded git clone -b morty https://github.com/meta-qt5/meta-qt5.git git clone -b morty git://git.yoctoproject.org/meta-raspberrypi cd ${HOME} mkdir rpi cd rpi git clone -b morty git://github.com/jumpnow/meta-rpi cd ${HOME} mkdir -p ${HOME}/rpi/build/conf source poky-morty/oe-init-build-env ${HOME}/rpi/build cd $HOME/rpi cp meta-rpi/conf/local.conf.sample build/conf/local.conf cp meta-rpi/conf/bblayers.conf.sample build/conf/bblayers.conf SHELL end
仮想機起動、再起動、sshログイン:
vagrant up && vagrant reload && vagrant ssh
...待つ...
-
仮想機sshログイン
- 設定編集
bblayers.conf
(編集する必要ないと思う):vi $HOME/rpi/build/conf/bblayers.conf
- 設定編集
local.conf
:vi $HOME/rpi/build/conf/local.conf
-
MACHINE
:raspberrypi2
(RPi2/3向け) orraspberrypi
(1/Zero向け) -
DL_DIR
: 指定しないと、$HOME/rpi/build/downloads
-
SSTATE_DIR
: 指定しないと、$HOME/rpi/build/sstate-cache
-
TMPDIR
: 指定しないと、$HOME/rpi/build/tmp
-
-
ビルド開始
ビルドcd $HOME source poky-morty/oe-init-build-env ~/rpi/build #time bitbake -c fetchall console-image # ファイルの取得のみ行う time bitbake console-image
待つ
$HOME/rpi/build/tmp/deploy
中に成果物ができるはず。
- 設定編集
その他
- VM_CORESとVM_MEMORYはバランスよく。CPU増やしてもメモリが足りないと、落ちたり不安定になったりする。並列にビルド走るけど、ディスクアクセスも頻繁におこるようにもなるし、むずかしいね。
ビルド後:
/dev/sda1 117G 46G 72G 39% /
-
(追記2017-0330)メモ : 2cores/8GBRAMで、fetchに137分、ビルドに309分
ubuntu@ubuntu-xenial:~/rpi/build$ time bitbake -c fetchall console-image && time bitbake console-image Loading cache: 100% |##################################################################################################################| Time: 0:00:00 Loaded 642 entries from dependency cache. Parsing recipes: 100% |################################################################################################################| Time: 0:02:12 Parsing of 1969 .bb files complete (488 cached, 1481 parsed). 2665 targets, 349 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.32.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-16.04" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "2.2.1" TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4 callconvention-hard cortexa7" TARGET_FPU = "hard" meta meta-poky = "morty:924e576b8930fd2268d85f0b151e5f68a3c2afce" meta-oe meta-multimedia meta-networking meta-python = "morty:fe5c83312de11e80b85680ef237f8acb04b4b26e" meta-qt5 = "morty:3601fd2c5306ac6d5d0d536e0be8cbb90da9b4c1" meta-raspberrypi = "morty:cce6292e41493158c26f5b1b7fded97faacf10d7" meta-rpi = "morty:fbf8e850d79ecb05e4de6debd8a8ab1b2c94255e" NOTE: Fetching uninative binary shim from http://downloads.yoctoproject.org/releases/uninative/1.4/x86_64-nativesdk-libc.tar.bz2;sha256sum=101ff8f2580c193488db9e76f9646fb6ed38b65fb76f403acb0e2178ce7127ca --2017-03-29 17:46:57-- http://downloads.yoctoproject.org/releases/uninative/1.4/x86_64-nativesdk-libc.tar.bz2 Resolving downloads.yoctoproject.org (downloads.yoctoproject.org)... 198.145.20.127 Connecting to downloads.yoctoproject.org (downloads.yoctoproject.org)|198.145.20.127|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2473216 (2.4M) [application/octet-stream] Saving to: ‘/vagrant/oe-sources/uninative/101ff8f2580c193488db9e76f9646fb6ed38b65fb76f403acb0e2178ce7127ca/x86_64-nativesdk-libc.tar.bz2’ 2017-03-29 17:47:01 (2.15 MB/s) - ‘/vagrant/oe-sources/uninative/101ff8f2580c193488db9e76f9646fb6ed38b65fb76f403acb0e2178ce7127ca/x86_64-nativesdk-libc.tar.bz2’ saved [2473216/2473216] Initialising tasks: 100% |#############################################################################################################| Time: 0:00:07 NOTE: Executing RunQueue Tasks WARNING: devmem2-1.0-r7 do_fetch: Failed to fetch URL http://www.lartmaker.nl/lartware/port/devmem2.c, attempting MIRRORS if available WARNING: libpng-native-1.6.24-r0 do_fetch: Failed to fetch URL http://distfiles.gentoo.org/distfiles/libpng-1.6.24.tar.xz, attempting MIRRORS if available WARNING: ossp-uuid-native-1.6.2-r2 do_fetch: Failed to fetch URL http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz, attempting MIRRORS if available WARNING: nano-2.2.5-r3.0 do_fetch: Failed to fetch URL ftp://nano-editor.org/pub/nano/v2.2/nano-2.2.5.tar.gz, attempting MIRRORS if available NOTE: Tasks Summary: Attempted 271 tasks of which 0 didn't need to be rerun and all succeeded. Summary: There were 4 WARNING messages shown. real 137m7.929s user 20m40.524s sys 42m57.396s Parsing recipes: 100% |################################################################################################################| Time: 0:02:13 Parsing of 1969 .bb files complete (0 cached, 1969 parsed). 2665 targets, 349 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.32.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "universal" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "2.2.1" TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4 callconvention-hard cortexa7" TARGET_FPU = "hard" meta meta-poky = "morty:924e576b8930fd2268d85f0b151e5f68a3c2afce" meta-oe meta-multimedia meta-networking meta-python = "morty:fe5c83312de11e80b85680ef237f8acb04b4b26e" meta-qt5 = "morty:3601fd2c5306ac6d5d0d536e0be8cbb90da9b4c1" meta-raspberrypi = "morty:cce6292e41493158c26f5b1b7fded97faacf10d7" meta-rpi = "morty:fbf8e850d79ecb05e4de6debd8a8ab1b2c94255e" Initialising tasks: 100% |#############################################################################################################| Time: 0:00:07 NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 3133 tasks of which 274 didn't need to be rerun and all succeeded. real 309m16.858s user 473m40.400s sys 60m15.796s ubuntu@ubuntu-xenial:~/rpi/build$