SiRider 开发板默认搭载的 Ubuntu OS 是 20.04 版本。
最近刚好 Ubuntu 24.04 发布了,就想尝试一下能否让最新版本的 Ubuntu 在这块板子上运行起来。
由于开发板自带的系统是固化在 UFS 上的,我希望能在不破坏原生系统的基础上,通过 SDCARD 或者 U 盘加载第三方系统,这就需要确认开发板上搭载的 U-Boot 是否支持从 sd card 或者 U 盘上读取文件。
接上 Debug UART 口开机,在 U-Boot auto boot 倒数到 0 之前,按键盘上的任意按键就能中断 U-Boot 启动,进入到 U-Boot 命令行模式:
在 U-Boot 命令行模式下输入 help 和 printenv 命令,希望能够看到一些系统启动相关的命令,很遗憾,默认没有搭载任何操作 mmc 或者 usb 相关的命令。
尝试修改 U-Boot,打开 MMC 相关的配置,最后发现在 U-Boot 命令行下执行 mmc info
命令系统会卡死,不确定是不是 U-Boot 里面对 sd mmc 的支持不完整。
尝试打开 USB 相关的配置,遇到了很多编译错误,放弃。
也就是说,无法在 U-Boot 阶段通过命令读取 sd card 或者 U 盘上的 Linux kernel 镜像和 dtb。
而且结合 U-Boot 代码分析,它启动 Linux kernel 的命令也是自己定制的,没有支持 U-Boot 标准的 distro boot 启动功能。
最后只能寄希望于通过 tftp 下载内核,简单做了一些实验,发现 tftp 功能是正常的,有希望。
所以有了一个折中的方法:通过 tftp 下载 Linux kernel Image 和 dtb,把第三方操作系统的 rootfs 放在 sd card 或者 U 盘上,
内核启动后,加载 sdcard 或者 U 盘上的系统。
制作 Ubuntu 24.04 镜像
考虑到 Armbian 对 RADXA 的支持非常好,这里直接尝试用 Armbian 的编译框架来构建 Ubuntu 镜像。
我把制作好的镜像上传到百度网盘里面 Armbian,感兴趣的同学可以下载尝试,提取码是 q1ll
,下载后解压得到最终的镜像文件。
然后通过 etcher 之类的软件把镜像写到 TF card上。
启动
把写有 Armbian 镜像的 TF card 插入到开发板上,并且确保开发板的 Ethernet1 网卡接有网线,启动开发板,然后进入 u-boot 命令行模式。
设置开发板的 tftp 下载功能:
setenv ipaddr 172.16.12.229;setenv gateaway 172.16.12.1;setenv serverip 172.16.12.69
上面三个 IP 需要根据自己的网络环境配置。
ipaddr
设置的开发板的 IP,你需要选一个和你提供 tftp 下载的电脑在同一个网段而且未被使用的 IP。
gateaway
是网关。
serverip
是提供 tftp 下载的电脑的 IP,而且这个电脑上要开启 tftp 服务,具体如何在电脑上开启 tftp 服务,网络上有很多资料可以参考。
把编译出来的 ubuntu_kernel.img 和 ubuntu.dtb 放在电脑上 /srv/tftp/
目录下。
tftp 0x601ff000 ubuntu_kernel.img;tftp 0x60000000 ubuntu.dtb
这条命令把 Linux kernel Image 和 dtb 分别下载到 开发板的 ddr 上,两个数字代表 ddr 上的内存地址,是通过阅读 Sirider 的启动代码得到的。
setenv bootargs console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0xe9490000 clk_ignore_unused loglevel=8 cc11_enabled=1 crashkernel=160M@0xcc0000000 irqchip.gicv3_pseudo_nmi=1 watchdog_thresh=10 root=/dev/mmcblk0p1 rootwait rw init=/sbin/init
这条命令主要修改传递给 Linux kernel 的命令行参数,其中最主要的是设置启动的 rootfs 在 mmcblk0p1
上,应为我们的开发板默认是启动 ufs(sda3) 上的文件系统
然后启动系统:
booti 0x601ff000 - 0x60000000
booti 后面的两个数字分别代表 Linux kernel 和 dtb 在内存中的位置,即前面 tftp 下载的位置。
体验 Armbian
系统启动后,注意观察串口,然后按照提示选择设置用户名、密码、选择时区、语言,就能进入 Ubuntu 桌面。
Armbian 默认可以 ssh 登录,比如我在启动的时候创建的用户名是 sirider:
这里使用的是 Armbian 24.11 版本,它基于 Ubuntu 24.04 做了一些扩展和用户体验增强。
Ubuntu 24.04 的官方壁纸。
标准的 Ubuntu 桌面。
Ubuntu 24.04 默认使用的图形合成器是 Wayland,这个和开发板上出场搭载的 Ubuntu 20.04 使用的 X11 不一样。
唯一比较遗憾的是目前使用的还是纯软件的图形渲染,理论上是可以使用开源的 Panfrost GPU 驱动,后面有时间了再尝试下。
Firefox 浏览器:
硬件资源管监控:
SiRider CPU 性能和硬件配置目前都是顶级水准,在大型的 Ubuntu 桌面下,即使没有 GPU 硬件加速,用户体验也很流畅。
目前有个缺点就是 U-Boot 加载 OS 的接口做的不是很标准,希望芯擎在这方面能加强下,至少让 U-Boot 能够通过标准的 mmc、usb 命令去读取 sdcard 或者 U 盘,这样外面的开发者就可以在这个基础上进一步适配标准的 dist_boot 启动流程,后面就有机会做更多的生态适配。