没人谈谈如何制作 Linux 发行版嘛

2022-05-13 10:31:44 +08:00
 luffy

不太清楚制作流程。

我猜可能需要

但问题是,如何把上面这几点整合起来。

所有的 linux 相关的软件都是开源的,都可以自由获取。问题是如何整合?

5128 次点击
所在节点    Linux
28 条回复
knir
2022-05-13 10:37:47 +08:00
geekvcn
2022-05-13 10:41:49 +08:00
最省事的就是用 Debian 内核和包管理,然后其他的自己调整封装
huangmingyou
2022-05-13 10:45:58 +08:00
@geekvcn 然后发现,其实这些调整封装用 ansible 就能做
dreasky
2022-05-13 10:48:34 +08:00
Biwood
2022-05-13 10:53:13 +08:00
我的理解,基于 Debian 的发行版,和跟 Debian 并行的发行版的整合方式不是一回事,前者应该容易一些,类似二次开发,后者需要对内核模块比较熟悉。

而且,首先你要搞清楚的是为什么要做这个发行版,是有什么更好的软件架构方案,可以超越 Debian/Arch/RHEL 等发行版,还是说仅仅在 UI 体验上做做手脚,抑或是仅仅抱着学习的目的走一边流程。
Tink
2022-05-13 10:57:14 +08:00
lfs 看一下
whenov
2022-05-13 11:51:43 +08:00
Linux 发行版的关键是社区。只想走一遍流程的话,可以看看 LFS ( Linux From Scratch )
duke807
2022-05-13 12:25:02 +08:00
你試試安裝一下 gentoo 你就知道了,稍加改動就能出自己的發行版
CEBBCAT
2022-05-13 12:51:01 +08:00
《 Linux From Scratch 》+1

与其说是没人谈,不如说是不会搜
luffy
2022-05-13 13:32:03 +08:00
这里有几点困惑
1. archlinux, debian 等 是怎么从 0 开始制作出来的? 跟 LFS 有关联嘛?

2. LFS 是对包括内核在内的每个包从 0 编译到自己的电脑上,能制成 iso ,安装在别人的电脑上?其它人的电脑硬件跟自己的不太一样, 自己编译出来的内核能在这些不同硬件设备上的电脑用?

感觉我的问题应该改成:

从 0 制作一个类似 arch / debian 发行版的流程
gam2046
2022-05-13 13:43:06 +08:00
问个相关问题:如何定制 Linux 并进行批量化的安装。

比如公司内需要统一安装一批服务器环境,同时也有自定义需求,那么如何根据自己的需求修改完毕后,方便的部署到其他设备上呢? dd 当然是一个可选项,还有其他更优雅的实现方式嘛,可以让非技术人员也可以自己安装
luffy
2022-05-13 13:47:19 +08:00
@gam2046 你的这个问题 跟 我问的问题 其实本质上是同一个问题。

就是把需要的定制化的软件做成可以让其它人轻易安装。区别只是定制化程度不同,具体的做法跟工作量会有不同。
比如,假设,要基于 debian 做一个发行版,但只需要把默认的 gnome 换成 kde 之类。
billlee
2022-05-13 13:52:49 +08:00
@gam2046 redhat 系可以用 anaconda
moonjourney
2022-05-13 14:11:15 +08:00
`nixos-generate -f iso -c ./config.nix`
就一份配置一个命令
root01
2022-05-13 14:44:26 +08:00
我能搞个 linux live cd 我就知足了
baobao1270
2022-05-13 16:45:12 +08:00
首先你需要一个包管理器+自动构建工具
这个做好了就完成一半的工作了
启动脚本其实很简单,甚至没有 initrd 直接 boot 到 ext4 都可以,现在都是 systemd 统管一切了
ISO 稍微麻烦一点,但是也不难
exiledkingcc
2022-05-13 17:27:30 +08:00
如果只是想定制化发行版,比如 ubuntu ,可以直接用工具:
https://github.com/PJ-Singh-001/Cubic

如果是做自己的发行版,那就是 LFS 。
geekvcn
2022-05-13 18:11:17 +08:00
@luffy 自己从头编译就是先编译或者自己写个 bootloader ,开源的有 grub ,uboot 等。然后编译 Linux 内核,想要兼容的硬件就同时编译对应的内核驱动模块。这两个都做好了就是写自己的包管理,打包用软件和部署自己的服务器源。最后在内核的基础上安装你想默认安装的软件包,然后封装发行,用户直接 dd 安装。想要个性化安装就是封装的时候搞个初始化系统,带上磁盘工具方便调整和格式化分区。
geekvcn
2022-05-13 18:17:16 +08:00
@luffy 总之维护一个发行版费时费力,真有想法也没必要重头造轮子,不但加大 Linux 社区碎片化,而且一般个人和组织也没财力维护,毕竟光包源服务器投入就很大,还有各种兼容性问题要解决。不如直接在 Debian Arch 社区的基础上加上自己想修改的东西,相当于建一个分支。
geekvcn
2022-05-13 18:22:41 +08:00
@luffy 国内的大厂所谓的自主开发操作系统都不重新造轮子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852581

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX