Hans学Linux系列文章目录
第1章 Linux概述
目录
一、Linux是什么
简而言之,Linux是一套十分稳定的操作系统,类似于Windows,macOS。
Linux由内核空间和用户空间两部分组成:
用户空间包括:用户应用和GNU C库。
内核空间包括:系统调用接口,内核和架构相关内核代码。
二、Linux史前史
1960年代初期,麻省理工学院(MIT)发展了相容分时系统(Compatible Time-Sharing System, CTSS),可以让大型主机透过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软件安装的能力,并且一台主机最多提供不到30个终端。
1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电器公司(GE)共同发起了Multics计划,目的是想要让大型主机可以达成提供300个以上的终端机连线使用。到了1969年前后,由于Multics进度落后,资金短缺,虽然继续在研究,贝尔实验室退出了该项目。
1969年,贝尔实验室原本参与Multics项目的Ken Thompson,以Assembler语言写出了一组内核程序,同时包括一些内核工具程序, 以及一个小档案系统,这个系统被戏称为Unics,也就是Unix的原型。
1973年, Dennis Ritchie 将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本!
1977年,伯克利大学Bill Joy在取得了Unix的核心原码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程式,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是Unix很重要的一个分支。
1979年,由于Unix的高度可移植性与强大的效能,加上当时并没有版权的纠纷, 所以让很多商业公司开始了Unix操作系统的发展,例如AT&T自家的System V、IBM的AIX以及HP与DEC等公司, 都有推出自家的主机搭配自己的Unix作业系统。由于当时未出现统一的协议,每一家公司自己出的Unix虽然在架构上面大同小异,但是却仅能支持自身的硬件。AT&T推出System V 第七版Unix 可以在x86架构的个人电脑中运行,出于商业的考量,AT&T想将Unix的版权收回去,AT&T在1979年发行的第七版Unix中,特别提到了 『不可对学生提供原码』的严格限制!
1984年,谭宁邦教授自己动手写了Minix这个Unix Like的核心程式!在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心原始码!并且强调他的Minix必须能够与Unix相容才行!谭宁邦在1984年开始撰写核心程式, 到了1986年终于完成。
同时在1984年,Richard Mathew Stallman发起的GNU计划, 这个计划的目的是:建立一个自由、开放的Unix作业系统(Free Unix)。但是重零开始建立操作系统过于复杂,Stallman就先写可以在Unix上面运行的程序,Stallman开始参考Unix上面现有的软件,并依据这些软件的作用开发出功能相同的软件,且开发期间Stallman绝不看其他软件的原码。后来一堆人知道免费的GNU软件,并且实际使用后发现与原有的专利软件也差不了太多,于是便转而使用GNU软件, 于是GNU计划逐渐打开知名度。Stallman又想到不论是什么软件, 都得要进行编译成为二进位文件后才能够执行,如果能够写出一个不错的编译器,那不就是大家都需要的软件么!因此他便开始撰写C语言的编译器,那就是现在相当有名的GNU C Compiler(gcc)!此外,他还撰写了更多可以被称为的C函数库(GNU C library),以及可以被使用来操作操作系统的基本介面BASH shell!(1990年)
到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 他与律师草拟了有名的通用公共许可证(General Public License, GPL), 称为copyleft。
1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等GNU 的工具写了一个小小的内核,该内核不像GNU 那么专业,但是可以在Intel的386机器上面运行,这就是Linux的开端!
三、自由软件
"Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users' freedom to run, copy, distribute, study, change, and improve the software
使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。因此GPL授权的软件不能够被修改授权和单纯贩卖。
因此目前Linux开发商只是在售卖售后服务,所以说,目前自由软体工作者,他们所赖以维生的,几乎都是在『服务』这个领域。
四、Linux发展史
Linus Torvalds购买了最新的Intel 386的个人电脑后,就立即安装了Minix这个操作系统。Linus Torvalds使用GNU计划提供的bash以及gcc编译器等自由软件, 顺利的撰写Linux 内核。他希望这个程式可以获得大家的一些修改建议, 于是他便将这个核心放置在网路上提供大家下载。
在将一些能够在Unix上面运作的软件在Linux上面跑时,他发现有很多的软件无法在Linux这个核心上运行,由于Linux希望能够相容于Unix,于是托瓦兹选择了修改Linux,为了让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX规范。
在将Linux发布在ftp服务器上后,有一群开发者加入到Linux的源代码贡献当中,而这群素未谋面的虚拟团队们,在1994年终于完成的Linux的核心正式版!version 1.0,且于1996年完成了2.0版、2011 年释出3.0 版,于2015 年4 月释放出4.0 版,2019年发布了最新的5.0版本。
五、Linux内核版本
在2.6.x 版本以前,托瓦兹将核心的发展趋势分为两股,并根据这两股核心的发展分别给予不同的核心编号,那就是:
主、次版本为奇数:发展中版本(development)
如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。
主、次版本为偶数:稳定版本(stable)
如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家用电脑以及企业版本中。
在3.0版本之后,此种编号就失效了,从3.0 版开始,内核主要依据主线版本(MainLine) 来开发,开发完毕后会往下一个主线版本进行。例如3.10 就是在3.9 的架构下继续开发出来的新的主线版本。
而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发(End of Live, EOL),亦即该程式码已经结束,不会有继续维护的状态。另外一种机制为保持该版本的持续维护,亦即为长期维护版本(Longterm)!
要判断你的Linux 内核是否为长期支援的版本, 可以使用『 uname -r 』来查阅内核版本,然后对照以下链接来了解其对应值!
六、Linux发行商
为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行的软体整合起来,加上自己具有创意的工具程式, 这个工具程序可以让使用者以光碟/DVD或者通过网络直接安装/管理Linux系统。 这个『Kernel + Softwares + Tools + 可完整安装程序』的东西就是Linux distribution, 一般中文翻译成可完整安装套件,或者Linux发布商套件等。
发展Linux distributions的社群与公司实在太多了,有Red Hat, SuSE, Ubuntu, Fedora, Debian等等,但是每个Linux distributions使用的kernel都是采用的Linux官网释放的。
为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的File system Hierarchy Standard (FHS)标准规范!
RPM 软体管理 | DPKG 软体管理 | 其他未分类 | |
商业公司 | RHEL (Red Hat 公司) SuSE (Micro Focus) | Ubuntu (Canonical Ltd.) | |
社群单位 | Fedora CentOS OpenSuSE | Debian B2D | Gentoo |
总结&参考文献
花了一下午的时间了解Linux的历史,其中的主要部分都能在鸟哥的网站上看到,还挺有趣的。之前买了一本《Unix传奇》,但现在也没怎么看,要在三个月内看完呀!