我想了解一个 Linux 发行版是怎么构建的,在哪里能看到 Debian、Fedora、Arch 这类发行版从源码、补丁到发布到软件源和打包 ISO 的构建流程?

122 天前
 LokiSharp
2741 次点击
所在节点    Linux
18 条回复
Tink
122 天前
Linux From Scratch
了解一下
Rorysky
122 天前
可以看看 opensuse 这是你没提到但是很开放过程的项目
https://build.opensuse.org/
Rorysky
122 天前
其实 Linux 版本发布中最重要分量的工作是没提到的 测试
cmdOptionKana
122 天前
安装一次 Gentoo
安装一次 Slackware
安装一次 Linux From Scratch
然后再倒过来安装一次 Slackware ,一次 Gentoo

第一次是为了降低难度,先通过安装 gentoo 学一点编译步骤,第二次是因为已经理解了细节,要倒回去看怎样从简陋发行版一步步变为相对比较成熟的发行版。
null2error
122 天前
虽然可能更小众一点的,但是可以看看 Yocto~
z4zr
122 天前
搞嵌入式 linux 结果被 Yocto 搞得外焦里嫩🤣
NessajCN
122 天前
编译内核是大家都一样的,
发行版之间的区别是包管理和预装软件
所以你如果要自己发行一个发行版,那你有两个选择:
用别人现成的包管理(如 debian 的 apt, arch 的 pacman )
或者自己整一个包管理(那你得手动实现软件仓库、打包你想放进仓库的第三方软件,然后管理软件源)

包管理搞定后需要把预装软件用选好的包管理塞进安装镜像,并且做好安装脚本和引导
当然也可以学 gentoo 或 arch 不提供脚本只提供编译/安装工具让用户自己装

后续的发补丁都是通过包管理。各个包管理的打包、分发方式都不一样
譬如 arch 的 pacman
https://pacman.archlinux.page/
基本就是通过手写 PKGBUILD 文件来实现一整个编译、打包、分发工作
right0
122 天前
内核编译 包编译 通过包管理从头开始装包最后装成一个能用的发行版....
https://github.com/RightFS/oemaker 这玩意是我之前做 OpenEuler 项目时改的一个 ISO 打包工具, 看起来 conda 提供了界面, 然后不停调用包管理器把镜像里的所有包给装上就完事了, 每个包都有自己的依赖验证 /preinstall /postinstall.

我觉得构建发行版这玩意技术难度应该是没多少, 但是过程很繁琐.

毕竟 openEuler 好多包里面都是批量替换人家包里的字符串.我调试的时候看到好几个没替换完整的了,前面说联系 openeuler 后面给的网址是人家的.
UIXX
122 天前
Linux 发行版是怎么构建的?
大部分的系统镜像是经由系统 SDK 构建而成,这个 SDK 就是一系列流程化脚本集合,开源的比如 https://github.com/armbian/build ,它可用于构建 Debian 、Ubuntu 镜像。
最快的学习方式是先用一用(这种 SDK 会有 GUI ),然后对于不懂的部分再针对性地看代码。

另一种极端的学习方式是从主板硬件开始,了解架构及目标处理器的特性、入口与引导流程,再进入应用软件的范围。

大的流程不难理解,魔鬼在于细节,尤其需要对特定主板编写构建程序。
tap91624
122 天前
open build system 找一下
qianxunlan
122 天前
我会比较建议玩一玩嵌入式,因为嵌入式开发板用不了官方镜像,得自己打包。
举个例子,荔枝派 4A 的社区镜像,我朋友做的,你看它 github action 跟构建脚本,大概就能明白是怎么回事了

https://github.com/chainsx/fedora-riscv-builder
qianxunlan
122 天前
或者这个更或许简单可行些,买个二三十块钱的 milk-v duo 小板子,玩一玩它官方的这个 buildroot-sdk 订制系统:

https://github.com/milkv-duo/duo-buildroot-sdk
LokiSharp
121 天前
@qianxunlan #12 我现在手持树莓派和两个 RK3588 板子,他们有能玩的么?
LokiSharp
121 天前
@cmdOptionKana #4 昨天晚上装了个 Gentoo 玩,好像不涉及打包制作发行版?
LXGMAX
121 天前
@LokiSharp 3588 可以折腾 yocto 、buildroot 等,自己定制 rootfs 也相当于出发行版了
qianxunlan
121 天前
#13 那肯定能玩。
关于 rk3588 ,如果你是 Orange PI ,可以直接研究它的官方构建代码:

https://github.com/orangepi-xunlong/orangepi-build

以及前面老兄提到的 armbian 构建脚本,armbian 相当有名,支持众多 arm 开发版,但也因为这个乐音,代码更复杂些:

https://github.com/armbian/build

或者你想玩点特别的,也可以整整 v 站上近年🔥过一阵的 NixOS ,这个项目支持好几块 rk3588 的板子(相对的 nixos 有相当不同的设计理念,入门会比较难):

https://github.com/ryan4yin/nixos-rk3588

关于树莓派,毕竟相当有名,首先 armbian 跟 nixos 肯定也能刷能玩,但我没折腾过所以就不谈了。
druggo
118 天前
@LokiSharp Gentoo 的构建工具是这个 https://wiki.gentoo.org/wiki/Catalyst
Debian 的话是 debootstrap ,软件包构建过程日志可以在这里看到 https://buildd.debian.org/
LokiSharp
117 天前
@qianxunlan #16 我的是 Nano pi R6S 打算折腾下在上面装 nixos 试试了

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

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

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

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

© 2021 V2EX