今天我和一个朋友讨论了Linux和Unix,我朋友一直说Linux内核的第一个版本是基于Unix内核的[部分]。
这真的让我感到惊讶,因为我一直认为 Linux 的架构与 Unix 相似——从第一个版本开始。那么,第一个 Linux 版本真的是基于 Unix 的一部分吗?
Cor*_*ren 20
即使 Linux 是一个从头开始编写的系统,Linux 的第一个版本与 minix 非常相似,它是一个“迷你 Unix”。它在Linus 的公告中。
维基百科提供了Linux 历史的简短描述。如果您想了解有关此主题的更多信息,这本书就是您所需要的。您将在那里了解到 Linus Torvalds 使用 Unix 手册页来了解他必须实现哪些系统调用以及它们必须如何工作。
第一个 Linux 内核必须使用 MINIX 引导,MINIX在开发时考虑到了类 UNIX 的设计。现在,Linus 在设计内核时使用了有关 UNIX 的书籍。他的图书订购日期甚至已存档。
迄今为止,Linux 还不是完全兼容 UNIX,因此,它被指定为“类 UNIX ”(Mac OS X,另一方面,是(完整的)UNIX)。
您的问题的标题简单地说明了“Linux”,这不仅意味着内核,还意味着内核的其他部分。我认为,当您考虑内核之外的事物并将其与 UNIX 进行比较时,它会更加相似。鉴于诸如 X 之类的东西。仅 Linux 内核就非常接近 UNIX,但是当您考虑到 GNU 部分时,它就更接近了。
0.01版本的内核,还是可以下载的。虽然,我还没有测试它是否编译,更不用说运行了。
不。
说第一个版本的 Linux 特别是“基于”Unix 的一部分是没有意义的。它不是 Unix 内核的端口。它没有在第一个版本[浏览源代码] 中以 Unix 代码开头并随着时间的推移替换它。 Linus 无法访问 Unix 源代码 [采访]。
它复制的是API。相同的 API 存在于最新版本的 Linux 中,并将永远保留。通常 Linux 不会删除任何 API,因为这会破坏某些应用程序。当Linux(以及 Linux libc 的第一个版本)被编写为运行现有的 Unix 应用程序时,所复制的是最低限度的必要内容。这是 Linux 众所周知的基本能力。 你可以用不同的方式来描述,但这里没有什么可争论的。
例如,在 GNU libc(早于 Linux)中复制了相同的 API。IIRC Linux 有效地从 API 文档(man页)中复制而来。
由于 Unix 内核和应用程序之间的接口设计的最佳部分,例如 gcc,我什至不愿意说;“一切都是一个文件”。基本文件操作被标准化为 C 编程语言的一部分。我的联机帮助页建议使用 C89,即一年左右。例如,Windows 实现了相同的 C API。然而,这掩盖了太多不是文件和/或 C 没有包含在标准中的繁琐位,所以我们必须承认 Linux 特别像 Unix。
具体来说,这个“第一个” Linux版本中的 API是70 个系统调用、它们的参数列表、40 个错误代码……并且超过其中任何一个,定义终端控件的200 行正是我在写“繁琐”时所想到的位”。但当然还有更多。
正如其他地方所暗示的,这是一个有点痛的地方。因为它是在微软资助的“研究”中提出的,然后在没有任何证据的情况下提起诉讼(SCO v IBM)。IIRC 他们最终展示了几行代码。结果证明所有的“侵权 IP”(他们声称 IBM 添加到 Linux 中)只是一些 API。尽管在这一点上有多个先例允许复制 API,也就是无尘室逆向工程。
正如其他人所提到的,用了Minix的关系很紧张。我相信文件系统格式取自 Minix。数据结构比大多数抽象 API 更特定于实现,如果你说“基于” Minix 的部分,你不一定在撒谎。
Minix 也被描述为类 Unix(或“Unix 克隆”,意思是类似于 Unix 但不是基于其代码的操作系统)。在任何意义上,Linux 都是基于 Unix 的,这同样适用于 Minix。(还有一些其他的 Unix 克隆;维基百科列出了一些专有的和 Windows 的各种兼容层)。
我正在为 386(486) AT 克隆做一个(免费)操作系统(只是一个爱好,不会像 gnu 那样大而专业)。这从四月就开始酝酿,并开始准备。我希望对人们在 minix 中喜欢/不喜欢的东西有任何反馈,因为我的操作系统与它有些相似(文件系统的物理布局相同(由于实际原因)等等)。
我目前已经移植了 bash(1.08) 和 gcc(1.40),一切似乎都有效。这意味着我会在几个月内得到一些实用的东西,我想知道大多数人想要什么功能。欢迎任何建议,但我不保证我会实施它们:-)
莱纳斯 (torvalds@kruuna.helsinki.fi)
附注。是的 -它没有任何 minix 代码,并且它有一个多线程 fs。它不可移植(使用 386 任务切换等),并且它可能永远不会支持 AT 硬盘以外的任何东西,因为这就是我所拥有的 :-(。