V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LokiSharp
V2EX  ›  Linux

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

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

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

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

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

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

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

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

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

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

    https://github.com/milkv-duo/duo-buildroot-sdk
    LokiSharp
        13
    LokiSharp  
    OP
       88 天前
    @qianxunlan #12 我现在手持树莓派和两个 RK3588 板子,他们有能玩的么?
    LokiSharp
        14
    LokiSharp  
    OP
       88 天前
    @cmdOptionKana #4 昨天晚上装了个 Gentoo 玩,好像不涉及打包制作发行版?
    LXGMAX
        15
    LXGMAX  
       88 天前   ❤️ 1
    @LokiSharp 3588 可以折腾 yocto 、buildroot 等,自己定制 rootfs 也相当于出发行版了
    qianxunlan
        16
    qianxunlan  
       88 天前 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  
       85 天前   ❤️ 1
    @LokiSharp Gentoo 的构建工具是这个 https://wiki.gentoo.org/wiki/Catalyst
    Debian 的话是 debootstrap ,软件包构建过程日志可以在这里看到 https://buildd.debian.org/
    LokiSharp
        18
    LokiSharp  
    OP
       84 天前   ❤️ 1
    @qianxunlan #16 我的是 Nano pi R6S 打算折腾下在上面装 nixos 试试了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2426 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:18 · PVG 08:18 · LAX 16:18 · JFK 19:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.