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

2022-5-13 23:0:14 Author: v2ex.com 阅读量:23 收藏

不太清楚制作流程。

我猜可能需要

  • 写启动脚本
  • 开发包管理 或者 集成现有包管理
  • 做一些桌面定制,甚至自己开发桌面
  • 如果是基于现成的发行版做的,需要考虑要把哪些包删除,哪些包可以引入
  • 烧录 ISO,提供镜像下载, 准备论坛,提供交流平台

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

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

第 1 条附言  ·  9 小时 23 分钟前

有朋友谈到 LFS, gentoo 。

这两个发行版还是侧重于,从零在自己的电脑上构建 linux 。的确是在自己的电脑上做到完全的 DIY.

如果把这个讨论主题换成是: 假如你希望构建一个像 debian / arch 这样的发行版,你会怎么做? 需要有自己的包管理,当然也要有自己的启动流程 等。

geekvcn

2

geekvcn      12 小时 18 分钟前

最省事的就是用 Debian 内核和包管理,然后其他的自己调整封装

Biwood

5

Biwood      12 小时 7 分钟前

我的理解,基于 Debian 的发行版,和跟 Debian 并行的发行版的整合方式不是一回事,前者应该容易一些,类似二次开发,后者需要对内核模块比较熟悉。

而且,首先你要搞清楚的是为什么要做这个发行版,是有什么更好的软件架构方案,可以超越 Debian/Arch/RHEL 等发行版,还是说仅仅在 UI 体验上做做手脚,抑或是仅仅抱着学习的目的走一边流程。

Tink

6

Tink      12 小时 3 分钟前 via Android

lfs 看一下

whenov

7

whenov      11 小时 8 分钟前

Linux 发行版的关键是社区。只想走一遍流程的话,可以看看 LFS ( Linux From Scratch )

duke807

8

duke807      10 小时 35 分钟前 via Android

你試試安裝一下 gentoo 你就知道了,稍加改動就能出自己的發行版

CEBBCAT

9

CEBBCAT      10 小时 9 分钟前

《 Linux From Scratch 》+1

与其说是没人谈,不如说是不会搜

luffy

10

luffy      9 小时 28 分钟前

这里有几点困惑
1. archlinux, debian 等 是怎么从 0 开始制作出来的? 跟 LFS 有关联嘛?

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

感觉我的问题应该改成:

从 0 制作一个类似 arch / debian 发行版的流程

gam2046

11

gam2046      9 小时 17 分钟前

问个相关问题:如何定制 Linux 并进行批量化的安装。

比如公司内需要统一安装一批服务器环境,同时也有自定义需求,那么如何根据自己的需求修改完毕后,方便的部署到其他设备上呢? dd 当然是一个可选项,还有其他更优雅的实现方式嘛,可以让非技术人员也可以自己安装

luffy

12

luffy      9 小时 12 分钟前

@gam2046 你的这个问题 跟 我问的问题 其实本质上是同一个问题。

就是把需要的定制化的软件做成可以让其它人轻易安装。区别只是定制化程度不同,具体的做法跟工作量会有不同。
比如,假设,要基于 debian 做一个发行版,但只需要把默认的 gnome 换成 kde 之类。

moonjourney

14

moonjourney      8 小时 48 分钟前

`nixos-generate -f iso -c ./config.nix`
就一份配置一个命令

root01

15

root01      8 小时 15 分钟前

我能搞个 linux live cd 我就知足了

baobao1270

16

baobao1270      6 小时 15 分钟前 via Android

首先你需要一个包管理器+自动构建工具
这个做好了就完成一半的工作了
启动脚本其实很简单,甚至没有 initrd 直接 boot 到 ext4 都可以,现在都是 systemd 统管一切了
ISO 稍微麻烦一点,但是也不难

geekvcn

18

geekvcn      4 小时 48 分钟前

@luffy 自己从头编译就是先编译或者自己写个 bootloader ,开源的有 grub ,uboot 等。然后编译 Linux 内核,想要兼容的硬件就同时编译对应的内核驱动模块。这两个都做好了就是写自己的包管理,打包用软件和部署自己的服务器源。最后在内核的基础上安装你想默认安装的软件包,然后封装发行,用户直接 dd 安装。想要个性化安装就是封装的时候搞个初始化系统,带上磁盘工具方便调整和格式化分区。

geekvcn

19

geekvcn      4 小时 42 分钟前

@luffy 总之维护一个发行版费时费力,真有想法也没必要重头造轮子,不但加大 Linux 社区碎片化,而且一般个人和组织也没财力维护,毕竟光包源服务器投入就很大,还有各种兼容性问题要解决。不如直接在 Debian Arch 社区的基础上加上自己想修改的东西,相当于建一个分支。

azenk

21

azenk      4 小时 21 分钟前 via Android

从 0 开始的话,buildroot ,yocoto 一把梭。

youstu

22

youstu      4 小时 15 分钟前

一般如果是基于发行版,比如 debian 这些进行定制,可以用 live build 的方案,如果是像嵌入式系统这种,完全定制的,一般可以用 buildroot/yocto 的方案