はじめに
SiPEED LICHEE RV DOCKが転がっている。
これにはAllwinner D1が搭載されている。meta-riscvのマシン定義にnezha-allwinner-d1
があるので試してみる。
環境を構築する
作業環境
$ mkdir -p ~/work/yocto/nezha-kirkstone $ cd ~/work/yocto/nezha-kirkstone
CROPSの使用
run_crops.shをダウンロードして使用する。
$ wget https://gist.githubusercontent.com/mickey-happygolucky/2b9671f062de558f3312f7378ed3c240/raw/ab57346aa3911ff4219ac048f5b24519249aec17/run_crops.sh $ chmod +x ./run_crops.sh
CROPSについてはYocto Project CROPSを使ってみる参照。
pokyの取得
$ git clone -b kirkstone git://git.yoctoproject.org/poky.git
環境変数の設定
$ ./run_crops.sh
meta-riscvの取得
$ ./run_crops.sh bitbake-layers layerindex-fetch meta-riscv
local.confを編集
MACHINE = "nezha-allwinner-d1" DL_DIR = "${TOPDIR}/../downloads"
bitbake実行
$ ./run_crops.sh bitbake core-image-base
SDカードへの書き込み
/dev/sdX
は実際のデバイスで読み替えること。
$ bmaptool copy build/tmp/deploy/images/nezha-allwinner-d1/core-image-base-nezha-allwinner-d1.wic.gz /dev/sdX
16GB以上のサイズのSDカードが必要なので注意。
ボード起動
Sipeed Lichee RVを参考にUSB-シリアル変換ケーブルでPCに接続し、minicomなどの端末を起動する。
LICHEE RV DOCKにSDカードを挿入し電源を投入する。
root@nezha-allwinner-d1:~# uname -a Linux nezha-allwinner-d1 5.16.0-nezha #1 PREEMPT Sun Jan 16 18:33:32 UTC 2022 riscv64 GNU/Linux
Linux起動はできるようだ。
イメージのサイズが大きい理由
bmaptool実行時の出力をみると下記のような表示が見つかる。
bmaptool: info: 3605504 blocks of size 4096 (13.8 GiB), mapped 23255 blocks (90.8 MiB or 0.6%)
なぜか13.8GiBのイメージとなっている。本来サイズがそれほど大きくならないはずのcore-image-baseなのになぜなのだろうか。
bitbakeではイメージファイルを出力するためにwicを使用している。 wicはkickstartをベースとしていて、パーティション設定済みのディスクイメージを出力することができる。
wicはパーティション構成を定義するwks
ファイルを参照している。
bitbake実行時にどのwksを参照するかはWKS_FILE
で設定される。
$ ./run_crops.sh bitbake core-image-base -e | grep '^WKS_FILE=' WKS_FILE="nezha.wks"
nezha.wksが参照されていることがわかった。
meta-riscvでnezha.wks
を探してみる。
$ find poky/meta-riscv -name nezha.wks poky/meta-riscv/wic/nezha.wks
nezha.wksが見つかったので内容を確認する。
# short-description: Create SD card image for Nezha Allwinner D1 development board part boot0 --source rawcopy --sourceparams="file=boot0_sdcard_sun20iw1p1.bin" --offset 16s --ondisk mmcblk0 --no-table part u-boot --source rawcopy --sourceparams="file=u-boot.toc1" --offset 32800s --ondisk mmcblk0 --no-table part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --align 4096 --fixed-size 64 --active part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label rootfs --align 4096 --fixed-size 14000 --exclude-path data/
--fixed-size 14000
の指定がある。fixed-sizeのデフォルトの単位はMiBなので、約14GBとなっている。
これが原因だった。
まとめ
SiPEED LICHEE RV DOCK向けにpokyを作った。 とりあえず起動はできるようだ。
wksの設定によってwicイメージが14GiB固定になっていた。