V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wangyzj
V2EX  ›  程序员

不懂就问!请问 linus 当年写 kernel 的时候都具备了什么知识?用了什么工具?使用了什么轮子?

  •  
  •   wangyzj · 2020-04-22 12:58:21 +08:00 · 4155 次点击
    这是一个创建于 1709 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我寻思了解了解这些对自己研究 kernel 也很有帮助

    28 条回复    2020-04-23 14:58:51 +08:00
    billtsui
        1
    billtsui  
       2020-04-22 13:01:14 +08:00
    大学四年,只要老师不水自己不水,写个雏形操作系统还是可以的。MIT6.828 这个课学完,就能写一个实验性质的操作系统 xv6 。
    hst001
        2
    hst001  
       2020-04-22 13:03:57 +08:00
    我寻思着 Linus 大神也是边写边学边改进,个人目标万事要先开头才能走下去
    wanguorui123
        3
    wanguorui123  
       2020-04-22 13:05:25 +08:00 via iPhone
    推荐《 30 天自制操作系统》
    wanguorui123
        4
    wanguorui123  
       2020-04-22 13:09:49 +08:00 via iPhone
    推荐《 现代操作系统》
    wanguorui123
        5
    wanguorui123  
       2020-04-22 13:11:22 +08:00 via iPhone
    推荐《深入理解 UNIX 系统内核》
    crella
        6
    crella  
       2020-04-22 13:24:30 +08:00 via Android
    linux 从 minix 得到启发,得到 GNU 团队的帮助。

    那个时候 GNU 黑客文化很火啊,因为没有一个 Free 的系统作基础,gnu 开发的工具也算是不 free 的。

    谈 linux 不能不谈 gnu 啊
    wangyzj
        7
    wangyzj  
    OP
       2020-04-22 14:04:36 +08:00
    @billtsui 先不提水不水
    大学 == 打游戏 是真的
    mooyo
        8
    mooyo  
       2020-04-22 14:05:26 +08:00
    可以看一下 xv6
    wangyzj
        9
    wangyzj  
    OP
       2020-04-22 14:06:21 +08:00
    @wanguorui123 《 30 天自制操作系统》这个有点意思,可以先看看,谢谢
    abcbuzhiming
        10
    abcbuzhiming  
       2020-04-22 15:03:11 +08:00
    B 站有教程,告诉你怎么从 0 写一个操作系统。其实写一个玩具并不难,难的是写一个能工业化使用的产品。
    其实 linux 能走到今天,不光是 linus 一个人的功劳,linux 背后站着一大票巨人,IBM,红帽,intel,没有这些组织贡献代码 Linux 也走不到今天
    wr410
        11
    wr410  
       2020-04-22 15:13:11 +08:00
    造系统更像单片机编程,直接调用硬件接口和 CPU 指令,而不是在操作系统上去调各种 API……
    hantsy
        12
    hantsy  
       2020-04-22 15:18:01 +08:00   ❤️ 3
    最初的 Linux 是改造 Minix 系统(一个学术派教授的作品,作为教学用的 Unix 实现,国外这种教学方式不知道国内有哪个大学用???反正我一个野生的计算机自学者,当时学完操作系统这门课除了一些书上的概念啥也不知道),Linus 为了以示差别,命名为 Linux (加入自己名子的成分)。

    最初代码只有一万来行吧。现在好像有书去讲解 Linux 0.12 的最初的代码,和 Minix 代码一样,是不可多得的操作系统实战系统。

    @billtsui 如果中国有大学教学都达到这种水平,中国实现自主操作系统早就不成问题了,也不至于这么多不要脸的人到处剽窃,还好意思对外说自主研发。
    libook
        13
    libook  
       2020-04-22 15:21:53 +08:00
    对 Linus 和他的 Linux 感兴趣可以看 Linus 的自传《 Just for fun 》。
    早先 Linus 的学校里是使用 Minix 作为教学用的操作系统的,Linus 学习了之后感觉 Minix 不好用,而且不支持新的硬件特性,于是就想自己修改 Minix,但后来发现这是个大坑,不光有实现上的问题还有授权的问题,还不如从头写一个,于是就写了 Linux 。

    Linux v0.01 据说才 1 万行,你可以去网上找源码看看。后续版本都是社区成千上万人的贡献逐步完善的,现在 Kernel 源代码能达到几百兆了。

    写个操作系统可以很简单,也可以很复杂,取决于你想实现多少功能,只实现最小可用的文件系统和进程管理不需要太多的代码。
    hantsy
        14
    hantsy  
       2020-04-22 15:22:20 +08:00
    @abcbuzhiming Redhat 的商业化后,有了专职 Contribute Linux 的人,可以说是 Linux 发展的基本保障吧。IBM,Oracle 这些商业公司站队,同时也改进很多内核方面的东西,为 Linux 进入商用打下了基础,以保证它不再是一些 Geek 的玩具。
    hantsy
        15
    hantsy  
       2020-04-22 15:27:48 +08:00
    @libook 源代码中驱动程序太多了。其实真正的内核应该不是太大,我是没能力研究这个了。

    之前开始用 Linux 的时侯,2.4 的内核,自己编译过威盛的网卡驱动, 选择性的编译下来,整个内核加上自己所需要的驱动才 2M 。不过现在 Linux 发行版本,好像打包驱动也都分开了。
    hantsy
        16
    hantsy  
       2020-04-22 15:34:47 +08:00
    @crella GNU 有自己的内核系统,只是一直强调微内核,计划得的太完美,饼画得太大,实现上难度可想而知,一直也没流行起来。Debian 好像以前还有 GNU 内核的打包。
    libook
        17
    libook  
       2020-04-22 15:34:51 +08:00
    @hantsy 现在版本源码很庞大,现在应该没有人能对所有源码完全了解,我有朋友在某大厂搞自用的 Kernel 定制,基本上是一周写一两行代码,其余大量时间都是在读现有的代码,看怎么改比较合适。
    hugedata
        18
    hugedata  
       2020-04-22 16:09:35 +08:00
    现在的 linux 内核,看源码找宏定义都很麻烦。
    billtsui
        19
    billtsui  
       2020-04-22 16:49:21 +08:00
    @wangyzj 我大学也是打游戏过来的,浪费掉的时间早晚要补回来对不对。工作以后 MIT6.828 我看了的,蛮好的课程,xv6 入手操作系统真的挺好的。
    billtsui
        20
    billtsui  
       2020-04-22 16:50:29 +08:00
    @hantsy 老师不教可以自己学啊,现在公开课很方便,国外教授上课讲的真是特别好,稍微认真点听就能懂,完全不是照本宣科。
    noogler67
        21
    noogler67  
       2020-04-22 16:53:43 +08:00
    intel 80386 programmer's guide
    linus 参考了 minix 操作系统
    oldlinux.org
    对操作系统感兴趣可以看看学堂在线-操作系统,那个可以劝退论坛大多人。
    有一个 eudyptula challenge 是作为 linux 内核 contributor 指导的。
    wangyzj
        22
    wangyzj  
    OP
       2020-04-22 17:00:25 +08:00
    @billtsui #19 可不咋的
    工作这么多年,想研究一下以前劝退的东西
    还是有难度
    能麻烦发一个 MIT6.828 地址吗?我找了一下总感觉不像
    airqj
        23
    airqj  
       2020-04-22 17:03:34 +08:00
    @hantsy 写个操作系统并不难,很多人都能写,更别提那些大公司了
    难的是生态,没有生态这个操作系统有什么用呢
    necomancer
        24
    necomancer  
       2020-04-22 17:04:24 +08:00
    #!original/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ

    Fellow 这个帖子 google group
    billtsui
        25
    billtsui  
       2020-04-22 17:21:18 +08:00   ❤️ 1
    wangyzj
        26
    wangyzj  
    OP
       2020-04-22 17:53:52 +08:00
    @billtsui 谢谢
    hantsy
        27
    hantsy  
       2020-04-23 12:43:20 +08:00
    @billtsui 网易有很多国外的公开课。。。
    billtsui
        28
    billtsui  
       2020-04-23 14:58:51 +08:00
    @hantsy 是有很多啊,怎么了…………
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2794 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:19 · PVG 08:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.