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

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

不太清楚制作流程。

我猜可能需要

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

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

5163 次点击
所在节点    Linux
28 条回复
azenk
2022-05-13 18:39:03 +08:00
从 0 开始的话,buildroot ,yocoto 一把梭。
youstu
2022-05-13 18:44:41 +08:00
一般如果是基于发行版,比如 debian 这些进行定制,可以用 live build 的方案,如果是像嵌入式系统这种,完全定制的,一般可以用 buildroot/yocto 的方案
PMR
2022-05-13 20:30:24 +08:00
@gam2046 #11
@luffy #12

https://wiki.debian.org/DebianInstaller/Preseed

这不叫制作发行版•
最多算无人值守安装方式
disk
2022-05-14 01:24:28 +08:00
@PMR 可以用它来做基于 debian 发行版,外面套个壳就行
msg7086
2022-05-14 03:30:19 +08:00
发行版本质上就是包管理。
Tyanboot
2022-05-14 05:29:11 +08:00
本质上还是包管理,你只要有了一个包管理器,剩下的就是编译和打包其他的组件了。

包管理器可以自己写,或者直接用现成的,比如 msys2 就直接用了 pacman 。

然后选一个 init ,用 openrc 或者 systemd 都行; bootloader 也选一个,各种什么 grub2 ,systemd-boot ,rEFInd 之类的,也可以不用 bootloader ,直接裸跑内核。

内核什么的现在发行版的做法都是,管他用不用的上,各种新的老的驱动统统勾选编译,去掉一些确实没人用的驱动,基本上 x86_64-defconfig 我电脑三分钟编译完,arch 的默认配置编译一次一小时,你就知道带了多少驱动了,基本完全不用担心兼容性。

内核的 initramfs 也有现成的方案,mkinitcpio, dracut, booster 之类的,选一个看顺眼的。

最后就是准备一个安装器,自己写一个,功能无非就是联网,分区,照着上面选好的几个必要组件安装这些包,至于怎么装,照着 Filesystem Hierarchy Standard 把文件扔进去就行了,设置用户,设置 bootloader 之类的。

等你这么一折腾,就发现最关键的就是包管理器怎么搞,安装器都是可有可无的,你看 arch 都没有这些花里胡哨的,直接调 pacman 给对应分区安装一堆包就完事了。按照上面的逻辑,arch 发行版干脆叫 pacman 发行版算了,毕竟安装过程全手动,整个过程不可替代的只有 pacman 包管理器。

最后的最后 iso 就更简单了,就是一个 livecd 环境,主流的方案也就是 squashfs+cow ,随便一搜一大把方案,实在不行解压一个 arch livecd 的 initramfs 看一下 hooks 就什么都知道了。
Chowe
2022-05-14 08:51:37 +08:00
可以关注各大发行版的自动构建平台,他们每天都会构建一个 iso 出来的
henvm
2022-06-05 21:40:43 +08:00

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

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

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

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

© 2021 V2EX