Starfive VisonFive2(RISC-V SBC) で遊ぶ – その13 Debian Image 202403 に更新

RISC-V, VisionFive-2

少し前に Debian Image 202403 が出ていました。ようやく更新できたのでメモを残しておきます。

VisionFive2 Software v5.11.3もリリースされています。


uboot/opensbiを更新

“Please update the SPI flash to the latest SPL/U-Boot binaries 20 if you would like to try nvme booting (set boot mode as QSPI boot)" ということなので、ファームウェアを更新します。

まず/proc/mtd が見えるのを確認。

[code lang="shell"]
$ sudo cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00001000 "spl"
mtd1: 00300000 00001000 "uboot"
mtd2: 00100000 00001000 "data"
[/code]

マニュアルでは uboot-env が mtd1 にあって、uboot は mtd2 です。この状態ではNVMe bootできないので、まずここから修正します。
参考: VisionFive2 Software v3.8.2 Release – VisionFive 2 (English Forum) – RVspace Forum

Release VisionFive2 Software v5.11.3 · starfive-tech/VisionFive2から、sdcard.imgをダウンロードしてSDカードに書き込みます。

[code lang="shell" title="MacOSで作業"]
$ sudo dd if=sdcard.img of=/dev/rdisk6 bs=64k status=progress
820969472 bytes (821 MB, 783 MiB) transferred 46.999s, 17 MB/s
12800+1 records in
12800+1 records out
838881280 bytes transferred in 47.883802 secs (17519103 bytes/sec)
[/code]

このSDからbootすると、/proc/mtd の内容がマニュアル通りになりました。

[code lang="shell"]
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00001000 "spl"
mtd1: 00010000 00001000 "uboot-env"
mtd2: 00300000 00001000 "uboot"
mtd3: 00100000 00001000 "data"
[/code]

フラッシュを更新します。

[code lang="shell"]
# flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
Erasing blocks: 38/38 (100%)
Writing data: 150k/150k (100%)
Verifying data: 150k/150k (100%)
# flashcp -v visionfive2_fw_payload.img /dev/mtd2
Erasing blocks: 737/737 (100%)
Writing data: 2944k/2944k (100%)
Verifying data: 2944k/2944k (100%)
[/code]

前々回は 124kと2727k、前回は 129kと2886k だったので、少しずつサイズが増えています。
rebootして、シリアルコンソールからubootに入り、環境をデフォルトにリセットします。

[code lang="shell"]
Hit any key to stop autoboot: 0
StarFive # env default -f -a
## Resetting to default environment
StarFive # env save
Saving Environment to SPIFlash… Erasing SPI flash…Writing to SPI flash…done
OK
StarFive #
[/code]

念の為 reboot して様子を見てみます。問題なさそうなので、debianを書きます。

SDにdebianを書き込む

現在動いてるLinux環境は、/boot 以外はNVMeに存在するので、/bootをunmountしてSDに書き込みます。手抜きです。

[code lang="shell"]
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
udev 1724888 0 1724888 0% /dev
tmpfs 398524 3204 395320 1% /run
/dev/nvme0n1p3 120222016 10374472 109831160 9% /
tmpfs 1992620 0 1992620 0% /dev/shm
tmpfs 5120 12 5108 1% /run/lock
tmpfs 524288 4 524284 1% /tmp
/dev/mmcblk1p3 102156 22596 79560 23% /boot
/dev/nvme0n1p4 359263424 32929344 308011240 10% /home
tmpfs 398524 48 398476 1% /run/user/113
tmpfs 398524 44 398480 1% /run/user/1001[/code]
[/code]

[code lang="shell"]
# umount /boot
# bzcat starfive-jh7110-202403-SD-minimal-desktop-wayland.img.bz2 > /dev/mmcblk1
# reboot

Broadcast message from root@starfive on pts/1 (Tue 2024-04-09 07:09:15 UTC):

The system will reboot now!
[/code]

リモートログインします。最初からsshdが動いてるので楽になりました。

