みつきんのメモ

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

raspberrypi3 yoctoでkernel4.8を試す

インターフェース11月号の記事で、linuxカーネルのバージョン4.8からラズベリーパイ3の64ビットが対応されるという情報があった。 筆者が紹介したカーネルは、Electron752さんが4.5および4.6のカーネルに64ビット対応したものだったので、今回はもともと64ビット対応されているというカーネル4.8を試してみようと思う。

ただし、バニラカーネルだと自前でコンフィグレーションなどが必要になるので、ラズベリーパイのカーネルrpi-4.8.yブランチを使用する。

使用するブランチ

meta-raspberrpyはkrogothブランチを持っていないため、pokyのmasterブランチを追従している。 masterブランチはバージョンの移り変わりが激しく、時間が経つと再現性が乏しくなるという欠点がある。 そのため、なるべくその時点の最新のリリースバージョンのブランチ(今はkrogoth)を使用するのだが、最近masterブランチが破壊的な修正が入ってしまった。その影響で現時点(10/3)ではkrogothのpoky(oe-core)とmasterのmeta-raspberrypiの組み合わせではビルドできなくなっている。 これは非常に残念なので、meta-raspberrypiにはkrogothブランチを切って欲しいと思う。 特定のコミットでcheckoutするという回避策もあるにはあるのだが。

今回は、このような事情からpoky(oe-core)もraspberrypiもmasterブランチで作業する。

環境のダウンロード

poky

次のコマンドを実行し、pokyの環境をダウンロードする。作業は~/rpi3で行う。

$ mkdir ~/rpi3
$ cd ~/rpi3
$ git clone git://git.yoctoproject.org/poky.git

先述の通りmasterブランチで作業する。

meta-raspberrypi

meta-raspberrypiをダウンロードする。

$ cd ~/rpi3/poky
$ git clone git://git.yoctoproject.org/meta-raspberrypi

こちらもmasterブランチで作業する。

meta-rpi3-aarch64

インターフェース2016年11月号でも紹介させてもらった64ビット環境を作成するためのレイヤをダウンロードする。 ここでは、カーネル4.8に対応したrpi-4.8.yブランチを取得する。

$ git clone https://github.com/mickey-happygolucky/meta-rpi3-aarch64.git -b rpi-4.8.y

ビルド環境の設定

同じみのoe-init-build-envを読み込み、bitbakeに必要な環境変数などの設定を行う。 meta-rpi3-aarch64はコンフィグレーションファイルのテンプレートを提供しているので、次のようにする。

$ TEMPLATECONF=meta-rpi3-aarch64/conf/template source poky/oe-init-build-env build64

これで、local.confbblayers.confが設定済みの状態で作成される。

自動的にbuild64ディレクトリに移動される。

bitbakeの実行

bitbakeを実行しイメージを作成する。

$ bitbake rpi-basic-image

SDカードの作成

ddコマンドでSDカードにイメージを書き込む。

$ sudo dd if=./tmp/deploy/images/raspberrypi3-64/rpi-basic-image-raspberrypi3-64.rpi-sdimg of=/dev/sdb bs=100M

/dev/sdbはSDカードのデバイス。各自環境によって変化する可能性があるので注意。

実行

f:id:mickey_happygolucky:20161003235046j:plain

カーネルが4.8でaarch64になっている。