自2023年11月20日FreeBSD 14.0 发布,FreeBSD make buildworld构建所需工具链和Ports软件集合里的基础工具链的版本和支持特性大部分均已升级至支持LoongArch的版本,在引入一些MK补丁的情况下,基础编译环境已具备最小内核移植构建的要求。
比较FreeBSD和Linux的移植过程,其最大的区别在于FreeBSD source 是一个整合的代码树,包括内核、基础编译工具链、构建环境以及基础系统管理工具集,为系统移植提供了很大的便利,与此同时也多了些条件限制。
为了最小化避免代码更新带来的干扰,所以初期的FreeBSD移植以 14 release 代码库为基础,移植过程中通过适当引入stable版本补丁,满足最小内核环境的各种支持。对构建过程一些没有引入LoongArch支持的工具,采用backports的原则,确保FreeBSD src代码树的版本一致性。
lauosc社区着手FreeBSD移植,目的和debian ports一样,营造一个loongarch移植学习环境,群策群力共建LoongArch软件生态,所以自发起之日起,所有LoongArch爱好者都可以参与其中,通过QQ群和本社区以及gitee进行交流沟通,lauosc社区也会对代码动态和进度进行汇总。
lauosc 2024年01月02日
状态和代码资源
项目代码库地址,欢迎 FreeBSD 和 LoongArch 爱好者加入:
https://gitee.com/lauosc/freebsd
无尘同学的补丁库
https://gitee.com/yushanwei/freebsd4loongarch
文档和相关讨论
FreeBSD Handbook 中文手册
https://docs.freebsd.org/zh-cn/books/handbook/
FreeBSD China 网站
http://www.chinafreebsd.cn/
把FreeBSD移植到LoongArch的基本思路
https://bbs.loongarch.org/d/33-freebsdloongarch
有没有开始考虑或着手把loongarch移植到bsd系统的?
https://bbs.loongarch.org/d/27-loongarchbsd
移植基本步骤和进度划分:
1、项目启动从 FreeBSD 14 x86 环境下 buildworld 构建开始,这是一个基础编译环境和基础工具集的构建过程,目的是生成下一步 buildkernel 所需要的编译器和工具程序,具体的过程还需要进一步梳理。最终要达到的目标是,可以顺利运行如下构建命令:
make buildworld TARGET=loongarch
2、FreeBSD的内核代码是放在 src/sys 目录下,不同架构使用不同的子目录,内核代码框架的编写,初期是以可以构建最小内核为目标,可以顺利运行如下构建命令:
make buildkernel TARGET=loongarch KERNCONF=DEFAULTS
3、构建 Qemu 运行环境,提供在FreeBSD X64机器下运行FreeBSD loongarch的基础运行环境
这里面要提一下,FreeBSD有个软件库叫“Ports",汇集了相当多的通用软件的编译控制文件,并用目录树来进行组织,如qemu的目录位置在/usr/ports/emulators/qemu,它的构建命令大致是:
cd /usr/ports/emulators/qemu
make TARGET=loongarch
它会自动计算依赖,并根据依赖关系,进行递归构建,而移植要做的,是确保每个依赖软件包都能正常构建并可以工作。
4、安装镜像的制作,FreeBSD的安装程序是bsdinstall,使用它可以安装FreeBSD的基础环境,大致上包含buildworld ,buildkernel所生成的基本系统,到这一步基本的FreeBSD移植就完成了。