如何从 Linux kernel source 安装原版(不属于任何发行版)的 Linux ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Pastsong
V2EX    Linux

如何从 Linux kernel source 安装原版(不属于任何发行版)的 Linux ?

  •  
  •   Pastsong
    timwangdev 2015-12-19 12:15:48 +08:00 6595 次点击
    这是一个创建于 3586 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Linux kernel source tree 在 Github 的镜像地址
    https://github.com/torvalds/linux

    Release v4.3 为例

    作为 Linux 的初学者不知道这样会有那些问题?

    41 条回复    2015-12-21 00:38:35 +08:00
    haroldwu
        1
    haroldwu  
       2015-12-19 12:23:22 +08:00
    你需要 shell XD
    crayygy
        2
    crayygy  
       2015-12-19 12:26:00 +08:00
    初学者比较好的还是选择一个发行版, Ubuntu 、 Fedora 、 CentOS 都行,个人比较建议 Ubuntu ,对初学者比较友好一些,外观上看也还行(个人看法),安装工具也挺方便。熟悉了之后再慢慢的接触其他发行版, CentOS 啊什么的
    squid157
        3
    squid157  
       2015-12-19 12:27:46 +08:00 via iPhone
    Linux from Scratch
    你可以先阅读一番 别上手 再回来考虑这个问题
    gimp
        4
    gimp  
       2015-12-19 12:29:42 +08:00   2
    http://www.linuxfromscratch.org/lfs/ 等待楼主安装 LFS 成功的喜报
    gimp
        5
    gimp  
       2015-12-19 12:30:31 +08:00
    “等待楼主成功安装 LFS 的喜报” ...最近怎么总是语法错误的说
    Slienc7
        6
    Slienc7  
       2015-12-19 12:39:53 +08:00
    @gimp 好吧,没看出来有语法错误,为何我觉得两个都正确。。
    shippo7
        7
    shippo7  
       2015-12-19 12:40:00 +08:00   4
    不存在安装“原版 Linux ”这个概念,只能编译和安装“ Linux 内核”。只有 Linux 内核你无法控制它,就像只给你一个汽车引擎,你无法驾驶它一样。 Linux 内核+发行版才是一个完整的操作系统。
    lhbc
        8
    lhbc  
       2015-12-19 12:42:55 +08:00 via Android
    初学者一上来就要搞自己的发行版,呵呵
    windfarer
        9
    windfarer  
       2015-12-19 12:43:27 +08:00 via Android
    Linux from Scratch +1
    Pastsong
        10
    Pastsong  
    OP
       2015-12-19 12:50:43 +08:00
    @lhbc 事实上我用 Ubuntu 也有两年时间了,我只是换一种方式问一下发行版对于 Linux kernel 的意义
    shyling
        11
    shyling  
       2015-12-19 13:03:01 +08:00 via iPad
    lfs 大法
    linhua
        12
    linhua  
       2015-12-19 13:05:19 +08:00
    先从简单的元发行版 Gentoo 开始吧
    Archlinux 下可以自己写 PKGBUILD 文件,编译安装 linux 内核。具体可参考 Arch 的 wiki
    regist
        13
    regist  
       2015-12-19 13:23:38 +08:00   1
    貌似跟 lfs 扯不上关系吧,为什么楼上那么多人都扯 lfs 。。。

    要在发行版下编译自己的内核,要清楚发行版对内核的要求,譬如 systemd 还是 openrc 的等等。

    至于驱动,注意主板,硬盘,网卡等基本就 ok 了,周边的可以等系统亮起来后再去完善。

    玩过 gentoo 的,基本都有自己一份特有的 kernel .config 吧。
    Comphuse
        14
    Comphuse  
       2015-12-19 15:03:44 +08:00
    Arthur2e5
        15
    Arthur2e5  
       2015-12-19 15:23:13 +08:00   1
    make oldconfig 可以重用当前 config 。然后生成 initramfs 和配置 grub 看发行版的做法。有时候你还想自己配一堆驱动。

    > 我只是换一种方式问一下发行版对于 Linux kernel 的意义

    ……意义? Linux kernel 只是 GNU 系统生态环境的一个可替换的核心而已。啊,拿错剧本了。没有发行版提供的 userspace , kernel 没什么用处啊。发行版还降低了各种配置差异造成的坑爹事,还有免去了你编译的痛苦。

    ----

    @regist
    按照原 po 那个标题,强调不属于发行版,又要默认获得一个能用的系统的话,那只能自己配用户程序走上 LFS 之路了。
    402124773
        16
    402124773  
       2015-12-19 15:24:49 +08:00   1
    @Pastsong
    下载一份原生的 linux kernel 代码,然后配置编译出符合自己机器的内核镜像。非常难。
    wizardoz
        17
    wizardoz  
       2015-12-19 15:31:06 +08:00   1
    牵涉的东西有点多,除了 bootloader 、内核,还有文件系统需要了解。
    如果楼主真的想完成这么艰巨的任务,建议去买一块嵌入式开发板,支持 linux 的。厂家都会提供 bootloader 、内核和文件系统。一般 bootloader 不会提供代码。
    把别人提供的东西玩熟了以后,自己也就找到感觉了。之所以建议从嵌入式开始,是因为嵌入式的硬件相对简单,文件系统也是比较小。比起 X86 平台的那些发行版不是一个数量级。
    402124773
        18
    402124773  
       2015-12-19 15:36:37 +08:00
    @wizardoz
    17 楼说的很有道理,从 arm 方面入手的话,相对简单很多,但是也涉及相当多的知识。
    主要是内核方面的,一般做上层应用相关的人,对这些方面了解比较少。
    jasontse
        19
    jasontse  
       2015-12-19 15:39:20 +08:00 via iPad   1
    Linux 不存在原版之类的,它就是一内核,没有各个发行版包含的那一堆外围的东西你根本用不了。
    webjin
        20
    webjin  
       2015-12-19 15:48:53 +08:00 via Android
    提倡学 lfs.你会理解很多东西
    Pastsong
        21
    Pastsong  
    OP
       2015-12-19 15:58:47 +08:00
    @squid157
    @gimp
    @windfarer
    @webjin
    @shyling
    感谢!看了 LFS 项目的介绍,感觉非常适合解决我的问题
    DingSoung
        22
    DingSoung  
       2015-12-19 16:32:08 +08:00
    一下子到 4.x 了啊, 记得当初折腾时候还是 3.2.7, 大部分嵌入式设备还是 2.6.x
    GNiux
        23
    GNiux  
       2015-12-19 17:58:37 +08:00 via iPhone
    ...

    其实真的不存在“原版啦”……

    如果不想追随任何一个发行版,可以试试 Linux from Scratch.
    :)
    itoon
        24
    itoon  
       2015-12-19 18:09:18 +08:00
    我看到 Bastion The Kid 了!
    Pastsong
        25
    Pastsong  
    OP
       2015-12-19 18:20:28 +08:00
    @itoon 哈哈,头像是 Bastion OST 封面的原画
    ryd994
        26
    ryd994  
       2015-12-19 18:54:03 +08:00 via Android
    lfs 大法好,楼主前途无量
    aa45942
        27
    aa45942  
       2015-12-19 19:03:02 +08:00   1
    @wizardoz
    其实配置没你想的难,关键看人是不是肯折腾
    @Pastsonggrub 就是 PC 常用的 bootloader ,网上有源码
    内核一般默认配置就能用,编译了就好
    至于文件系统,随便找个引导盘 /usb 来做就好,可以考虑使用 systemd 做 init
    系统的基础可执行程序像 bash 等我没什么了解,不过这些工具功能都差不多,可以考虑直接用 busybox
    xylophone21
        28
    xylophone21  
       2015-12-19 20:49:12 +08:00
    http://www.bennee.com/~alex/blog/2014/05/09/running-linux-in-qemus-aarch64-system-emulation-mode/

    这个例子是编 64 位内核的,换成 32 的会简单一些。
    ziqin
        29
    ziqin  
       2015-12-19 20:51:54 +08:00
    印象中 GitHub 上的是仓库的镜像。
    可能这个才是 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
    Pastsong
        30
    Pastsong  
    OP
       2015-12-19 20:57:40 +08:00
    @ziqin 是的,我写是镜像了, GitHub 看起来方便点
    xylophone21
        31
    xylophone21  
       2015-12-19 20:59:35 +08:00
    https://github.com/xylophone21/android-binder-standalone/blob/master/tools/aarch64_qemu/make_a_test_environment.md

    这个是我之前调试其它模块时做的测试环境,使用 qemu 模拟器成功跑了自己编译的内核。
    Pastsong
        32
    Pastsong  
    OP
       2015-12-19 21:12:00 +08:00
    @xylophone21 感谢,正在看 QEMU 的文档
    inevermore
        33
    inevermore  
       2015-12-19 21:33:30 +08:00
    Linux 只是内核,不是操作系统。
    内核启动一段时间后,出现的第一个用户态进程是 init ,这部分代码负责启动 shell 等,但他压根不是内核源码的一部分,是发行版自己去提供的。

    说白了,内核就是 资源管理 + 系统调用服务的合集 那些用户交互的部分与他无关
    wdhwg001
        34
    wdhwg001  
       2015-12-19 22:01:57 +08:00
    我感觉你在开玩笑,就像你要在只有 hal.dll 、 ntoskrnl.exe 、 win32k.sys 、 Ntdll.dll 、 Kernel32.dll 、 Csrss.exe 等玩意的情况下跑一个 windows 一样…
    尽管 linux 是宏内核,包含的东西比上面那些多不少,但想要只靠内核跑系统未免还是有点虐了…
    vonnyfly
        35
    vonnyfly  
       2015-12-19 22:14:23 +08:00
    可以看我这个,开发测试 Linux 内核。
    https://github.com/vonnyfly/linux-kernel-tester
    msg7086
        36
    msg7086  
       2015-12-19 22:33:46 +08:00
    Linux 不是发行版,是内核……
    除了内核以外其他的组件都不是 Linux 的一部分……
    你这些东西全部装完以后就是一个 vmlinuz 文件而已……
    Pastsong
        37
    Pastsong  
    OP
       2015-12-19 22:39:13 +08:00
    @msg7086 这是不是有点像 darwin 和 OS X 的关系?
    msg7086
        38
    msg7086  
       2015-12-19 22:43:51 +08:00
    @Pastsong 帮你查了维基。

    不是。
    Darwin 是操作系统,内核叫做 XNU 。
    extreme
        39
    extreme  
       2015-12-19 22:48:03 +08:00
    为什么没人提起 CoreUtils 。
    Linux 内核+Coreutils ,一个最基本的 Linux 发行版本出来了。
    FreeTxT
        40
    FreeTxT  
       2015-12-20 16:43:44 +08:00 via iPad
    LFS 欢迎您的加入
    Mithrandir
        41
    Mithrandir  
       2015-12-21 00:38:35 +08:00
    LFS 的确符合你的要求,不过对于新人还是不建议一上来就搞这个,太折腾了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3297 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:48 PVG 19:48 LAX 04:48 JFK 07:48
    Do have faith in what you're doing.
    ubao 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