[code lang="shell"]$ ssh user@vf
user@vf's password:
Linux starfive 6.1.31-starfive #1 SMP Mon Mar 4 21:31:49 CST 2024 riscv64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
[/code]

/boot, / は SDになっています。

[code lang="shell"]
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1453968 0 1453968 0% /dev
tmpfs 396780 3320 393460 1% /run
/dev/mmcblk1p4 3840592 3053424 770784 80% /
tmpfs 1983884 0 1983884 0% /dev/shm
tmpfs 5120 12 5108 1% /run/lock
/dev/mmcblk1p3 102156 45336 56820 45% /boot
tmpfs 396776 40 396736 1% /run/user/110
tmpfs 396776 32 396744 1% /run/user/1000
[/code]

OSバージョンは6.1.31になりました。

[code lang="shell"]
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux bookworm/sid"
NAME="Debian GNU/Linux"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
BUILD_ID=7
$ uname -a
Linux starfive 6.1.31-starfive #1 SMP Mon Mar 4 21:31:49 CST 2024 riscv64 GNU/Linux
[/code]

NVMeへの書き込み

starfive-jh7110-202403-nvme-minimal-desktop-wayland.img.bz2 を書くんですけど、これも先頭から書けば良いのだろうか? わからんので中を見てみる。

[code lang="shell"]
$ bunzip2 starfive-jh7110-202403-nvme-minimal-desktop-wayland.img.bz2
$ fdisk -l starfive-jh7110-202403-nvme-minimal-desktop-wayland.img
Disk starfive-jh7110-202403-nvme-minimal-desktop-wayland.img: 3.91 GiB, 4194304000 bytes, 8192000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5F4CD865-AB5C-46B5-89E3-DECD2FEE54CF

Device Start End Sectors Size Type
starfive-jh7110-202403-nvme-minimal-desktop-wayland.img1 4096 8191 4096 2M HiFive BBL
starfive-jh7110-202403-nvme-minimal-desktop-wayland.img2 8192 16383 8192 4M HiFive FSBL
starfive-jh7110-202403-nvme-minimal-desktop-wayland.img3 16384 221183 204800 100M EFI System
starfive-jh7110-202403-nvme-minimal-desktop-wayland.img4 221184 8189918 7968735 3.8G Linux filesystem
[/code]

先頭から書けば良さそうですね。

[code lang="shell"]
$ sudo dd if=/mnt/tmp2/shin/starfive-jh7110-202403-nvme-minimal-desktop-wayland.img of=/dev/nvme0n1 bs=64k status=progress
4010475520 bytes (4.0 GB, 3.7 GiB) copied, 19 s, 211 MB/s
64000+0 records in
64000+0 records out
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 22.1167 s, 190 MB/s
[/code]

M.2 SSDからのBoot

NVMeからbootするには、DIPスイッチの設定を変更しないといけません。ケースに入れてるので少々面倒くさい。
変更してbootしたけど、SD bootになっています。 あれ?

シリアルコンソールを確認したら、エラーになっていました。

[code lang="shell"]
Try booting from NVME0 …
Failed to load 'vf2_uEnv.txt'
## Warning: Input data exceeds 1048576 bytes – truncated
## Info: input data size = 1048578 = 0x100002
## Error: "boot2" not defined
[/code]

実はSDが刺さってるとNVMeからbootできないようです。なんだってー

SDを外したら無事にbootできました。

[code lang="shell"]
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1453968 0 1453968 0% /dev
tmpfs 396780 3312 393468 1% /run
/dev/nvme0n1p4 480648780 3040020 477592376 1% /
tmpfs 1983884 0 1983884 0% /dev/shm
tmpfs 5120 12 5108 1% /run/lock
/dev/nvme0n1p3 102156 45336 56820 45% /boot
tmpfs 396776 60 396716 1% /run/user/110
tmpfs 396776 32 396744 1% /run/user/1000
[/code]

リンク

RISC-V, VisionFive-2

Posted by ず@沖縄