LicheePi 4A —— 这个小板有点意思(第一部分)

LicheePi 4A —— 这个小板有点意思

前言:

约莫去年,折腾一段时间 StarFive RISC-V 开发板,后因工作繁忙,停滞半年有余。去年底、今年初吧,RISC-V 开发板如雨后春笋般冒出来。前不久,吴老师非常慷慨的赠予我一块最新的 Sipeed LicheePi 4A 开发板,于是,家里又有好玩的玩具了。

正篇:

先聊聊 RISC-V 目前的“生态”。总结就是两个字:一般。作为极客,我是如何定义“生态”这个概念?从硬件和软件综合来看,硬件在全球市场,RISC-V 的开发板挺多,但是台式机主板,笔记本,服务器主板并不多,甚至有大部分存在外国媒体的拍摄照片中;那么软件呢?从肥猫构建 Archlinux RISCV 获得信息,RISC-V 架构能够编译出来的软件,比同是精简指令集的 ARM 都要多了。

但是软件质量呢?很难评估,原因是目前的 RISC-V 硬件仍然紧缺,甚至参差不齐,具有 GPU 加速的就更少了,跟别说能够测试图形化桌面系统的,于是 RISC-V 近来的情况就很囧,用户注重的图形化界面,很难有办法实测。

这里提到的硬件参差不齐其实是 RISC-V 在作为开源硬件一开始就存在,甚至在将来,也一直都可能存在的问题,即每一个厂商的 RISC-V IP 都包含了开源指令集,同时有自己的闭源指令集(有可能),而在提供给社区使用的时候,闭源指令集可能,或者完全不能被社区 Linux 操作系统发行版所使用,而在自己的商业发行版的 Linux 系统中,能够被调用并正常使用。

这并非耸人听闻,而是现在就已经正在发生的事。目前阿里平头哥的 RISC-V IP ,编译内核使用的 GCC 工具链是闭源开源的,提供了二进制包,给下游厂家去构建内核和软件;而 StarFive 的 RISC-V IP 在我去年使用和测试的时候,是没有这个情况的。

不过很有可能在将来,RISC-V 就像如今的 Linux 发行版一样,数量众多,且各具特色,有那么几个 IP 是用户常用的,另外一些,就是小众版本。RISC-V 不同的 IP 有自己的路线图,厂商和相应社区有自己的规划和发展方向,商业化和开源逐步寻找各自更加完美的互赢模式。

荔枝派4A,下面来详细聊聊这个开发板,是 Sipeed 以阿里平头哥 TH1520 为主控核心设计和开发产品,详细信息见下图:

在硬件配置方面,目前的荔枝派4A算是同类型开发板中性能最强的,不过,个人还未针对硬件方面做过相关测试,比方说跑分之类的,计划在下一篇文章中详细聊,最近主要围绕这个开发板做的事是打造其他的发行版,而这也是今天这篇文章的主要内容。

由 Sipeed 官方提供的系统镜像,是 Revy 为之打造的 RevyOS,操作系统本质是基于 Debian 构建,这个系统能够提供完整的 GPU 加速功能,不少开发板使用者、玩家、软件开发者也在基于这个系统做二次开发或者测试。下面将聊一聊 RevyOS 和我如何在此基础上制作其他 Linux 发行版的:

RevyOS

这个项目是目前唯一且确实能够启用板载 GPU 的系统,该操作系统项目基于 Debian 开发,默认提供了两个 rootfs 镜像,一个是基本功能的镜像,没有桌面环境;另一个默认提供了 xfce4 桌面环境的系统镜像,为用户提供 RISC-V 下 XFCE4 的桌面操作体验。

RevyOS 可以通过官方提供的地址进行下载,并使用官方提供的刷机工具进行安装,这个系统分为3个大部分,u-boot spl 部分是用于引导的,boot.ext4 部分是内核,里面还包括了固件 bin 文件用于无线网络等功能,rootfs.ext4部分是根目录,就是完整的系统本身。

作为 Linux 操作系统的用户和玩家,一个简单的 Linux 或者说嵌入式系统启动和运行一般遵循的规律是:启动加电–> spl 和 u-boot 部分(看作一个整体,类似于x86的 bios/uefi)–> 内核镜像启动 –> 挂载根目录启动完整操作系统。RevyOS 也不例外,这样的启动流程也有利于用户和玩家基于目前已有情况,减少折腾重构系统繁杂过程,直接在此基础上开始构建一个全新的发行版。

  1. 平头哥的内核需要阿里制作好的 GCC 编译工具链二进制文件构建(源码是开源的);
  2. 编译内核比较耗时;

那么为什么我们不直接使用 RevyOS 给我们做好的内核和内核模块呢,当然,以后的相关文章我也会自己折腾和把玩这个内核,包括重构。

了解相关流程,加上我去年 Starfive 构建系统的经验,为 LicheePi 4A 制作系统就不难了。

First Blood —— openSUSE Tumbleweed For LicheePi 4a

正像上面所提到的,RevyOS 已经为我提供好了可用的内核以及内核模块,我们需要的仅仅是 openSUSE Tumbleweed 的 rootfs 。那么这里存在两个难点第一,如何创建一个 RISC-V 架构的 openSUSE Tumbleweed 根目录?第二,如何将这个根目录制作成一个可以刷到开发板的块设备?

