aimdevel’s blog

勉強したことを書きます

wsl2でyoctoを使う

概要

ネイティブlinuxが推奨されるyoctoだが、windowsのwsl2上でも動作するのか試した。
今回はラズパイ用OSイメージのビルドが成功するところまで確認した。

目次

環境の準備

wsl2を使用するうえでいくつかの準備を行う。

wsl2インストール

公式の手順を参考にubuntu20.04をインストールする。

WSL のインストール | Microsoft Learn

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を使える環境があるのならばそちらを使った方がいい気はする。