概要
-
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 -
VagrantfileVagrantfile# 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
4. 待つ
5. `$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$
```