文章目录
- Linux是什么
- Linux之前Unix发展史
- Multics
- Unics
- Unix
- UNIX分支--BSD
- UNIX分支--System V
- Minix
- GUN计划
- GPL
- XFree86
- Linux
- 开源软件和闭源软件
- 开源软件
- 闭源软件/专利软件(copyright)
- Linux的内核版本
- Linux发行版
Linux是什么
Linux到底是操作系统还是应用程序呢?Linux其实就是一个操作系统!
Linux就是内核与系统调用接口那两层,应用程序并不算Linux
操作系统(Operating System,缩写:OS)主要在管理与驱动硬件,因此必须要能够管理内存、管理设备、负责任务管理以及系统调用等。因此,只要能够让硬件准备妥当的情况下,就是一个普通的操作系统
Linux之前Unix发展史
早在Linux出现之前就有一个相当稳点而成熟的操作系统存在,那就是Linux的大哥UNIX
Multics
1969年以前:一个伟大的梦想-Bell,MIT与 GE的“Multics”系统
在1969年以前的早期计算机时代,普通人很难接触计算机,除了一些军事、高科技或学术单位使用。因为那时的计算机操作系统不像现在这么方便,只能进行批处理型操作,需要把要输入的信息打在读卡纸上面打洞,然后将读卡纸插入读卡机并等待计算机运算完毕。而且这时的计算机主机很少,需要多人排队等待使用。所以,在那个时候想要使用计算机是件很麻烦的事情。
1960年代初期麻省理工学院(MIT)开发了兼容分时系统(CTSS)后,大型主机可以通过提供终端来连接多个用户,多个用户也可以通过终端同时连接到主机上使用计算机,让计算机资源得到更好地利用。
架构图如下:
1964年由贝尔实验室(Bell)、麻省理工学院(MIT)和通用电器公司(GE)共同发起了Multics计划,目的是让大型计算机提供 300 个以上的终端用于联机使用。但是,到了1969年前后,计划进度比较慢,钱不够,所以贝尔实验室退出了计划的研究工作。虽然计划还在继续研究,但贝尔实验室退出了该计划的研究工作。
`注:最终Multics还是成功开发出了它们的系统,完整历史参考 https://www.multicians.org/ 网站内容。
Unics
1969 年: Ken Thompson 的小型 file server system
1969年,贝尔实验室退出了Multics计划,认为这个计划不可能成功。有些人从这个计划中得到了启发,其中包括Ken Thompson(肯·汤普逊)。
在贝尔实验室退出Multics后,习惯使用Multics的工程师们无法继续使用该系统。Ken Thompson为Multics写了一个名为“Space Travel(太空旅行)”的游戏。为了继续开发这个游戏,他开始重新编写一个操作系统。Ken在DEC推出的PDP-7上用汇编语言写了一组内核程序、内核工具程序和一个小文件系统,这就是Unix的雏形。Thompson简化了Multics庞大的系统,因此他的朋友戏称这个系统为Unics(Unics表示单一,与Multics相反)。Ken最初的目标是游戏开发,而不是操作系统,因此他接受了朋友们给系统起的这个名字。
Ken Thompson的这个文件系统有两个重要概念:
- 所有程序或系统设备皆文件
- 不管程序本身还是附属文件,所写的程序只有一个目的,且要有效的完成目标
Unix
1973年: UNIX 的正式诞生,Dennis Ritchie 等人用 C 语言写出第一个正式 UNIX 内核
因为 Thompson 写的 Unics 很实用,贝尔实验室内部流传甚广。但是由于当时计算机架构不同,每次安装到不同的机器都得重新编写汇编语言,非常不方便。
于是,Ken Thompson和Dennis Ritchie合作,想用高级程序语言重新编写 Unics,最初使用的是 B 语言,但是 B 语言编译后的内核性能并不理想。Ritchie将 B语言改写成C语言,并用C语言重新编写和编译了Unics内核。最终,这个内核版本被命名为 UNIX,并正式发布了。这个改变也使得UNIX很容易被移植到不同的机器上面。
UNIX分支–BSD
1977年由Bill Joy发布BSD(Berkeley Software Distribution)这些称为UNIX-like的操作系统
虽然贝尔实验室属于AT&T,但是AT&T此时对于Unix是采取较为开放的态度,Unix是以C语言写程的,具有可移植性。所以在1973年后,Unix与学术界合作开发。最重要的就是与加州伯克利大学的合作。
伯克利大学的Bill Joy(比尔·乔伊)取得了Unix的内核源代码后,修改成适合自己机器的版本,并且增加了很多工具软件编译器(如Vi编辑器,TCP/IP等),最终将他命名为(Berkeley Software Distribution,简称BSD)
UNIX分支–System V
System V架构与
版权声明
由于Unix具有可移植性和强大性能,以及缺乏版权纠纷,许多公司开始开发自己的Unix操作系统,并与他们的硬件配套推出自家的主机。然而,在早期,由于缺乏标准化协议,每家计算机公司的硬件都不相同,因此为各自的硬件开发适配的Unix系统成为必要,早期的Unix主要与服务器或大型工作站相关联。
1979年,AT&T推出了System V第七版Unix,这一版本的重要之处在于它支持X86架构的个人计算机,使得System V可以在个人计算机上运行。 由于商业考量,AT&T决定收回Unix的版权。特别提到“不可对学生提供源代码”的严格限制。
Minix
1984年:x86架构的Minix操作系统诞生
在1984年,Unix系统的版权仍受AT&T公司严密控制,明确规定不允许提供给学生使用。荷兰一位大学教授Andrew Stuart “Andy” Tanenbaum(安德鲁·斯图尔特·塔能鲍姆)为了给学生上课,仿照Unix系统编写了一款名为Minix的操作系统。为避免版权问题,Andrew在编写过程中完全不参照Unix内核源代码。
1986年,他完成了Minix的内核程序,并发行了相关书籍。由于Minix最初只是用于课堂教学,没有大规模商业推广的打算,因此实际使用Minix操作系统的人数并不多。
GUN计划
GUN计划目标
1984年由Richard Mathew Stallman(理查德 马修斯 托曼)提倡GUN(名称来自GNU’s Not Unix!)计划,这个计划目的是:建立一个自由、开放的UNIX操作系统。
软件开发策略
鉴于操作系统开发复杂,Stallman决定从开发可以在UNIX系统上运行的小程序开始,而不是直接构建整个操作系统。斯托曼参考现有UNIX软件,开发出功能相同的自由软件,避免看其他软件源代码以免侵权。
发展自由软件
GNU软件逐渐广为人知,人们开始了解并使用这些免费的GNU软件,提升了GNU计划的知名度。 为了提高GNU计划的曝光度,斯托曼开始开发C语言编译器,即著名的GNU C Compiler(gcc)。他希望通过编写一款优秀且高性能的C语言编译器来吸引更多的人关注GNU计划。此时,C语言的编译器大多数都是专有软件,如果gcc编译器能够表现出色,那么GNU计划就有更大的机会为大众所接受。 然而,开始编写gcc并不顺利。为了继续推动GNU计划,斯托曼转而将他之前已经开发好的Emacs编辑器写成可以在UNIX上运行的软件,并公开了源代码。Emacs是一款功能强大的程序编辑器,可以在程序编写过程中进行语法检查,从而减少程序员的调试时间。由于Emacs的优秀表现,很多人直接向斯托曼购买了该软件。
成立FSF
Stallman通过以磁带方式销售Emacs软件来赚取一些资金,然后全力以赴地编写其他软件,并于1985年成立了自由软件基金会(Free Software Foundation,FSF),邀请更多的工程师和志愿者参与自由软件的开发。最终,他成功完成了gcc编译器,这比Emacs编辑器还要有助于推动GNU计划的发展。此外,他还编写了更多可供调用的C函数库(GNU C Library)以及用于操作系统的基本接口的Bash shell。这些工作大致在1990年左右完成。
GPL
GUN的通用公共许可证
在1985年,为了避免GNU开发的自由软件被私有化,Richard Stallman与律师起草了著名的通用公共许可证(GPL),并称其为copyleft的概念。
下图来自百度百科
GNU开发的重要软件,例如Emacs、GNU C Compiler(gcc)、GNU C Library(glibc)和Bash shell等
,为许多软件开发者提供了基础工具,帮助壮大了自由软件团体。
然而,尽管这些软件为GNU计划做出了贡献,但在当时的环境下,仍缺少一个自由的UNIX内核,导致这些软件只能在专有的UNIX平台上运行。 事实上GNU开发的自主内核称为Hurd,是一个设计相当先进的内核。由于开发过程中对系统要求过于严格,导致推出时间一再延后。因此,直到Linux内核的出现才实现了GNU计划建立自由UNIX操作系统的目标。Linux内核的出现填补了GNU计划中缺少的自由UNIX内核这一空缺。
GPL是什么?为什么要将自由软件使用GPL这个版权声明?
斯托曼强调了GPL中的"Free"一词,并指出自由软件指的是具有自由权力而非免费的软件。
自由软件可以自由执行、复制、再发行、学习、修改和强化自由软件。通过使用GPL版权声明,软件成为自由软件,具备取得软件与源代码、复制、修改和再发行的特点。
使用自由软件时,你可以根据自己的需求自由使用、复制和修改,并可以将修改过的程序自由发行,并向社区回馈。然而,你不能修改授权一个GPL授权的自由软件,也不能单纯销售自由软件。销售自由软件需要提供售后服务和相关手册,这些需要工本费。很多Linux开发商销售的是售后服务,而非自由软件本身。自由软件工作者维生的主要方式是通过提供服务收费。所以,自由软件确实具有商业空间。
GPL对于自由软件的作者有何优点?
- 软件安全性能较好
- 软件运行性能较好
- 软件除错时间较短
- 贡献的源代码永远都存在
因为计软是提供源代码的自由软件,那么你的程序代码将会有很多人帮你检查,如此一你来,程序的漏洞与程序的优化将会进展的很快。
XFree86
1988年:XFree86诞生,即x86版UNIX上的GUI系统
1988年,为满足不断增长的图形用户界面(Graphical User Interface, GUI)需求,MIT与其他第三方合作发布了XWindow System,并于同年成立了非营利性质的XFree86组织。XFree86实际上是XWindow System、Free和x86的组合名称。XFree86的GUI接口在1994年发布的Linux内核1.0版本中整合到了Linux操作系统中。
Linux
1991年:Linux诞生,Linus Torvalds发布的运行在386机器上的内核程序
芬兰赫尔辛基大学的在校生Linus Torvalds便是其中一员,他在1991年10月使用bash解释器和gcc编译器等开源工具编写出了一个名为Linux的全新的系统内核,并且在技术论坛中低调地上传了该内核的0.02版本。该系统内核因其较高的代码质量目基于GNU GPL许可证的开放源代码特性,迅速得到了GNU源代码开放计划和一大批黑客程序员的支持,随后Linux正式进入如火如荼的发展阶段。
开源软件和闭源软件
开源软件
什么是开源?
开源软件指的是在软件发布时将源代码公开并与软件一同提供的软件。源代码是程序员编写但尚未被编译的代码。
从自由软件到开源软件
1998年成立的开放源代码促进会(Open Source Initiative)提出了“开放源代码”(open source)这一术语,以解决“自由软件”(free software)一词中存在的歧义。自由软件一词中的“free”既可以表示“自由”的意义,也可以表示“免费”的含义,容易引起误解。因此,开放源代码这一术语更加准确地传达了其核心概念。需要注意的是,并非所有可读取源代码的软件都可以被称为开源软件。该软件的授权必须要符合下面的基本需求,才可以算是开源软件。
- 公布源代码并允许用户修改和编译程序代码
- 可以再发布:允许任意分发和销售软件的副本,且程序代码可成为其他软件的组件之一作者不该宣称具有拥有权或收取其他额外费用。
- 允许修改或衍生作品,并使用相似的授权再发布
- 允许以不同的名称或编号发布
- 不得限制个人或团体的使用权;
- 不得限制特定领域的应用,例如商业行为或学术研究等
- 不得限制程序代码在不同产品中的应用
- 不得具有排他条款,例如限制软件不能用于教育类的研究等
常见的开放源代码授权有哪些?
- GPL
- BSD
- MIT
- Apache
- LGPL
闭源软件/专利软件(copyright)
什么是闭源软件
闭源软件(也称为专有软件或专利软件)与开源软件不同,它不公开源代码,仅提供可执行的二进制程序。
闭源软件优缺点
闭源软件的优点包括有专人维护和支持,用户无需修改代码。然而,闭源软件的缺点是用户的灵活度受限,无法按照自己的需求修改程序样式。此外,如果存在恶意软件或安全漏洞,修复问题可能需要相当长的时间。
Linux的内核版本
Linux内核下载地址:https://www.kernel.org/
Linux内核版本编号类似如下样子
3.10.0-1160.108.1.el7.x86_64
主版本.次版本.发布版本-修改版本
- “3”:这是Linux内核的主要版本号。
- “10”:这是次要版本号,指示了内核功能的更新程度。
- “0”:这是发布版本号,表明内核发布的修订数量。
- “1160.108.1”:修改版本
- “.el7”:表示适用于RHEL 7版本
- “x86_64”:CPU结构,64位
Linux的内核版本的种类分为稳定版和开发版,主要是以次版本数字的奇偶性来区分,偶数代表稳定版本,奇数代表开发版本。
Linux发行版
要区分Linux内核与Linux发行版的不同
- Linux内核由Linus Torvalds及其他贡献者开发和维护,提供硬件抽象层、磁盘、文件系统控制及多任务功能的系统核心程序
- Linux发行版是我们常说的Linux操作系统,也就是由Linux内核+软件+工具+可完全安装程序的东西,我们称之为Linux发行版或Linux发行套件系统
常见的Linux发行版有:
-
Deepin(国产操作系统)
-
Red Hat
-
SUSE
-
Ubuntu
-
Fedora
-
Debian
官方网址
Deepin: https://www.deepin.org/
Red Hat: https://www.redhat.com/
SUSE: https://www.suse.com/
Fedora: https://getfedora.org/
CentOS: https://www.centos.org
Debian: http://www.debian.org/
Ubuntu: http://www.ubuntu.com/