Linux 的第一个版本是基于 Unix 的一部分,这是真的吗?

js-*_*der 10 linux history

今天我和一个朋友讨论了Linux和Unix,我朋友一直说Linux内核的第一个版本是基于Unix内核的[部分]。

这真的让我感到惊讶,因为我一直认为 Linux 的架构与 Unix 相似——从第一个版本开始。那么,第一个 Linux 版本真的是基于 Unix 的一部分吗?

Cor*_*ren 20

即使 Linux 是一个从头开始编写的系统,Linux 的第一个版本与 minix 非常相似,它是一个“迷你 Unix”。它在Linus 的公告中

维基百科提供了Linux 历史的简短描述。如果您想了解有关此主题的更多信息,这本书就是您所需要的。您将在那里了解到 Linus Torvalds 使用 Unix 手册页来了解他必须实现哪些系统调用以及它们必须如何工作。


pol*_*mon 7

第一个 Linux 内核必须使用 MINIX 引导,MINIX在开发时考虑到了类 UNIX 的设计。现在,Linus 在设计内核时使用了有关 UNIX 的书籍。他的图书订购日期甚至已存档。

迄今为止,Linux 还不是完全兼容 UNIX,因此,它被指定为“类 UNIX ”(Mac OS X,另一方面,是(完整的)UNIX)。

您的问题的标题简单地说明了“Linux”,这不仅意味着内核,还意味着内核的其他部分。我认为,当您考虑内核之外的事物并将其与 UNIX 进行比较时,它会更加相似。鉴于诸如 X 之类的东西。仅 Linux 内核就非常接近 UNIX,但是当您考虑到 GNU 部分时,它就更接近了。

0.01版本的内核,还是可以下载的。虽然,我还没有测试它是否编译,更不用说运行了。

  • @psusi http://www.opengroup.org/openbrand/register/ <--- 它在“UNIX 03”下被列为已注册的 UNIX。Lion 不在该列表中,但它是:http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf(第一页,“开源 UNIX 基金会”下的左栏) (3认同)
  • 请注意,现在有 [经过 Unix 认证的基于 Linux 的操作系统](http://www.opengroup.org/openbrand/register/brand3617.htm),因此 _到目前为止,Linux 还不是完全兼容 UNIX_ 声明是不更长的真实。 (3认同)
  • @psusi 只有在您的操作系统上运行测试套件时,您才会进入该列表。如果您通过了这些测试,您将获得多个列表之一,这取决于它是完全兼容还是仅在某种程度上兼容。这是 UNIX 03 的指南:http://www.opengroup.org/openbrand/docs/UNIX03_Certification_Guide.html 测试要求链接在某处... (2认同)

sou*_*edi 5

不。

说第一个版本的 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 硬盘以外的任何东西,因为这就是我所拥有的 :-(。