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 が見えるのを確認。

$ sudo cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00001000 "spl"
mtd1: 00300000 00001000 "uboot"
mtd2: 00100000 00001000 "data"

マニュアルでは 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カードに書き込みます。

$ 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)

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

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

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

# 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%)

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

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 # 

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

SDにdebianを書き込む

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

$ 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]

# 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!

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

$ 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.

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

$ 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

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

$ 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


NVMeへの書き込み

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

$ 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

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

$ 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

M.2 SSDからのBoot

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

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

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

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

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

$ 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


リンク

RISC-V, VisionFive-2

Posted by ず@沖縄