インターフェース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.conf
やbblayers.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カードのデバイス。各自環境によって変化する可能性があるので注意。
実行
カーネルが4.8でaarch64になっている。