我想了解一个 Linux 发行版是怎么构建的,在哪里能看到 Debian、Fedora、Arch 这类发行版从源码、补丁到发布到软件源和打包 ISO 的构建流程? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LokiSharp
V2EX    Linux

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

  •  1
     
  •   LokiSharp
    LokiSharp 2024-09-29 13:46:46 +08:00 3457 次点击
    这是一个创建于 414 天前的主题,其中的信息可能已经有所发展或是发生改变。
    18 条回复    2024-10-04 19:33:27 +08:00
    Tink
        1
    Tink  
    PRO
       2024-09-29 13:50:26 +08:00   1
    Linux From Scratch
    了解一下
    Rorysky
        2
    Rorysky  
       2024-09-29 13:54:40 +08:00   1
    可以看看 opensuse 这是你没提到但是很开放过程的项目
    https://build.opensuse.org/
    Rorysky
        3
    Rorysky  
       2024-09-29 14:02:13 +08:00   1
    其实 Linux 版本发布中最重要分量的工作是没提到的 测试
    cmdOptionKana
        4
    cmdOptionKana  
       2024-09-29 14:05:05 +08:00   2
    安装一次 Gentoo
    安装一次 Slackware
    安装一次 Linux From Scratch
    然后再倒过来安装一次 Slackware ,一次 Gentoo

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

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

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

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

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

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

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

    https://github.com/chainsx/fedora-riscv-builder
    qianxunlan
        12
    qianxunlan  
       2024-09-29 20:44:07 +08:00 via Android   1
    或者这个更或许简单可行些,买个二三十块钱的 milk-v duo 小板子,玩一玩它官方的这个 buildroot-sdk 订制系统:

    https://github.com/milkv-duo/duo-buildroot-sdk
    LokiSharp
        13
    LokiSharp  
    OP
       2024-09-30 10:11:07 +08:00
    @qianxunlan #12 我现在手持树莓派和两个 RK3588 板子,他们有能玩的么?
    LokiSharp
        14
    LokiSharp  
    OP
       2024-09-30 10:12:21 +08:00
    @cmdOptionKana #4 昨天晚上装了个 Gentoo 玩,好像不涉及打包制作发行版?
    LXGMAX
        15
    LXGMAX  
       2024-09-30 10:43:46 +08:00   1
    @LokiSharp 3588 可以折腾 yocto 、buildroot 等,自己定制 rootfs 也相当于出发行版了
    qianxunlan
        16
    qianxunlan  
       2024-09-30 10:48:39 +08:00 via Android   1
    #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
        17
    druggo  
       2024-10-03 11:36:42 +08:00   1
    @LokiSharp Gentoo 的构建工具是这个 https://wiki.gentoo.org/wiki/Catalyst
    Debian 的话是 debootstrap ,软件包构建过程日志可以在这里看到 https://buildd.debian.org/
    LokiSharp
        18
    LokiSharp  
    OP
       2024-10-04 19:33:27 +08:00   1
    @qianxunlan #16 我的是 Nano pi R6S 打算折腾下在上面装 nixos 试试了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 18:55 PVG 02:55 LAX 10:55 JFK 13:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86