Linux历史

Linux 于 1991 年由芬兰学生 Linus Torvalds 作为个人项目开始,旨在创建一个新的免费操作系统内核。在其历史发展中,Linux 内核经历了持续的增长。自 1991 年首次发布源代码以来,Linux 内核从少量的 C 语言文件,且受限于禁止商业发行的许可,逐步发展到 2018 年发布的 4.15 版本,其源代码行数已超过 2330 万行(不包括注释)。Linux 内核在 GNU 通用公共许可证第 2 版(GPLv2)下发布,且带有系统调用例外条款,意味着通过系统调用使用内核的内容不受 GNU GPL 的约束。

促成 Linux 诞生的事件

Ken Thompson(左)和 Dennis Ritchie(右)是 Unix 操作系统的创建者。在 AT&T 退出 Multics 项目之后,Ken Thompson 和 Dennis Ritchie(两人均为 AT&T 贝尔实验室的员工)于 1969 年设计并实现了 Unix 操作系统,并在 1970 年首次发布。随后,他们使用一种新编程语言 C 重写了 Unix 以使其具有可移植性。Unix 的开放性和可移植性使其被学术机构和企业广泛采用、复制和修改。

1977 年,伯克利计算机系统研究小组(CSRG)基于 AT&T 的第六版 Unix 开发了伯克利软件发行版(BSD)。由于 BSD 包含了 AT&T 所拥有的 Unix 代码,AT&T 在 1990 年代初对加利福尼亚大学提起诉讼(USL 诉 BSDi 案),这极大地限制了 BSD 的发展和应用。

Onyx Systems 于 1980 年开始销售基于微型计算机的早期 Unix 工作站。后来,Sun Microsystems 公司作为斯坦福大学学生项目的衍生公司,亦在 1982 年开始销售基于 Unix 的桌面工作站。尽管 Sun 的工作站没有像后来 Linux 那样利用通用 PC 硬件,但它代表了第一个成功商业化的运行 Unix 操作系统的单用户微型计算机的分发尝试。

1983 年,Richard Stallman 启动了 GNU 项目,目标是创建一个自由的类 Unix 操作系统。作为该项目的一部分,他编写了 GNU 通用公共许可证(GPL)。到 1990 年代初,几乎有足够的软件来创建一个完整的操作系统。然而,GNU 的内核(名为 Hurd)未能吸引足够的开发资源,导致 GNU 系统不完整。

1985 年,Intel 发布了 80386 处理器,这是首个带有 32 位指令集和分页内存管理单元的 x86 微处理器。

1986 年,AT&T 贝尔实验室的 Maurice J. Bach 发表了《UNIX 操作系统的设计》一书,详细介绍了 System V Release 2 的内核,以及 Release 3 和 BSD 的一些新特性。

1987 年,Andrew S. Tanenbaum 发布了 MINIX,这是一种类 Unix 系统,旨在用于学术教学,展示其教材《操作系统:设计与实现》中的原理。尽管 MINIX 提供了源代码,但其修改和重新分发受到限制。此外,MINIX 的 16 位设计不适应日益普及的 32 位 Intel 386 个人计算机架构。在 1990 年代初,面向 Intel 386 个人计算机的商业 Unix 操作系统价格过高,个人用户难以承受。

这些因素,加上缺乏被广泛采用的免费内核,促使 Linus Torvalds 启动了他的项目。他曾表示,如果当时 GNU Hurd 或 386BSD 内核可用,他很可能不会编写自己的内核。

Linux的诞生

Linus Torvalds 于 2002 年 1991 年,在赫尔辛基大学攻读计算机科学专业期间,Linus Torvalds 开始了一个项目,这个项目后来成为了 Linux 内核。他专门为他当时使用的硬件编写了该程序,并且独立于任何操作系统,因为他希望能够充分利用他新购置的 80386 处理器的功能。开发工作是在 MINIX 系统上使用 GNU C 编译器完成的。

1991 年 7 月 3 日,Linus Torvalds 为了在他的项目中实现 Unix 系统调用,尝试从 comp.os.minix 新闻组中获取 POSIX 标准文档的数字副本,但未能成功获取。因此,Torvalds 最初使用赫尔辛基大学用于运行 Sun Microsystems 服务器的 SunOS 文档来确定系统调用。他还从 Andrew S. Tanenbaum 的 MINIX 教材中学到了一些系统调用,该教材是 Unix 课程的一部分。

正如 Torvalds 在其著作《Just for Fun》中所写的,他最终写出了一个操作系统内核。1991 年 8 月 25 日,年仅 21 岁的 Torvalds 在 comp.os.minix 新闻组上发布了这个系统的公告:

"大家好,使用 MINIX 的朋友们:

