定制LoongArch musl-libc bootstrap 发行版(使用musl-libc替代glibc)
1. musl libc是什么?musl libc 和 glibc 的区别?
(1)musl,一种C标准函式库,主要使用于以Linux内核为主的作业系统上,目标为嵌入式系统与行动装置,采用MIT许可证释出。作者为瑞奇·费尔克(Rich Felker)。开发此库的目的是写一份干净、高效、符合标准的C标准库。引用自musl wiki
阅读有关 musl 的更多信息或访问 社区 wiki。
(2)Linux系统中有两个常用的C标准库:glibc和musl。它们都是C标准库的实现,但在一些方面存在差异。
glibc是GNU开发的C标准库,它是Linux系统中最常用的C库。它提供了丰富的特性和功能,可以在大多数情况下正常工作,但是在嵌入式系统等资源受限的环境中可能会有一些问题。由于其特性非常丰富,因此它的体积也相对较大。
musl是另一个C标准库的实现,它专注于精简、高效和可移植性。相比于glibc,它的代码量更少,体积更小,但是功能相对较少。它被广泛应用于嵌入式系统、容器和虚拟机等资源受限的环境中。
在选择C标准库时,需要考虑系统的特定需求和限制。如果系统对体积和性能要求较高,musl可能是更好的选择。如果系统需要使用丰富的特性和功能,那么glibc可能更适合。此外,对于一些特定的应用场景,比如开发操作系统内核,需要深入理解和掌握C标准库的实现原理和细节,才能选择合适的C标准库(原文)。
2. LoongArch musl-libc bootstrap distro 项目建立的原因是什么?
之前从头构建移植过通用的(基于glibc的)新世界 LoongArch Slackware 、新/老LoongArch Archlinux bootstrap(已完成了历史使命,关闭),经过上游LoongArch开发者辛勤的努力,现在拉取上游社区源码已基本能够完成构建各种发行版(各图形桌面、浏览器、libreoffice办公软件等软件)。所以这次准备玩点不一样的,准备从头构建一个基于 musl-libc 的linux发行版(libc 库为 musl libc),验证下musl和上游软件配合情况。
3. LoongArch musl-libc bootstrap distro 项目是做什么的,解决什么问题?
LoongArch musl-libc bootstrap distro 项目是构建一个 musl-libc 的发行版,为了更好的管理系统软件安装、移除、升级、更新,所以还需要选择一个包管理器进行管理系统,选择一个友好的包管理器(第一步先用pkgtool进行管理,第二步再定制一个包管理器,第三步还没想好),验证下musl和上游软件配合情况。
4.因为还在维护LoongArch Slackware发行版,所以源码包仓库使用LoongArch Slackware同源构建,但此使用musl-libc 作为C库,中间需要做的修改已patch形式存在与此项目repo下。
可以理解为:
第一步: Slackware musl-libc发行版
第二步: 自定义一个包管理器
第三步: 其他后续还没想好,所以现在先搞着
最后感谢上游LA开发者们的讨论,让我对移植到新架构上发行版,有了更多的认识,过程中有很多注意事项,比如代码规范、各核心基础软件和发行版ARCH的选择、上游社区的沟通方式等,这些问题的思考让我对发行版的整体有了更深的认识。