Linux的简要历史
导言
在普遍的用法中,“Linux”通常指的是围绕Linux内核构建的一组操作系统发行版。但在最严格的意义上,Linux仅指内核本身的存在。为了构建完整的操作系统,Linux发行版通常包括来自GNU项目和其他来源的工具和库。最近越来越多的开发人员使用Linux来构建和运行移动应用程序;它在开发价格适中的设备(如Chromebook)上运行操作系统方面也发挥了关键作用,这些设备依赖于内核。在云计算和服务器环境中,出于一些实际的原因,Linux是一个受欢迎的选择。
- Its distributions remain current and supported by communities of other developers.
- It can run on a wide range of hardware and will install alongside pre-existing systems (a helpful trait in local development environments).
- It supports centralized software installation from pre-existing repositories.
- Its resource requirements are low.
- It is often top of mind when developers are building application ecosystems and tooling for servers, leading to high levels of compatibility.
- It sustains necessary modifications to operating system behaviors.
Linux同样可以追溯到自由开源软件运动,因此一些开发者基于道德和实际的考虑选择使用它。
- For some developers, using Linux represents a commitment to accessibility and freedom of expression.
- The Linux community is also a draw for some developers: when they have questions, they can consult the resources produced by this community or reach out directly to one of many active maintainers.
为了了解Linux在开发者社区(以及其他领域)中的作用,本文将通过Unix的方式概述Linux的简要历史,并讨论一些流行的Linux发行版。
Unix的起源
Linux的起源可以追溯到Unix和Multics两个项目,这两个项目都旨在开发强大的多用户操作系统。
Unix的起源
Unix是在贝尔实验室计算机科学研究中心的Multics项目迭代发展而来。贝尔实验室和其他地方参与Multics项目的开发人员都对构建一个多用户操作系统感兴趣,该操作系统具有单层存储、动态链接(运行过程可以请求将另一段代码添加到其地址空间,使其能够执行该段代码)以及分层文件系统的功能。
1969年,贝尔实验室停止了对Multics项目的资助,但包括肯·汤普森和丹尼斯·里奇在内的一组研究人员继续致力于该项目的核心原理。在1972-3年间,他们决定用C语言重写该系统,使Unix具备了独特的可移植性:与其他当代操作系统不同,它能够移植到不同的硬件上并且长寿。
贝尔实验室(后来的AT&T)的研发工作继续进行,Unix System Laboratories与Sun Microsystems合作开发了许多版本的Unix操作系统,被商业Unix供应商广泛采用。与此同时,学术界的研究仍在继续,其中最著名的是加利福尼亚大学伯克利分校的计算机系统研究组。该组织开发了伯克利软件发行版(BSD),该发行版激发出许多仍在使用的操作系统。其中两个值得注意的BSD发行版是NeXTStep,由NeXT开创的操作系统,它成为macOS等产品的基础,以及MINIX,一种教育操作系统,为Linus Torvalds开发Linux提供了对比基础。
Unix的主要特点
Unix以清晰、可移植性和同步性原则为导向。
- Clarity: Unix’s modular design allows functions to run in a limited and defined way. Its file system is unified and hierarchical, which simplifies the manipulation of data. Unlike some of its predecessors, Unix implements hundreds (rather than thousands) of system calls, each of which is designed to be straightforward and clear in goal.
- Portability: By writing Unix in C, the group at Bell Labs positioned Unix for wide-scale use and adoption. C was designed to have low-level access to memory, minimal run-time support, and an efficient relationship between language and machine instructions. A basis in C means Unix is adaptable and easy to run on a variety of hardware.
- Simultaneity: The Unix kernel is tailored toward the goal (shared by the Multics project) of sustaining multiple users and workflows. Kernel space remains distinct from user space in Unix, which allows multiple applications to run at the same time.
Linux的进化
Unix在其早期的迭代中提出了重要的问题,但同时仍然保持着专有性质。因此,它的下一个发展阶段是关于开发者如何在其中与其进行合作并反对它,以创建自由和开源的替代方案的故事。
开源实验
理查德·斯托曼(Richard Stallman)是一位开发者中的核心人物,他受到启发,致力于创建非专有替代UNIX系统。在麻省理工学院人工智能实验室工作期间,他发起了GNU计划(GNU代表“GNU’s not Unix!”),最终在1984年离开实验室,以便自由分发GNU组件。GNU核心,即GNU HURD,成为了自由软件基金会(Free Software Foundation,FSF)的重点项目,该基金会于1985年成立,目前由斯托曼主导。
与此同时,另一位开发者正在开发一种免费的替代Unix的选择:芬兰的本科生林纳斯·托瓦兹。在对MINIX的许可感到失望之后,托瓦兹于1991年8月25日向一个MINIX用户组宣布,他正在开发一款自己的操作系统,该系统与MINIX相似。虽然最初是在MINIX上使用GNU C编译器进行开发,但Linux内核很快成为一个独特的项目,拥有一批核心开发者,并于1994年与托瓦兹一起发布了1.0版本的内核。
Torvalds曾经在他的内核中使用GNU代码,包括GNU C编译器,而事实上许多Linux发行版仍然依赖于GNU组件。Stallman曾游说将术语“Linux”扩展为“GNU/Linux”,他认为这样能够更好地体现GNU项目在Linux发展中的作用以及培育GNU项目和Linux内核所秉持的基本理念。如今,“Linux”经常被用来表示既有Linux内核又有GNU元素的存在。与此同时,许多手持设备和智能手机上的嵌入式系统通常只使用Linux内核,几乎没有GNU组件。
Linux的主要特点
尽管Linux内核从Unix继承了许多目标和特性,但它与以前的系统在以下方面有所不同:
- Its core component is the kernel, which is developed independently from other operating system components. This means that Linux borrows elements from a variety of sources (such as GNU) to comprise an entire operating system.
- It is free and open-source. Maintained by a community of developers, the kernel is licensed under the GNU General Public License (an offshoot of the FSF’s work on the GNU Project), and available for download and modification. The GPL stipulates that derivative work must maintain the licensing terms of the original software.
- It has a monolithic kernel, similar to Unix, but it can dynamically load and unload kernel code on demand.
- It has symmetrical multiprocessor (SMP) support, unlike traditional Unix implementations. This means that a single operating system can have access to multiple processors, which share a main memory and access to all I/O devices.
- Its kernel is preemptive, another difference from Unix. This means that the scheduler can force a context switch on a driver or another part of the kernel while it is executing.
- Its kernel does not differentiate between threads and normal processes.
- It includes a Command Line Interface (CLI) and can also include a Graphic User Interface (GUI).
流行的Linux发行版
开发人员今天维护着许多受欢迎的Linux发行版。其中历史最悠久的是Debian,这是一个具有50,000个软件包的免费开源发行版。Debian启发了另一个流行的发行版Ubuntu,由Canonical有限公司提供资金支持。Ubuntu使用Debian的deb软件包格式和包管理工具,并且Ubuntu的开发人员将更改反馈给Debian。
在红帽(Red Hat)、饲料(Fedora)和CentOS之间存在类似的关系。红帽在1993年创建了一个Linux发行版,十年后将其努力分为红帽企业Linux和Fedora。Fedora是一个基于Linux内核和GNU项目元素的社区操作系统。红帽还与另一个流行的用于Web服务器的Linux发行版CentOS项目有关系。然而,这种关系不包括付费维护。与Debian一样,CentOS由一群开发人员维护。
结论
在本文中,我们介绍了Linux的Unix根源和一些其特性。如果您对了解Linux和Unix变体(包括FreeBSD)的历史更感兴趣,一个好的途径可能是参考我们的FreeBSD系列文章。另一个选择是考虑阅读我们的Linux入门系列文章。您还可以查看我们关于Linux文件系统布局的介绍,关于如何使用find和locate在Linux VPS上搜索文件的讨论,或者关于命令行上正则表达式的介绍。