如何完全基于 Linux 内核编写自己的 Linux 发行版? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xiaoluobo58
V2EX    Linux

如何完全基于 Linux 内核编写自己的 Linux 发行版?

  •  
  •   xiaoluobo58 2023-07-08 22:46:48 +08:00 3110 次点击
    这是一个创建于 831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我想知道如何编写一个完全基于 Linux 内核的 Linux 发行版(而非基于 Debian 或红帽定制),即使没有 GUI 和功能简陋也无所谓。网上有很多关于基于 Debian 或其他定制 Linux 的教程,但是关于如何完全自己制作基于 Linux 内核的 Linux 发行版的教程却很少见。

    15 条回复    2023-07-20 22:55:34 +08:00
    Sainnhepark
        1
    Sainnhepark  
       2023-07-08 22:48:58 +08:00 via Android   1
    LFS?
    0o0O0o0O0o
        2
    0o0O0o0O0o  
       2023-07-08 22:49:13 +08:00 via iPhone   1
    比起编写,更像是搭建。

    LFS
    lululau
        3
    lululau  
       2023-07-08 22:53:36 +08:00
    只给你个内核,其他的软件自己写,是这意思吗,那可能比写的 Linux 内核还要难
    xiaoluobo58
        4
    xiaoluobo58  
    OP
       2023-07-08 22:56:11 +08:00
    @lululau 我的意思是在内核基础上实现基础的系统功能( GUI 之类的不包括),虽然确实有些难度,不过和编写内核比起来还是容易些 hhh
    harrozze
        5
    harrozze  
       2023-07-08 23:01:12 +08:00   2
    @xiaoluobo58 #4 首先实现个 init 或者 systemd ,然后用这两个去启动其它进程。至于如何从开机到开始执行 init 或者 systemd ,我觉得不如先去找个发行版,看看它是怎么实现的。比如,可以先从 /boot/grub/grub.cfg 入手?了解一下系统怎么启动的。

    LFS 也是个不错的选择,就像是找人带着走一遍。
    masterclock
        6
    masterclock  
       2023-07-08 23:11:02 +08:00 div class="sep5">
    这种教程实际上不少,LFS 类的是一种
    嵌入式里用的 Buildroot 、yocto 也是,OpenWRT 来自 Buildroot ,也差不多
    这些里面的 BusyBox 自己也能算一个
    baobao1270
        7
    baobao1270  
       2023-07-08 23:16:00 +08:00
    最简单的,其实只编译 busybox+kernel 即可
    lhbc
        8
    lhbc  
       2023-07-08 23:18:08 +08:00
    用 Rust 重写 systemd
    tin3w5
        9
    tin3w5  
       2023-07-09 09:10:47 +08:00 via iPhone   1
    因为没意义,你的需求就是在重复造轮子。而且你早的轮子几乎没什么人维护,可能 bug 一堆,兼容性极差,甚至包依赖关系混乱。你认为造出来会有人用吗?你自己都不一定想用。如果你就是爱折腾,gentoo 足够用了,何必自己写发行版?
    xsonglive491
        10
    xsonglive491  
       2023-07-09 21:36:02 +08:00
    楼主你这是要搞嵌入式?编辑设备树,编译 kernel ,构建文件系统,加载驱动,启动服务?
    rb6221
        11
    rb6221  
       2023-07-10 11:58:10 +08:00
    因为这种东西在规模上就是属于商业产品的级别了,你见过哪个商业产品有出手把手且免费公开的教程吗?要么就是第三方仿,而且只能仿一些表面的、基本的功能,要么只有 api 文档和使用手册之类的东西,开发方面从来没有过
    424778940
        12
    424778940  
       2023-07-10 23:30:19 +08:00
    你要找的是不是 buildroot
    yanqiyu
        13
    yanqiyu  
       2023-07-11 01:26:04 +08:00
    @xiaoluobo58 并不会简单...大概,要构建一个可用的系统你至少得写一套 shell+libc+编译器+init
    作为玩具规模太大,作为项目重复造轮子严重
    Iamsonny
        14
    Iamsonny  
       2023-07-13 12:04:20 +08:00
    核心在包管理,比如 debian deb ,redhat rpm ,搞一个发行版最难的是有自己的包管理。
    基他的 LFS 完全足够了。
    flynaj
        15
    flynaj  
       2023-07-20 22:55:34 +08:00 via Android
    建议先把 lfs 走一遍.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     904 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:03 PVG 04:03 LAX 13:03 JFK 16:03
    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