Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Pastsong
V2EX  ›  Linux

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

  •  
  •   Pastsong ·
    timwangdev · Dec 19, 2015 · 7060 views
    This topic created in 3826 days ago, the information mentioned may be changed or developed.

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

    Release v4.3 为例

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

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

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

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

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

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

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

    ----

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

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

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

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

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

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

    不是。
    Darwin 是操作系统,内核叫做 XNU 。
    extreme
        39
    extreme  
       Dec 19, 2015
    为什么没人提起 CoreUtils 。
    Linux 内核+Coreutils ,一个最基本的 Linux 发行版本出来了。
    FreeTxT
        40
    FreeTxT  
       Dec 20, 2015 via iPad
    LFS 欢迎您的加入
    Mithrandir
        41
    Mithrandir  
       Dec 21, 2015
    LFS 的确符合你的要求,不过对于新人还是不建议一上来就搞这个,太折腾了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5389 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1110ms · UTC 06:03 · PVG 14:03 · LAX 23:03 · JFK 02:03
    ♥ Do have faith in what you're doing.