Starfive VisonFive2(RISC-V SBC) で遊ぶ – その13 Debian Image 202403 に更新
少し前に 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
ディスカッション
コメント一覧
まだ、コメントがありません