Starfive VisonFive2(RISC-V SBC) で遊ぶ – その2 ファームウェアの書き換え

2023/01/07RISC-V, VisionFive-2

初期状態のままでは最新のdebian(Image-69)が起動できないのでfirmwareを更新します。シリアルケーブル無しで書き換えできました。

事前に目を通しておく



ダウンロードするもの


micro SDカードの準備

Releases · starfive-tech/VisionFive2の sdcard.img をmicroSDに書き込む。

$ sudo dd if=sdcard.img of=/dev/disk4 bs=64M

buildrootの起動

書き込んだmicroSDを入れ、内側のLANポートにケーブルを繋いだのちに起動するとDHCPでアドレスを取りにきます。

Jan 6 00:18:57 rasp dhcpd[2358]: DHCPDISCOVER from XX:XX:XX:XX:XX:XX via eth0
Jan 6 00:18:58 rasp dhcpd[2358]: DHCPOFFER on 192.168.XXX.XXX to XX:XX:XX:XX:XX:XX (buildroot) via eth0
Jan 6 00:18:58 rasp dhcpd[2358]: DHCPREQUEST for 192.168.XXX.XXX (192.168.YYY.YYY) from XX:XX:XX:XX:XX:XX (buildroot) via eth0

$ ping 192.168.XXX.XXX
PING 192.168.XXX.XXX (192.168.XXX.XXX): 56 data bytes
64 bytes from 192.168.XXX.XXX: icmp_seq=0 ttl=64 time=14.661 ms
64 bytes from 192.168.XXX.XXX: icmp_seq=1 ttl=64 time=6.566 ms
64 bytes from 192.168.XXX.XXX: icmp_seq=2 ttl=64 time=7.090 ms
^C
— 192.168.XXX.XXX ping statistics —
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.566/9.439/14.661/3.699 ms


u-bootとfirmwareの書き換え

sshでroot loginします。mDNSが入っていないようなので、IPアドレスを直打ちします。

$ ssh root@192.168.XXX.XXX
root@192.168.XXX.XXX’s password:
#



sdcard.img からbootしたOSでは /proc/mtd が見えます (debian Image-55 では見えない)。

# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00001000 “spl"
mtd1: 00300000 00001000 “uboot"
mtd2: 00100000 00001000 “data"



新しいファームウェアを転送します。sftpが入っていないので、VisionFive2側からscpする必要があります。

追記: USBメモリを使ってコピーした方が速い。Early versionのVF2のeth1は100Mbpsなので遅い。

# scp XXXXXXXX@192.168.YYY.YYY:~/StarFive2/VisionFive2-Software-v2.5.0/u-boot-spl.bin.normal.out .
XXXXXXXX@192.168.YYY.YYY’s password:
u-boot-spl.bin.normal.out 100% 125KB 124.8KB/s 00:00
# scp XXXXXXXX@192.168.YYY.YYY:~/StarFive2/VisionFive2-Software-v2.5.0/visionfive2_fw_payload.img .
XXXXXXXX@192.168.YYY.YYY’s password:
visionfive2_fw_payload.img 100% 2728KB 1.3MB/s 00:02



ファイルが揃ったら、flashcpコマンドを使ってファームウェアを書き換えます。手順はQuick Start Guideに書かれています。

# flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
Erasing blocks: 32/32 (100%)
Writing data: 124k/124k (100%)
Verifying data: 124k/124k (100%)
# flashcp -v visionfive2_fw_payload.img /dev/mtd1
Erasing blocks: 682/682 (100%)
Writing data: 2727k/2727k (100%)
Verifying data: 2727k/2727k (100%)


更新できたので、debian Image-69を焼きます。

$ gzcat starfive-jh7110-VF2_515_v2.5.0-69.img.gz |sudo dd of=/dev/rdisk4 bs=64M



debian Image-69のmicroSDを入れて、無事に起動できました。

debian追加設定

  • 時間がズレる → systemd-timesyncd をインストールし、/etc/systemd/timesyncd.conf にntpサーバーを設定
  • 日本語ロケールがない → 入れる (Debian/Ubuntuのロケールを日本語にする方法 – Qiita
  • アクセスが多いとSDカードが飛ぶ? → homeはNVMeに移動。 / は noatime でマウント。 tmpfs を大きくして /tmp や /var/tmp を設定。
  • sudo すると “sudo: unable to resolve host starfive: Name or service not known” と言われる → /etc/hosts にホスト名を登録。


追記

Redditでいくつか質問を受けたので、ここにも追記しておきます。

> sdcard イメージは dhcp アドレスを正しく取得しますか? sdcard イメージのログインは何ですか?

はい。 sdcard.img は DHCP を使用して、起動時に IP アドレスを要求します。 mDNS がないため、(ホスト名 starfive.local ではなく) ログイン用の IP アドレスを指定する必要があります。

> では、sdcard.IMG は Debian 55 イメージと同じですか?

いいえ。 https://github.com/starfive-tech/VisionFive2/releases から sdcard.img をダウンロードする必要があります。

> 最後のスティープで、家を nvme に移動しましたか?

NVMe で /home2 を作成して作業します。 しかし、これは美しくありません。

将来的には /boot のみを microSD に配置し、残りは NVMe に配置します。 私はまだそれに取り組んでいません。 その設定の情報が必要です。

> sdcard.IMG に関する 1 つの質問ですが、そのイメージのルート パスワードは何ですか?

パスワードは QSG に書かれているものと同じです。

続く。

リンク

RISC-V, VisionFive-2

Posted by ず@沖縄