HackforFun · 9月21日 · 福建

SiRider S1: 启动 Ubuntu 24.04

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.png

在 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-ssh.png

armbain-neofetch.png

这里使用的是 Armbian 24.11 版本,它基于 Ubuntu 24.04 做了一些扩展和用户体验增强。

Armbian-desktop0.png

Ubuntu 24.04 的官方壁纸。

Arbian-Launcher.png

标准的 Ubuntu 桌面。

Armbian-system.png

Armbian-hwinfo.png

Ubuntu 24.04 默认使用的图形合成器是 Wayland,这个和开发板上出场搭载的 Ubuntu 20.04 使用的 X11 不一样。

唯一比较遗憾的是目前使用的还是纯软件的图形渲染,理论上是可以使用开源的 Panfrost GPU 驱动,后面有时间了再尝试下。

Firefox 浏览器:

Armbian-browser.png

硬件资源管监控:
Armbian-monitor.png

SiRider CPU 性能和硬件配置目前都是顶级水准,在大型的 Ubuntu 桌面下,即使没有 GPU 硬件加速,用户体验也很流畅。

目前有个缺点就是 U-Boot 加载 OS 的接口做的不是很标准,希望芯擎在这方面能加强下,至少让 U-Boot 能够通过标准的 mmc、usb 命令去读取 sdcard 或者 U 盘,这样外面的开发者就可以在这个基础上进一步适配标准的 dist_boot 启动流程,后面就有机会做更多的生态适配。

推荐阅读
关注数
10379
内容数
80
搭载基于安谋科技自研“周易”NPU的芯擎科技工业级“龍鹰一号”SE1000-I处理器
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息