最近入手了一块riscv64的开发板,是某宝上入手的StarFive2,准备拿它当做riscv64架构的服务器用来编译程序。开始刷上的是官方给的debian系统,成功启动了,nvme正常,但是有两个问题,第一个是apt update
会报签名错误,第二个是不支持docker,想要让它支持docker,需要自己编译升级内核,非常麻烦。于是决定换用ubuntu版本的镜像。
根据官方教程,需要先将板载固件刷新到ubuntu社区的指定版本,从这里下载,需要注意的是,目前(2023/12/18)最新版的固件(u-boot-starfive-2024.01~rc4-0ubuntu1~ppa1
这个)会导致kernel panic
,需要下载下面的版本
,展开后,用wget下载deb安装包,找个ubuntu机器,用dpkg -x
解包,将里面的下面两个文件上传到sdcard.img
刷机包启动的系统里面
更新SPL
flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
更新U-Boot
flashcp -v u-boot.itb /dev/mtd2
然后安装ubuntu系统,注意从这里选择下面版本的系统
使用etcher将固件写入到sd卡,插入sd卡,启动,正常情况就可以启动成功。
在这中间我踩过一些坑,在此也一起分享一下。首先是hdmi插在4k屏无法显示,这样一来,我就不知道当前系统启动得怎么样了,因此kernel panic
了,我也不知道,后来只能使用usb转串口用电脑连接串口,将串口控制台当做显示器用,才知道启动过程中发生了什么,串口连接如下图
从串口控制台看到如下图(学到了,串口还能当显示器用)
可以看到,启动过程卡死在kernel panic
,我这才知道是内核崩溃了。看起来是u-boot-starfive-2024.01~rc4-0ubuntu1~ppa1
这个版本的固件,对现有的23.04
版本的系统兼容性有问题,所以我换了上个版本的固件,成功启动。
到此,在StarFive2上成功的安装上了ubuntu系统,docker也成功的安装,不过这个版本的板载固件 有个问题,就是无法识别nvme硬盘,希望下个正常版本能够支持。