やや時間が経ってしまったがyoctoの2.1がリリースされた。 コードネームは「Krogoth」
RPi3で動作を確認してみる。
作業ディレクトリ
今回は「~/work/yocto/rpi」で作業を行う。 また、ソースコードなどダウンロードしたデータを格納するディレクトリを「~/work/yocto/downloads」とする。
Krogothブランチの取得
下記のコマンドでpokyとmeta-raspberrypiを取得し、krogothブランチをチェックアウトする。
$ git clone git://git.yoctoproject.org/poky.git $ cd poky $ git checkout -b krogoth origin/krogoth $ git clone git://git.yoctoproject.org/meta-raspberrypi
meta-raspberrypiはまだkrogothブランチが切られていないようなので、masterブランチを使用する。
環境変数を設定
下記を実行してbitbakeの実行に必要な環境変数を設定する。
$ cd ~/work/yocto/rpi $ source poky/oe-init-build-env build
このコマンドを実行すると、buildディレクトリへ自動的に移動される。
confディレクトリ以下に、local.confとbblayers.confが生成される。
bblayers.conf
bblayers.confにmeta-raspberrypiの行を追加し、bitbakeのビルド対象に含める。 他のレイヤをビルド対象に追加する場合も、ここに追加する。
BBLAYERS ?= " \ /home/mickey/work/yocto/rpi/poky/meta \ /home/mickey/work/yocto/rpi/poky/meta-poky \ /home/mickey/work/yocto/rpi/poky/meta-yocto-bsp \ /home/mickey/work/yocto/rpi/poky/meta-raspberrypi \ "
また、フルパス表記なので、「/home/mickey」の部分は適宜自分の環境に合わせる必要がある。
local.conf
RPi3向けのイメージをビルドするための設定をlocal.confの上の方に下記のように追加する。
MACHINE ?= "raspberrypi3" BB_NUMBER_THREADS = "6" PARALLEL_MAKE = "-j 6" GPU_MEM = "128" DL_DIR ?= "${HOME}/work/yocto/downloads"
イメージ作成
bitbakeを実行してイメージを作成する。
$ bitbake rpi-basic-image
イメージの書き込み
meta-raspberrypiではrpi-sdimgとしてSDカードのイメージが生成されるので、これをddコマンドで書き込む。
$ sudo dd if=./tmp/deploy/images/raspberrypi3/rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdb bs=40M
/dev/sdbは環境によってはsdbだったりsdcだったりするので適宜変更する。 内蔵HDDの追加など行ってなければ大抵はsdbとなる。
動作確認
動作した!
ただし起動時間がものすごい長い。不安になるほど長かった。
起動時間の対処
ddで書き込んだあとのSDのraspberrypiパーティションにある「cmdline.txt」を下記のように変更する。
-dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait debug +dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait debug
「console=ttyAMA0,115200」の部分を削除する。 コンソールの出力先が変わるため、カーネルの出力なども表示されるようになってしまうが、起動時間は劇的に改善する。