我正在开发一个(免费的)操作系统(仅仅是个业余项目,不会像 GNU 那样大和专业),适用于 386(486) AT 克隆机。这个项目自 4 月以来一直在进行,现在开始接近完成了。我希望能听到大家对 MINIX 的喜欢或不喜欢之处的反馈,因为我的操作系统在某些方面有些类似(例如文件系统的物理布局,出于实用原因)。

目前我已经移植了 bash(1.08) 和 gcc(1.40),它们似乎工作正常。这意味着几个月内我可能会有一些实用的东西,我想知道大多数人希望有哪些功能。任何建议都欢迎,不过我不保证会实现它们 😃

Linus(torvalds@kruuna.helsinki.fi)

PS:是的------它没有任何 MINIX 的代码,并且它有一个多线程文件系统。它不具有可移植性(使用了 386 的任务切换等),并且可能永远只支持 AT 硬盘,因为那是我唯一拥有的 😦"

根据 Torvalds 的说法,Linux 在 1992 年开始变得重要,这是因为 Orest Zborowski 将 X Window 系统移植到 Linux,使其首次支持图形用户界面(GUI)。

命名

Linus Torvalds 最初想把他的发明命名为 "Freax",这个词结合了 "free"(自由)、"freak"(狂热者)和 "x"(表示与 Unix 的联系)。在系统开发的初期,他将文件以 "Freax" 这个名字保存了大约半年。尽管 Torvalds 曾考虑过 "Linux" 这个名字,但他最初觉得这个名字过于自我中心。

1991 年 9 月,为了方便开发,Torvalds 将文件上传至 FUNET 网络的 FTP 服务器(ftp.funet.fi)。赫尔辛基科技大学的志愿管理员 Ari Lemmke 认为 "Freax" 这个名字不太好,因此未经 Torvalds 许可,将项目命名为 "Linux"。后来,Torvalds 同意使用 "Linux" 这个名称。

为了演示 "Linux" 的正确发音([ˈliːnʊks]),Torvalds 在内核源代码中附带了一个音频指南。

Linux使用GNU GPL 许可

最初,Torvalds 在自己的许可下发布了 Linux 内核,该许可对商业活动有限制。与内核配合使用的软件是 GNU 项目开发的软件,并基于 GNU 通用公共许可证 (GPL) 授权。Linux 内核的第一个版本 Linux 0.01 包含了 GNU 的 Bash shell 的二进制文件。

在 0.01 版本的发布说明中,Torvalds 列出了运行 Linux 所需的 GNU 软件,并指出 "仅有内核是不够的,你还需要一个 shell、编译器、库等。" 这些工具大多是 GNU 软件,且在 GNU Copyleft 许可证下发布。

1992 年,Torvalds 提议将内核改为在 GNU GPL 许可下发布,并在 0.12 版本的发布说明中宣布了这一决定。同年 12 月,他发布了 0.99 版本,并正式采用了 GNU GPL 许可证。Linux 和 GNU 开发者随后合作,将 GNU 组件与 Linux 内核整合,形成了一个完整的自由操作系统。Torvalds 表示,"将 Linux 采用 GPL 许可证绝对是我做过的最好的决定。"

GNU/Linux 命名争议

"Linux" 这个名称最初是由 Linus Torvalds 仅用于指代 Linux 内核。然而,内核通常与其他软件(尤其是 GNU 项目中的软件)一起使用。这种结合迅速成为 GNU 软件的最流行采用方式。1994 年 6 月,在 GNU 的公告中,Linux 被称为 "免费 UNIX 克隆"。此时,Debian 项目开始将其产品命名为 Debian GNU/Linux。1996 年 5 月,Richard Stallman 在 Emacs 19.31 编辑器的发布中将系统类型从 Linux 重命名为 Lignux,特意强调 GNU 与 Linux 的结合。但很快,这种拼写方式被放弃,改用 "GNU/Linux"。

这种命名法引发了不同的反应。GNU 和 Debian 项目采用了该名称,尽管大多数人仅用 "Linux" 来指代这一结合。

官方吉祥物

1996 年,Torvalds 宣布 Linux 将有一个吉祥物------企鹅。这是因为在选吉祥物时,Torvalds 提到他曾在澳大利亚堪培拉国家动物园和水族馆参观时,被一只小企鹅(小蓝企鹅)咬了。Larry Ewing 根据这个描述提供了今天大家熟知的吉祥物草图。Tux 这个名字是由 James Hughes 提议的,既来自 "Torvalds' UniX" 的缩写,也指代穿着像企鹅一样颜色的礼服(tuxedo)。

新发展

社区开发

Linux 的开发工作主要由全球的开发者社区完成,他们提交建议改进内核的代码。此外,许多公司也为 Linux 的开发提供帮助,不仅贡献内核的开发,还撰写和分发与 Linux 捆绑的辅助软件。到 2015 年 2 月,超过 80% 的 Linux 内核开发者是有偿工作的。

