经过数月的
漫长等待,最近我收到了
HiFive Unleashed ,这真是太酷了。 对于那些不了解最新信息的人,HiFive Unleashed是首款针对Linux的
RISC-V单板,支持Linux。 如果尚未理解,RISC-V是一种
开放的 ,免费的
指令集体系结构 ,而HiFive是一种实现它的开放式处理器。 这是他在我的餐桌上:
董事会真的
很棒 。 在接下来的几个月中,我将尝试准备持续集成服务
build.sr.ht所需的一切,通过该服务,Alpine Linux端口的其余部分将被自动化,以及所需的任何其他操作系统(包括非Linux)和用户程序的安装。连接到RISC-V。 我很确定这将是第一个对RISC-V设备公开的项目。
将操作系统移植到新体系结构有两个阶段:引导(引导)和实际上是移植。 缺乏更好的条件。 要进行引导,我们需要一个交叉编译器,我们需要移植libc并交叉编译基本元素。 当系统能够
自我托管 (即可以自行编译)时,
引导程序便会终止。 “移植”过程涉及编译适用于您的操作系统的所有软件包。 该过程可能是耗时的并且通常是自动化的。
第一步是交叉编译器。 RISC-V支持出现在几个版本的binutils 2.28和gcc 7.1中,您不必担心。 使用
--target=riscv64-linux-musl
参数收集两个编译器就足够了。 另一个重要部分是标准C库或libc。 与C编译器不同,此步骤需要我付出一些努力,因为Alpine Linux基于musl libc,并且其RISC-V的端口尚未完成,并且未包含在主分支中。
尽管没有经过如此大规模的测试,但是有一个
补丁可以支持RISC-V。 因此,我遇到了几个错误,为此我编写了几个补丁(
1,2,3 )。 基于RISC-V端口的有效发行版是移植版本是否成熟的令人信服的论据,因此我很高兴发现了这些错误。 在此之前,您必须手动将端口和补丁添加到Alpine Linux musl软件包中。
C编译器和libc实现为向您的平台移植大量软件打开了大门。 下一步是为自托管系统识别并传输必要的程序包。 在Alpine中,有一个很棒的
脚本可以准备交叉编译器并构建基础系统。 这些软件包中的很多(如果不是大多数)都需要修复,配置和手动干预-这不是现成的解决方案,而是一种非常有用的工具。 此阶段最重要的软件包是本机工具(即,编译器不仅可以编译,而且可以在RISC-V下运行),密码管理器本身以及其他各种有用的东西,例如tar,patch,openssl等。
一旦编译了必要的程序包并且系统可以自行编译,便开始了漫长的迁移过程。 在这里,如果硬件足够快,最好放弃交叉编译器并开始本地组装。 这是一个折衷方案,因为RISC-V系统比我的x86_64引导计算机要慢一些,但是许多软件包需要大量的手动配置和更正才能进行交叉编译。 由此节省的时间弥补了较慢的汇编速度(尽管HiFive Unleashed的速度给我留下了深刻的印象。主要的瓶颈是mmcblk驱动程序,但是一旦文件进入内核缓存,一切都会变得非常快速和愉快)。
有成千上万个软件包,所以对我(以及从事迁移工作的每个人)的下一步是使其余过程自动化。 对我而言,中间步骤是与builds.sr.ht服务集成,以组织我自己的工作并使对RISC-V感兴趣的其他人可以使用这些周期。 并非所有软件包都会自动移植-但是很多软件包会自动移植! 移植了编程语言(C,Python,Perl,Ruby(我已经做完了!)等等)之后,大多数开源程序都可以在整个体系结构中移植。 我在sr.ht上的主要目标之一是鼓励分发便携式软件!
如果任何读者有他们自己的RISC-V硬件,或者想与qemu一起尝试,这里是
RISC-V的Alpine Linux存储库 。 这样的东西会在/ mnt中安装它:
apk add \ -X https://mirror.sr.ht/alpine/main/ \ --allow-untrusted \ --arch=riscv64 \ --root=/mnt \ alpine-base alpine-sdk vim chrony
在第一次启动时运行
/bin/busybox --install
和
apk fix
。 这项工作仍在进行中,因此在我清除流程并制作正常的安装脚本之前,其余的工作对读者来说是一个练习。 祝你好运
结束语:非常感谢您为Freenode上#riscv社区的成员以及Debian和Fedora开发人员提供的帮助,他们为许多程序扫清了道路并发布了补丁程序! 但是我得到了移动肌肉的全部乐趣,所以道路并不完全干净:)