关于第一个问题,我们有很多方法,可以利用虚拟机,也可以使用容器,还可以使用已经有的 RISC-V 开发板从头编译。那么最快、最高效的方法,是用容器。我们可以使用的容器包括且不限于 LXD, Docker, systemd-nspawn, chroot,我使用的是 systemd-nspawn,因为我可以直接配合第二步,将制作根目录和制作可刷写的块设备合二为一,而我们的主系统配置好了 qemu-user 环境,这个方面大家可以查看自己使用的主力操作系统的 Wiki 文章,如何使用 qemu-user 模式模拟 RISC-V 运行环境。大致流程如下:

  1. 制作一个“干净” openSUSE Tumbleweed 根目录:
    • 可以下载,或者制作一个 Debian RISC-V 容器(如果找不到,用 RevyOS 的 rootfs 就可以)
    • 在 Debian RISC-V 的容器中安装 zypper ,即 openSUSE 的包管理器
    • 利用 zypper 将 RISC-V 架构的 openSUSE Tumbleweed 基础系统软件包安装到一个指定目录下,比方说 /mnt
    • 安装好之后,将该目录下所有文件夹和文件使用 tar 打包,通过 sftp 传输到主操作系统中
    • 创建一个块设备,并将这个块设备挂载到某个指定目录,比方说主操作系统的 /mnt 下
    • 将 tar 包,完整解压到 /mnt 目录
    • 通过 systemd-nspawn 容器进入该目录完成剩余 openSUSE Tumbleweed 系统构建的细节操作
  2. 将块设备刷写到开发板上,进行反复测试,测试目的是为了解决
    • 是否缺少某些系统服务
    • 是否缺少的软件组建
    • 清理冗余的系统包缓存
    • 默认登录用户和密码
    • 发行版特性优化

这基本上就是一个 openSUSE Tumbleweed 制作的过程来了,最后大家就能看到成果:

下载地址

root: licheepi

licheepi: sipeed

P.S

  1. openSUSE Tumbleweed RISC-V 的软件包由 openSUSE OBS 构建,目前软件非常新,非常适合测试
  2. 目前制作出来的带 xfce4 桌面环境的系统,图形化没有撕裂,卡顿的情况,操作还算流畅
  3. 欢迎大家测试和使用,反馈问题

Second Blood —— Archlinux For LicheePi 4a

按照以上的思路,我们可以用同样的方法去构建 Archlinux RISC-V 的 rootfs 。但从我的角度,直接去用肥猫领袖已经做好的 rootfs ,从而大大缩短制作系统的时间,岂不美哉?

在肥猫 RISC-V 镜像下载地址,很容易找到 rootfs 下载。

下载完成后,用 systemd-nspawn 稍微微调一下,就能直接上板测试和使用了,不过,开发板运行 Archlinux xfce4 桌面环境没有图形化加速,桌面操作撕裂,鼠标卡顿,不过 tty 终端和 ssh 远程是正常。

Archlinux For LicheePi 4a 镜像下载地址

root: licheepi

sipeed: licheepi

P.S 目前正在利用 Archlinux RISC-V 构建 NixOS。在完稿时,仍在编译中。

Third Blood —— Ubuntu For LicheePi 4a

这就更简单了,在 Ubuntu 官方网站,你能方便的找到 Ubuntu 23.04 For RISC-V Unmatched 的镜像,完整的镜像下载之后,随便找个 USB 设备,用 dd 命令将镜像刷上去,你会注意到 USB 设备会显示根目录,可以直接将这个根目录的块设备用 dd 命令反刷出一个本地的块设备,用 systemd-nspawn 容器进去,简化这个系统,剔除不要的软件,修改 /etc/fstab,增加我们荔枝派4a的内核模块等等,删除缓存的软件包。最后将这个根目录用 tar 打包保存到主系统下,重建一个为荔枝派4a,大小为4G块设备,将 tar 包解压进去,就可以再到容器中微调后刷写到荔枝派上使用了。

Ubuntu 23.04 For LicheePi 4a 镜像下载地址

root: licheepi

sipeed: licheepi

P.S 同样的,Ubuntu 上一样存在图形化卡顿、撕裂的情况,建议用户通过 ssh 远程测试和使用。

本文小节:

这并不是 LicheePi 4a 最终完整测评文章,我还会写好几篇文章已经相关视频进行讲述,期待大家的反馈。目前利用开发板构建 NixOS,争取后续能够运行起来,争取……

Share

You may also like...

9 Responses

  1. 二花说道:

    哈哈昨天从 NixOS tg 群过来滴,话说 NixOS 构建成功了没?期待能开源下或者简单描述下配置方案,我挺感兴趣❤️

    • houge说道:

      哈哈哈,前几天因为 /tmp 炸了 rust ,最近暂停了一下

      • 二花说道:

        我也在尝试将 NixOS 跑在 LP4A 上,已经搞了一阵了,目前遇到的问题主要是没办法在 NixOS 构建时改用 T-Head 提供的工具链,官方的工具链直接用有一些指令集、deconfig 相关的报错,很奇怪。

        如果 huoge 有兴趣可以看看我的配置,是用的 nix flake.

      • 二花说道:

        https://github.com/ryan4yin/nixos-licheepi4a
        欸仓库地址没贴上来,再贴下。

      • 二花说道:

        又重读了一遍文章,发现原来 T-Head 的 gcc 是开源的,那感觉用它替换掉 NixOS 官方 gcc 的想法是可行的,正在构建中…

        • 二花说道:

          还是没搞定,仍然失败…
          有点头疼了,我想我可能得先深入学一下 Linux 内核构建,然后再折腾这个…

          • houge说道:

            我现在准备用算能这个机器跑,不过我要先把 Archlinux 先弄出来,估计也快~

  2. 老坛酸菜说道:

    好像很久没更新b站视频了

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注