Linux的起源

简介: Linx 起源和发展是一段令人着迷的历史。 这里面包含着太多颠覆“常理”的事件和 思想,促成 Linux 成长壮大的“神奇”力量总是被人津津乐道,Linux所创造的传奇有时候让初次接触它的人感到不可思议。

Linux的起源


1991 年,一个名不见经传的芬兰研究生购买了自己的第一台 PC,并且决定开始开发自己的操作系统。这个想法非常偶然,最初只是为了满足自己读写新闻和邮件的需求。这个芬兰人选择了 Minix 作为自己研究的对象。Minix 是由荷兰教授 Andrew S. Tanenbaum开发的一种模型操作系统,这个开放源代码的操作系统最初只是用于研究目的。

这个研究生名叫 Linus Torvalds,他很快编写了自己的磁盘驱动程序和文件系统,并且慷慨地把源代码上传到互联网上。Linus把这个操作系统命名为Linux,意指“Linus的Minix(Linus'Minix)。

Linus 根本不会想到,这个内核迅速引起了全世界的兴趣。在短短的几年时间里,借动社区开发的推动力Linux 迸发出强大的生命力。1994 年,1.0 版本的 Linux 内核正式发布。本书写作时,最新的稳定内核版本为 2.6.27。

Linux 目前得到了大部分 IT 巨头的支持,并且进入了重要战略规划的核心领域。一个非盈利性的操作系统计划能够延续那么多年,并且最终成长为在各行各业发挥巨大影响力的产品,本身就让人惊叹。在探究这些现象背后的原因前,首先来看一下 Linux 和 UNIX之间的关系,这两个名词常常让人感到有些困惑。


追溯到UNIX


UNIX的历史需要追溯到遥远的 1969年,最初具只是AT&T贝尔实验室的一个研究项目。10年后,UNIX 被无偿提供给各大学,由此 UNIX 成为众多大学和实验室研究项目的基础。

尽管 UNIX 被免费提供,但获取源代码仍然需要向 AT&T交纳一定的许可证费用。1977年,加州大学伯克利分校的计算机系统研究小组(CSRG)从 AT&T 获取了 UNIX 的源代高,经过改动和包装后发布了自己的 UNIX 版本--伯克利UNIX(BerkeleyUNIX),这人发行版通常被称为BSD,代表Berkeley Software Distribution(伯克利软件发行版)。

随着UNIX在商业上的蓬勃发展,AT&T的许可证费用也水涨船高。伯克利于是决定 BSD 中彻底除去 AT&T 的代码。这项工程持续了一年多。到 1989 年6月,一个完全没有 AT&T Unix 代码的 BSD 版本诞生了。这是第一套由 Berkeley发布的自由可再发行 freely-redistributable)的代码,所谓的“自由”颇有些“你知道这是我的东西就可以了”的味道。只要承认这是 Berkeley 的劳动成果,那么任何人就可以以任何方式使用这些源代码。

1995 年 6 月,4.4BSD-Lite 发行,但这也是 CSRG 的绝唱。此后,CSRG因为失去资金支持而被迫解散。但 BSD 的生命并没有到此终结。目前大多数的 BSD UNIX的版本,例如 FreeBSD、OpenBSD 等都是从 4.4BSD-Lite发展过来的,并且延续了它的许可证协议。

与此同时,另一些 UNIX 版本则沿用了 AT&T 的代码,这些 UNIX 系的操作系统包括 HP-UX、Solaris等。

简单地说,Linux是对 UNIX 的重新实现。世界各地的 Linux 开发人员借鉴了 UNIX的技术和用户界面,并且融入了很多独创的技术改进。Linux 的确可以被称作 UNIX 的一个变体,但从开发形式和最终产生的源代码来看,Linux 不属于 BSD和 AT&T风格的 UNIX中的任何一种。因此严格说来,Linux 是有别于 UNIX 的另一种操作系统。


