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

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

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

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

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

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

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

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

    ----

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

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

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

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

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

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

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