概要
ネイティブlinuxが推奨されるyoctoだが、windowsのwsl2上でも動作するのか試した。
今回はラズパイ用OSイメージのビルドが成功するところまで確認した。
目次
環境の準備
wsl2を使用するうえでいくつかの準備を行う。
wsl2インストール
公式の手順を参考にubuntu20.04をインストールする。
wsl2追加設定
必須ではないが、wsl2のディストリビューションの格納先を変更する。
初期状態だとシステムディスクにインストールされるので、容量に余裕のあるストレージに移し替える。特にyoctoは平気で数百GBの容量を使用するのでこの設定はしておきたい。
以下の記事などを参考に作業を行った。
WSL2環境構築 個人用メモ(2021年9月版) - Qiita
vscodeに拡張機能をインストール
vscodeでwslにリモート接続できる拡張機能をインストールする。これも必須ではないが、便利なので推奨。
インストール/使用方法は以下を参考にする。
WSL で VS Code の使用を開始する | Microsoft Learn
ビルド手順
一般的なyoctoのビルドを行う。
ここで注意するのは、作業ディレクトリはwindows上から直接アクセスできるディスクドライブではなく、wsl2のディストリビューションイメージ内に作られるディレクトリを使用すること。
例えば、私のwsl環境では/mnt/gにwindows上で言うGドライブがマウントされていたが、この中に作業ディレクトリを置いた場合はビルドができなかった。ファイルシステムの違いが問題な気がするが原因は不明。
ツールのインストール
公式の手順に従ってインストールする。
$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
資材のダウンロード
$ mkdir yocto-workspace $ cd yocto-workspace $ git clone git://git.yoctoproject.org/poky -b kirkstone $ git clone https://github.com/agherzan/meta-raspberrypi.git -b kirkstone
環境設定
$ source poky/oe-init-build-env rpi-build
上記のコマンドを実行するとrpi-buildディレクトリに移動するので、2つのファイルを編集する。
- conf/local.conf
MACHINEをラズパイ4に変更し、生成するイメージの種類を指定する。
MACHINE ??= "raspberrypi4-64" IMAGE_FSTYPES = "wic.gz"
- conf/bblayers.conf
ラズパイ用のレイヤを使うように追記。以下のmeta-raspberrypiの行を追記。
BBLAYERS ?= " \ /home/user/yocto-workspace/poky/meta \ /home/user/yocto-workspace/poky/meta-poky \ /home/user/yocto-workspace/poky/meta-yocto-bsp \ /home/user/yocto-workspace/meta-raspberrypi \ "
イメージビルド
$ bitbake core-image-base
ラズパイの起動
ビルドしたイメージは、rpi-build/tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64.wic.gzとして格納されているので、これをddコマンドなどでsdカードに焼く。
以下のサイトの説明ではwsl2でsdカードにアクセス可能にできそうだが、自分の環境ではwsl --mountを実行できなかったので、windows側でRaspberry Pi Imagerを使ってsdカードにイメージを焼くこととする。
WSL 2 で Linux ディスクのマウントを開始する | Microsoft Learn
ツールをダウンロードする。
以下のサイトからwindows用のRaspberry Pi Imagerをダウンロードしインストールする。
Raspberry Pi OS – Raspberry Pi
ツールを実行しOSとストレージを指定する。
OSの指定ではカスタムイメージとして、今回作成したcore-image-base-raspberrypi4-64.wic.gzを指定する。
ストレージにはsdカードを指定する。
書き込みを実行する。
sdカードをラズパイに挿して起動することを確認する。
起動成功すると、ホスト名がraspberrypi4-64でOSが立ち上がる。
まとめ
wsl2とyoctoを使用してラズパイのOSイメージを作成できることを確認した。
問題なく起動できるOSイメージを作成できたが、ネイティブのLinuxを使える環境があるのならばそちらを使った方がいい気はする。