Linux 不仅由像 Debian 这样的项目发布,也由与公司直接相关的项目(如 Fedora 和 openSUSE)发布。项目成员在各种会议和展会上会面,交换意见。其中规模最大的是德国的 LinuxTag,约 10,000 人每年聚集在此讨论 Linux 及相关项目。

开源发展实验室和 Linux 基金会

2000 年,开源发展实验室(OSDL)成立,作为一个独立的非营利组织,致力于优化 Linux 在数据中心和电信行业的应用。OSDL 也为 Linus Torvalds 和 Andrew Morton(直到 2006 年中期转投 Google)提供开发 Linux 内核的工作场所。2007 年 1 月 22 日,OSDL 与自由标准组织(FSG)合并成立 Linux 基金会,集中推动 Linux 与 Microsoft Windows 的竞争。

公司

尽管Linux是免费提供的,但公司还是从中获利。这些公司,其中许多也是Linux基金会的成员,为Linux的进步和发展投入了大量资源,以使其适合各种应用领域。这包括为驱动程序开发人员提供硬件捐赠,为开发Linux软件的人员提供现金捐赠,以及在公司雇佣Linux程序员。一些例子是戴尔、IBM和惠普,它们在自己的服务器上验证、使用和销售Linux,以及红帽(现在是IBM的一部分)和SUSE,它们维护着自己的企业发行版。同样,Digia通过Qt工具包的开发和LGPL许可来支持Linux,这使得KDE的开发成为可能,并雇佣了一些X和KDE开发人员。

桌面环境

KDE是第一个高级桌面环境(1998年7月发布的1.0版本),但由于使用了当时专有的Qt工具包,它引起了争议。[34]由于许可问题,GNOME被开发为一种替代方案。[34]两者使用不同的底层工具包,因此涉及不同的编程,并由两个不同的团体赞助,即德国非营利组织KDE e.V.和美国非营利组织GNOME基金会。

截至2007年4月,一位记者估计KDE拥有65%的市场份额,而GNOME的市场份额为26%。[34]2008年1月,KDE 4提前发布,出现了错误,导致一些用户转向GNOME。[35]2011年4月发布的GNOME 3因其有争议的设计变更而被Linus Torvalds称为"邪恶的混乱"。[36]

对GNOME 3的不满导致了Cinnamon的分叉,该分叉主要由Linux Mint开发人员Clement LeFebvre开发。这恢复了更传统的桌面环境,但略有改进。

资金相对充足的发行版Ubuntu设计(并于2011年6月发布)了另一个名为Unity的用户界面,该界面与传统的桌面环境截然不同,并被批评存在各种缺陷[37]和缺乏可配置性。[38]其动机是为台式机和平板电脑提供单一的桌面环境,尽管截至2012年11月,Unity尚未在平板电脑中广泛使用。然而,智能手机和平板电脑版本的Ubuntu及其Unity界面于2013年1月由Canonical有限公司推出。2017年4月,Canonical完全取消了基于手机的Ubuntu Touch项目,以便专注于Ubuntu Core等物联网项目。[39]2017年4月,Canonical放弃了Unity,并从17.10开始在Ubuntu版本中使用GNOME。[40]

相关推荐
安科瑞刘鸿鹏12 分钟前
校园建筑用电安全监测装置 电气火灾监测预防设备功能介绍
运维·服务器·网络·嵌入式硬件·安全·能源
Cici_ovo3 小时前
摄像头点击器常见问题——摄像头视窗打开慢
人工智能·单片机·嵌入式硬件·物联网·计算机视觉·硬件工程
无际单片机项目实战3 小时前
为什么STM32的HAL库那么难用,ST还是要硬推HAL库?
c语言·stm32·单片机·嵌入式硬件·物联网
正在努力的小立6 小时前
STM32 HAL 点灯
stm32·单片机·嵌入式硬件
TeYiToKu7 小时前
笔记整理—linux驱动开发部分(1)驱动梗概
linux·c语言·arm开发·驱动开发·嵌入式硬件
Whappy0018 小时前
3. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验1:PWM驱动LED呼吸灯)
stm32·嵌入式硬件·机器人
Java Fans10 小时前
嵌入式软件在电子烟开发中的应用
嵌入式硬件
环能jvav大师12 小时前
使用Ubuntu系统+VS Code开发STC51单片机
linux·c语言·开发语言·单片机·嵌入式硬件·ubuntu
q47259945113 小时前
UART通过DMA接收和发送,使用环形缓冲区,状态机的使用
stm32·单片机·嵌入式硬件
你也喜欢吃香菜嘛13 小时前
STM32主从定时器输出个数、频率可调的脉冲
stm32·单片机·嵌入式硬件