不太清楚制作流程。
我猜可能需要
但问题是,如何把上面这几点整合起来。
所有的 linux 相关的软件都是开源的,都可以自由获取。问题是如何整合?
1
knir 2022-05-13 10:37:47 +08:00
|
2
geekvcn 2022-05-13 10:41:49 +08:00
最省事的就是用 Debian 内核和包管理,然后其他的自己调整封装
|
3
huangmingyou 2022-05-13 10:45:58 +08:00
@geekvcn 然后发现,其实这些调整封装用 ansible 就能做
|
4
dreasky 2022-05-13 10:48:34 +08:00
|
5
Biwood 2022-05-13 10:53:13 +08:00
我的理解,基于 Debian 的发行版,和跟 Debian 并行的发行版的整合方式不是一回事,前者应该容易一些,类似二次开发,后者需要对内核模块比较熟悉。
而且,首先你要搞清楚的是为什么要做这个发行版,是有什么更好的软件架构方案,可以超越 Debian/Arch/RHEL 等发行版,还是说仅仅在 UI 体验上做做手脚,抑或是仅仅抱着学习的目的走一边流程。 |
6
Tink 2022-05-13 10:57:14 +08:00 via Android
lfs 看一下
|
7
whenov 2022-05-13 11:51:43 +08:00
Linux 发行版的关键是社区。只想走一遍流程的话,可以看看 LFS ( Linux From Scratch )
|
8
duke807 2022-05-13 12:25:02 +08:00 via Android
你試試安裝一下 gentoo 你就知道了,稍加改動就能出自己的發行版
|
9
CEBBCAT 2022-05-13 12:51:01 +08:00
《 Linux From Scratch 》+1
与其说是没人谈,不如说是不会搜 |
10
luffy OP 这里有几点困惑
1. archlinux, debian 等 是怎么从 0 开始制作出来的? 跟 LFS 有关联嘛? 2. LFS 是对包括内核在内的每个包从 0 编译到自己的电脑上,能制成 iso ,安装在别人的电脑上?其它人的电脑硬件跟自己的不太一样, 自己编译出来的内核能在这些不同硬件设备上的电脑用? 感觉我的问题应该改成: 从 0 制作一个类似 arch / debian 发行版的流程 |
11
gam2046 2022-05-13 13:43:06 +08:00
问个相关问题:如何定制 Linux 并进行批量化的安装。
比如公司内需要统一安装一批服务器环境,同时也有自定义需求,那么如何根据自己的需求修改完毕后,方便的部署到其他设备上呢? dd 当然是一个可选项,还有其他更优雅的实现方式嘛,可以让非技术人员也可以自己安装 |
12
luffy OP @gam2046 你的这个问题 跟 我问的问题 其实本质上是同一个问题。
就是把需要的定制化的软件做成可以让其它人轻易安装。区别只是定制化程度不同,具体的做法跟工作量会有不同。 比如,假设,要基于 debian 做一个发行版,但只需要把默认的 gnome 换成 kde 之类。 |
14
moonjourney 2022-05-13 14:11:15 +08:00
`nixos-generate -f iso -c ./config.nix`
就一份配置一个命令 |
15
root01 2022-05-13 14:44:26 +08:00
我能搞个 linux live cd 我就知足了
|
16
baobao1270 2022-05-13 16:45:12 +08:00 via Android
首先你需要一个包管理器+自动构建工具
这个做好了就完成一半的工作了 启动脚本其实很简单,甚至没有 initrd 直接 boot 到 ext4 都可以,现在都是 systemd 统管一切了 ISO 稍微麻烦一点,但是也不难 |
17
exiledkingcc 2022-05-13 17:27:30 +08:00
|
18
geekvcn 2022-05-13 18:11:17 +08:00
@luffy 自己从头编译就是先编译或者自己写个 bootloader ,开源的有 grub ,uboot 等。然后编译 Linux 内核,想要兼容的硬件就同时编译对应的内核驱动模块。这两个都做好了就是写自己的包管理,打包用软件和部署自己的服务器源。最后在内核的基础上安装你想默认安装的软件包,然后封装发行,用户直接 dd 安装。想要个性化安装就是封装的时候搞个初始化系统,带上磁盘工具方便调整和格式化分区。
|
19
geekvcn 2022-05-13 18:17:16 +08:00
@luffy 总之维护一个发行版费时费力,真有想法也没必要重头造轮子,不但加大 Linux 社区碎片化,而且一般个人和组织也没财力维护,毕竟光包源服务器投入就很大,还有各种兼容性问题要解决。不如直接在 Debian Arch 社区的基础上加上自己想修改的东西,相当于建一个分支。
|
21
azenk 2022-05-13 18:39:03 +08:00 via Android
从 0 开始的话,buildroot ,yocoto 一把梭。
|
22
youstu 2022-05-13 18:44:41 +08:00
一般如果是基于发行版,比如 debian 这些进行定制,可以用 live build 的方案,如果是像嵌入式系统这种,完全定制的,一般可以用 buildroot/yocto 的方案
|
23
PMR 2022-05-13 20:30:24 +08:00 via Android 1
|
25
msg7086 2022-05-14 03:30:19 +08:00 via Android
发行版本质上就是包管理。
|
26
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 就什么都知道了。 |
27
Chowe 2022-05-14 08:51:37 +08:00 via iPhone
可以关注各大发行版的自动构建平台,他们每天都会构建一个 iso 出来的
|