みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi3 yocto2.1

やや時間が経ってしまったが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となる。

動作確認

動作した!

f:id:mickey_happygolucky:20160422004541j:plain

ただし起動時間がものすごい長い。不安になるほど長かった。

起動時間の対処

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」の部分を削除する。 コンソールの出力先が変わるため、カーネルの出力なども表示されるようになってしまうが、起動時間は劇的に改善する。