dc24d82bf9031d5534661b5253968db.png


影响世界的开源潮流


Linux 的发展历程看起来是一个充满传奇色彩的故事。特别是,为什么有如此多的人向社区贡献源代码,而不索取任何酬劳并任由其他人免费使用?“因为他们乐于成为一个球协作努力活动的一部分”,Linus 这样回答说。开源成为了一种全球性的文化现象,无数的程序员投身到各种开源项目中,并且乐此不疲。

事实上,社区合作已经成为了被广泛采用的开发模式。Linux、Apache、PHP、Firefox等业界领先的各类软件产品均使用了社区开发模式并采用某种开源许可协议。包括 Sun、 IBM、Novell、Google 甚至 Microsoft 在内的很多商业公司都拥有自己的开放源代码社区。

有意思的是,开放源代码的思想不仅仅根植于程序员的头脑中,更重要的是,社区合作演变成为了一种互联网文化。见证了维基百科等产品的巨大成功,人们发现,用户创造内容这种所谓的 Web 2.0 模式从本质上是同开源思想一脉相承的。

已经有了多种不同的开放源代码许可证协议,包括 BSD、Apache、GPL、MIT、LGPL等。其中的一些比较宽松,如 BSD、Apache 和 MIT,用户可以修改源代码,并保留修改部分的版权。Linux 所遵循的 GPL 协议相对比较严格,它要求用户将所作的一切修改回贵社区。关于开源协议的讨论常常是一个法律问题,一些法律系的学生会选择这方面的主题作为自己的毕业论文。在百度中输入关键字“开源协议”可以得到非常详尽的解答。


GNU公共许可证:GPL


GNU 来源于20 世纪 80 年代初期,Richard Stallman 在软件业引发了一场革命。这个人坚持认为软件应该是“自由”的,软件业应该发扬开放、团结、互助的精神。这种在当时看来离经叛道的想法催生了 GNU 计划。截至1990 年,在 GNU 计划下诞生的软件包括字编辑器 Emacs、C 语言编译器 gcc 以及一系列 UNIX 程序库和工具。1991 年,Linux的加入让 GNU 实现了自己最初的目标--创造一套完全自由的操作系统。

GNU 是 GNU's Not UNIX(GNU 不是 UNIX)的缩写。这种古怪的命名方式是计算机专家们玩的小幽默(如果觉得这一点都不好笑,那么就不要勉强自己)。GNU 公共许可证(GNU Public License,GPL)是包括 Linux在内的一批开源软件遵循的许可证协议。下面来关心一下 GPL 中到底说了些什么(这对于考虑部署 Linux 或者其他遵循 GPL 的产品的企业可能非常重要)。概括说来,GPL 包括下面这些内容:

软件最初的作者保留版权。

其他人可以修改、销售该软件、也可以在此基础上开发新的软件,但必须保证这份源代码向公众开放。

经过修改的软件在使用中引起了损失,开发人员不承担相关责任。

完整的GPL协议可以在互联网上通过各种途径如GNU的 官方网站获得,GPL协议已经被翻译成中文,读者可以在百度中搜索“GPL”获得相关信息


相关文章
|
存储 Ubuntu 小程序
操作系统分类和Linux系统版本及起源| 学习笔记
快速学习操作系统分类和Linux系统版本及起源
523 0
操作系统分类和Linux系统版本及起源| 学习笔记
|
Unix Linux Shell
|
Ubuntu Unix Shell
《Linux C编程从入门到精通》——第 1 章 Linux基础 1.1Linux的起源、发展和分类
Linux是一套免费使用和自由传播的类UNIX操作系统,它已发展成为现今世界上最流行的一种操作系统。Linux不仅仅能在PC机上运行,随着嵌入式系统的发展,它已经被广泛地应用于各种场合。
1668 0
|
23天前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
96 16
|
14天前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
3月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
661 13
|
4月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
540 21
|
4月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree