Starfive VisonFive2(RISC-V SBC) で遊ぶ – その2 ファームウェアの書き換え
初期状態のままでは最新のdebian(Image-69)が起動できないのでfirmwareを更新します。シリアルケーブル無しで書き換えできました。
事前に目を通しておく
ダウンロードするもの
- VisionFive 2 Debian Image(December) Released – VisionFive 2 (English Forum) – RVspace Forum
- Releases · starfive-tech/VisionFive2
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 に書かれているものと同じです。
続く。
ディスカッション
コメント一覧
まだ、コメントがありません