鸟哥的Linux私房菜2018简体化 第一章(2)、Linux是什么与如何学习

1.2 Torvalds的Linux发展

我们前面一节当中,提到了Unix的历史,也提到了Linux是由Torvalds这个芬兰人所发明的。那么为何托瓦兹可以发明Linux呢?凭空想像而来的?还是有什么渊源?这里我们就来谈一谈啰!

1.2.1 与Minix之间

Linus Torvalds(托瓦兹, 1969年出生,(注10))的外祖父是赫尔辛基大学的统计学家,他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机。在这个时期,托瓦兹接触了汇编语言(AssemblyLanguage),那是一种直接与芯片对话的程序语言,也就是所谓的低级语言。必须要很了解硬件的架构,否则很难以汇编语言撰写程序的。

在1988年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。在就学期间,因为学业的需要与自己的兴趣,托瓦兹接触到了Unix这个操作系统。当时整个赫尔辛基只有一部最新的Unix系统,同时仅提供16个终端机(terminal)。 还记得我们上一节刚刚提过的,早期的计算机仅有主机具有运算功能,terminal仅负责提供Input/Output而已。在这种情况下,实在很难满足托瓦兹的需求,因为…光是等待使用Unix的时间,就很耗时~为此,他不禁想到:“我何不自己搞一部Unix来玩?”不过,就如同Stallman当初的GNU计划一样,要写核心程序,谈何容易~

不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似Unix的系统,并且与Unix完全兼容,还可以在Intel 386机器上面跑的操作系统,那就是我们上一节提过的,谭宁邦教授为了教育需要而撰写的Minix系统!他在购买了最新的Intel 386的个人计算机后,就立即安装了Minix这个操作系统。另外,上个小节当中也谈到,Minix这个操作系统是有附上源代码的,所以托瓦兹也经由这个源代码学习到了很多的核心程序设计的设计概念喔!

1.2.2  对386硬件的多任务测试

事实上,托瓦兹对于个人计算机的CPU其实并不满意,因为他之前碰的计算机都是工作站型的计算机,这类计算机的CPU特色就是可以进行“多任务处理”的能力。什么是多任务呢?理论上,一个CPU在一个时间内仅能进行一个程序,那如果有两个以上的程序同时出现到系统中呢?举例来说,你可以在现今的计算机中同时打开两个以上的办公软件,例如电子试算表与文书处理软件。这个同时打开的动作代表着这两个程序同时要交给CPU来处理~

啊!CPU一个时间点内仅能处理一个程序,那怎么办?没关系,这个时候如果是具有多任务能力的CPU就会在不同的程序间切换~还记得前一章谈到的CPU频率吧?假设CPU频率为1GHz的话,那表示CPU一秒钟可以进行109次工作。假设CPU对每个程序都只进行1000次运行周期,然后就得要切换到下个程序的话,那么CPU一秒钟就能够切换106次呢!(当然啦,切换工作这件事情也会花去一些CPU时间,不过这里暂不讨论)。这么快的处理速度下,你会发现,两个程序感觉上几乎是同步在进行啦!

Tips

为什么有的时候我同时开两个文件(假设为A, B文件)所花的时间, 要比开完A再去开B文件的时间还要多?现在是否稍微可以理解?因为如果同时打开的话,CPU就必须要在两个工作之间不停的切换~而切换的动作还是会耗去一些CPU时间的!所以啰,同时启用两个以上的工作在一个CPU上,要比一个一个的执行还要耗时一点。这也是为何现在CPU开发商要整合多个CPU于一个芯片中!也是为何在运行情况比较复杂的服务器上,需要比较多的CPU负责的原因!

早期Intel x86架构计算机不是很受重视的原因,就是因为x86的芯片对于多任务的处理不佳,CPU在不同的工作之间切换不是很顺畅。但是这个情况在386计算机推出后,有很大的改善。托瓦兹在得知新的386芯片的相关信息后,他认为,以性能价格比的观点来看,Intel的386相当的便宜,所以在性能上也就稍微可以将就将就^_^。最终他就贷款去买了一部Intel的386来玩。

早期的计算机性能没有现在这么好,所以压榨计算机性能就成了工程师的一项癖好!托瓦兹本人早期是玩汇编语言的,汇编语言对于硬件有很密切的关系,托瓦兹自己也说:“我始终是个性能癖”^_^。为了彻底发挥386的性能,于是托瓦兹花了不少时间在测试386机器上!他的重要测试就是在测试386的多任务性能。首先,他写了三个小程序,一个程序会持续输出A、一个会持续输出B, 最后一个会将两个程序进行切换。他将三个程序同时执行,结果,他看到屏幕上很顺利的一直出现ABABAB……他知道,他成功了!^_^

鸟哥的Linux私房菜2018简体化 第一章(2)、Linux是什么与如何学习_第1张图片
图1.2.1、386电脑的多任务测试

Tips

要达到多任务(multitasking)的环境,除了硬件(主要是CPU)需要能够具有多任务的特性外,操作系统也需要支持这个功能喔!一些不具有多任务特性的操作系统,想要同时执行两个程序是不可能的。除非先被执行的程序执行完毕,否则,

后面的程序不可能被主动执行。

至于多任务的操作系统中,每个程序被执行时,都会有一个最大CPU使用时间,若该工作运行的时间超过这个CPU使用时间时,该工作就会先被丢出 CPU的运行中,而再度的进入核心工作调度中等待下一次被CPU取用来运行。

这有点像在开记者会啦,主持人(CPU)会问“谁要发问”?一群记者(工作程序) 就会举手(看谁的工作重要!),先举手的自然就被允许发问,问完之后, 主持人又会问一次谁要发问,当然,所有人(包括刚刚那个记者)都可以举手!如此一次一次的将工作给他完成啊!^_^多任务的环境对于复杂的工作情况,帮助很大喔!

1.2.3  初次发布Linux0.02

探索完386的硬件性能之后,终于拿到Minix并且安装在托瓦兹的386计算机上之后,托瓦兹跟BBS上面一堆工程师一样,他发现Minix虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在操作系统功能上面的欲求不满!这个时候年轻的托瓦兹就想:“既然如此,那我何不自己来改写一个我想要的操作系统?”于是他就开始了核心程序的撰写了。

撰写程序需要什么呢?首先需要的是能够进行工作的环境,再来则是可以将源代码编译成为可可执行文件的编译器。好在有GNU计划提供的bash工作环境软件以及gcc编译器等自由软件,让托瓦兹得以顺利的撰写核心程序。他参考Minix的设计理念与书上的程序码,然后仔细研究出386个人计算机的性能最优化,然后使用GNU的自由软件将核心程序码与386紧紧的结合在一起,最终写出他所需要的核心程序。而这个小玩意竟然真的可以在386上面顺利的跑起来~还可以读取Minix的文件系统。真是太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议,于是他便将这个核心放置在网络上提供大家下载,同时在BBS上面贴 了一则消息:

Hello everybody out there using minix-

I'm doing a (free) operation system  (just a hobby, won't be big and professional  like gnu) for386(486) AT clones.

I've currently ported bash (1.08) and gcc (1.40), and things seem to work. This  implies that i'll get something practical within a few months, and I'd like to know what  features most people want.  Any suggestions are welcome, butI  won't promise I'll implement them :-)

他说,他完成了一个小小的操作系统,这个核心是用在386机器上的,同时,他真的仅是好玩,并不是想要做一个跟GNU一样大的计划!另外,他希望能够得到更多人的建议与回馈来发展这个操作系统!这个概念跟Minix刚好背道而驰呢!这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装。有趣的是,因为托瓦兹放置核心的那个FTP网站的目录为:Linux, 从此,大家便称这个核心为Linux了。(请注意,此时的Linux就是那个kernel喔!另外,托瓦兹所放到该目录下的第一个核心版本为0.02呢!)

同时,为了让自己的Linux能够兼容于Unix系统,于是托瓦兹开始将一些能够在Unix上面运行的软件拿来在Linux上面跑。不过,他发现到有很多的软件无法在Linux这个核心上运行。这个时候他有两种作法,一种是修改软件,让该软件可以在Linux上跑,另一种则是修改Linux,让Linux符合软件能够运行的规范!由于Linux希望能够相容于Unix,于是托瓦兹选择了第二个作法“修改Linux”!为了让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX规范。

Tips

POSIX是可移动式操作系统接口(PortableOperating System Interface)的缩写,重点在规范核心与应用程序之间的接口,这是由美国电器与电子工程师学会(IEEE)所发布的一项标准喔!

这个正确的决定让Linux在起步的时候体质就比别人优良~因为POSIX标准主要是针对Unix与一些软件运行时候的标准规范,只要依据这些标准规范来设计的核心与软件,理论上,就可以搭配在一起执行了。而Linux的发展就是依据这个POSIX的标准规范,Unix上面的软件也是遵循这个规范来设计的,如此一来,Linux很容易就与Unix兼容共享互有的软件了!同时,因为Linux直接放置在网络下,提供大家下载,所以在流通的速度上相当的快!导致Linux的使用率大增!这些都是造成Linux大受欢迎的几个重要因素呢!

Tips

其实托瓦兹有意无意之间常常会透露他自己是个只喜欢玩(Just for Fun)的怪人!Linux一开始也只是托瓦兹的一个作业发展出来的玩具而已。他也说,如果Minix或hurd这两个中的任何一个系统可以提早开发出他想要的功能与环境,也许他根本不会想要自己开发一个Linux哩!哇!人类智慧真是没有极限!各位啊:1)要先有基础知识与技能、2)有了第一点后,要勇于挑战权威、3)把你们的玩具发扬光大吧!^_^

1.2.4 Linux的发展:虚拟团队的产生

Linux能够成功除了托瓦兹个人的理念与力量之外,其实还有个最重要的团队!

个人维护阶段

Linux虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。不过,如果单靠托瓦兹自己一个人的话,那么Linux要茁壮实在很困难~因为一个人的力量是很有限的。好在托瓦兹选择Linux的开发方式相当的务实!首先,他将释出的Linux核心放置在FTP上面,并且告知大家新的版本信息,等到使用者下载了这个核心并且安装之后,如果发生问题,或者是由于特殊需求亟需某些硬件的驱动程序,那么这些使用者就会主动回报给托瓦兹。在托瓦兹能够解决的问题范围内,他都能很快速的进行Linux核心的更新与除错。

广大黑客志愿者加入阶段

不过,托瓦兹总是有些硬件无法取得的啊,那么他当然无法帮助进行驱动程序的撰写与相关软件的改良。这个时候,就会有些志愿者跳出来说:“这个硬件我有,我来帮忙写相关的驱动程序。”因为Linux的核心是Open Source的,黑客志愿者们很容易就能够跟随Linux的原本设计架构,并且写出兼容的驱动程序或者软件。志愿者们写完的驱动程序与软件托瓦兹是如何看待的呢?首先,他将该驱动程序/软件带入核心中,并且加以测试。只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意的将志愿者们写的程序码加入核心中!

总之,托瓦兹是个很务实的人,对于Linux核心所欠缺的项目,他总是“先求有且能跑,再求进一步改良”的心态!这让Linux使用者与志愿者得到相当大的鼓励!因为Linux的进步太快了!使用者要求虚拟内存,结果不到一个星期推出的新版Linux就有了!这不得不让人佩服啊!

另外,为了回应这种随时都有程序码加入的状况,于是Linux便逐渐发展成具有模块的功能!亦即是将某些功能独立出于核心外,在需要的时候才载入到核心中。如此一来,如果有新的硬件驱动程序或者其他协议的程序码进来时,就可以模块化,大大的增加了Linux核心的可维护能力!

Tips

核心是一组程序,如果这组程序每次加入新的功能都得要重新编译与改版的话会变成如何?想像一下,如果你只是换了显卡就得要重新安装新的Windows操作系统,会不会傻眼?模块化之后,原本的核心程序不需要更动,你可以直接将他想成是“驱动程序”即可!^_^

核心功能细部分工发展阶段

后来,因为Linux核心加入了太多的功能,光靠托瓦兹一个人进行核心的实际测试并加入核心原始程序实在太费力~结果,就有很多的朋友跳出来帮忙这个前置工作!例如考克斯(Alan Cox)、与崔迪(StephenTweedie)等等, 这些重要的副手会先将来自志愿者们的修补程序或者新功能的程序代码进行测试,并且结果上传给托瓦兹看,让托瓦兹作最后核心加入的源代码的选择与整合!这个分层负责的结果,让Linux的发展更加的容易!

特别值得注意的是,这些托瓦兹的Linux开发副手,以及自愿传送修补程序的黑客志愿者,其实都没有见过面,而且彼此在地球的各个角落,大家群策群力的共同发展出现今的Linux, 我们称这群人为虚拟团队!而为了虚拟团队数据的传输,于是Linux便成立了核心网站:http://www.kernel.org!

而这群素未谋面的虚拟团队们,在1994年终于完成的Linux的核心正式版!version 1.0。 这一版同时还加入了X WindowSystem的支持呢!且于1996年完成了2.0版、2011年发布3.0版,更于2015年4月发布了4.0版哩!发展相当迅速喔!此外,托瓦兹指明了企鹅为Linux的吉祥物。

Tips

奇怪的是,托瓦兹是因为小时候去动物园被企鹅咬了一口念念不忘,

而正式的2.0推出时,大家要他想一个吉祥物。他在想也想不到什么动物的情况下,就将这个念念不忘的企鹅当成了Linux的吉祥物了……

Linux由于托瓦兹是针对386写的,跟386硬件的相关性很强,所以,早期的Linux确实是不具有移植性的。不过,大家知道Open source的好处就是,可以修改程序码去适合工作的环境。因此,在1994年以后,Linux便被开发到很多的硬件上面去了!目前除了x86之外,IBM、HP等等公司出的硬件也都有被Linux所支持呢!甚至于小型单板计算机(树莓派/香蕉派等)与手持设备(智能手机、平板电脑)的ARM架构系统,大多也是使用Linux核心喔!

1.2.5  Linux的核心版本

Linux的核心版本编号有点类似如下的样子:

3.10.0-123.el7.x86_64

主版本.次版本.释出版本-修改版本

虽然编号就是如上的方式来编的,不过依据Linux核心的发展期程,核心版本的定义有点不太相同喔!

奇数、偶数版本分类

在2.6.x版本以前,托瓦兹将核心的发展趋势分为两股,并根据这两股核心的发展分别给予不同的核心编号,那就是:

主、次版本为奇数:开发版(development)如2.5.xx,这种核心版本主要用在测试与开发新功能,所以通常这种版本仅有核心开发工程师会使用。如果有新增的核心程序码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中;

主、次版本为偶数:稳定版(stable)如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家用计算机以及企业版本中。重点在于提供使用者一个相对稳定的Linux工作环境平台。

至于释出版本则是在主、次版本架构不变的情况下,新增的功能累积到一定的程度后所新释出的核心版本。而由于Linux核心是使用GPL的授权,因此大家都能够进行核心程序码的修改。因此,如果你有针对某个版本的核心修改过部分的程序码,那么那个被修改过的新的核心版本就可以加上所谓的修改版本了。

主线版本、长期维护版本(longterm version)

不过,这种奇数、偶数的编号格式在3.0推出之后就失效了。从3.0版开始,核心主要依据主线版本(MainLine)来开发,开发完毕后会往下一个主线版本进行。

例如3.10就是在3.9的架构下继续开发出来的新的主线版本。通常新一版的主线版本大约在2~3个月会被提出喔!之所以会有新的主线版本,是因为有加入新功能之故。现在(2015/04)最新的主线版本已经来到4.0版了喔!好快!

而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发(End of Live, EOL),亦即该程序代码已经结束,不会有继续维护的状态。另外一种机制为保持该版本的持续维护,亦即为长期维护版本(Longterm)!例如3.10即为一个长期维护版本,这个版本的程序码会被持续维护,若程序码有bug或其他问题,核心维护者会持续进行程序码的更新维护喔!

所以啰,如果你想要使用Linux核心来开发你的系统,那么当然要选择长期支持的版本才行!要判断你的Linux核心是否为长期支持的版本,可以使用“uname -r”来查阅核心版本,然后对照下列链接来了解其对应值喔!

https://www.kernel.org/releases.html

Linux核心版本与Linux发布商版本

Linux核心版本与distribution(下个小节会谈到)的版本并不相同,很多朋友常常上网问到:“我的Linux是7.x版,请问…”之类的留言,这是不对的提问方式,因为所谓的Linux版本指的应该是核心版本,而目前最新的核心版本应该是4.0.0(2015/04)才对,并不会有7.x的版本出现的。

你常用的Linux系统则应该说明为distribution才对!因此,如果以CentOS这个distribution来说,你应该说:“我用的Linux是CentOS这个distribution,版本为7.x版,请问…”才对喔!

Tips

当你有任何问题想要在Linux论坛发言时,请务必仔细的说明你的distribution版本,因为虽然各家distributions使用的都是Linux核心,不过每家distribution所选用的软件以及他们自己发展的工具并不相同,多少还是有点差异,所以留言时得要先声明distribution的版本才行喔!^_^

1.2.6 Linux distributions

好了,经过上面的说明,我们知道了Linux其实就是一个操作系统最底层的核心及其提供的核心工具。他是GNU GPL授权模式,所以,任何人均可取得源代码与可执行的核心程序,并且可以修改。此外,因为Linux参考POSIX设计规范,于是兼容于 Unix操作系统,故亦可称之为Unix Like的一种。

Tips

鸟哥曾在上课的时候问过同学:“什么是Unix Like啊”?可爱的同学们回答的答案是:“就是很喜欢(like)Unix啦!”囧rz…那个 like是“很像”啦!所以Unix like是“很像Unix的操作系统”哩!

可完整安装的Linux发布套件

Linux的出现让GNU计划放下了心里的一块大石头,因为GNU一直以来就是缺乏了核心程序,导致他们的GNU自由软件只能在其他的Unix上面跑。既然目前有Linux出现了,且Linux也用了很多的GNU相关软件,所以Stallman认为Linux的全名应该称之为 GNU/Linux呢!不管怎么说,Linux实在很不错,让GNU软件大多以Linux为主要操作系统来进行开发,此外,很多其他的自由软件团队,例如postfix, vsftpd, apache等等也都有以Linux 为开发测试平台的计划出现!如此一来,Linux除了主要的核心程序外,可以在 Linux 上面运行的软件也越来越多,如果有心,就能够将一个完整的Linux操作系统搞定了!

虽然由Torvalds负责开发的Linux仅具有Kernel与Kernel提供的工具,不过,如上所述,很多的软件已经可以在Linux上面运行了,因此,“Linux + 各种软件”就可以完成一个相当完整的操作系统了。不过,要完成这样的操作系统……还真难~ 因为Linux早期都是由黑客工程师所开发维护的,他们并没有考虑到一般使用者的能力……

为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行的软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让使用者以光盘/DVD或者通过网络直接安装/管理Linux系统。 这个“Kernel + Softwares + Tools + 可完整安装程序”的东西,我们称之为Linux distribution,一般中文翻译成可完整安装套件,或者Linux发布商套件等。

鸟哥的Linux私房菜2018简体化 第一章(2)、Linux是什么与如何学习_第2张图片
图1.2.2、Linux可完整安装发行套件

Tips

由于Linux核心是由黑客工程师写的,要由源代码安装到x86计算机上面成为可以执行的binary文件, 这个过程可不是人人都会的~所以早期确实只有工程师对Linux有兴趣。一直到一些社区与商业公司将Linux核心配合自由软件,并提供完整的安装程序,且制成光盘/DVD后,对于一般使用者来说,Linux才越来越具有吸引力!因为只要一直“下一步”就可以将Linux安装完成啊!^_^

由于GNU的GPL授权并非不能从事商业行为,于是很多商业公司便成立来贩售Linux distribution。而由于Linux的GPL版权宣告,因此,商业公司所贩售的Linux

distributions通常也都可以从Internet上面来下载的!此外,如果你想要其他商业公司的服务,那么直接向该公司购买光盘来安装,也是一个很不错的方式的!

各大Linux Distributions的主要异同:支持标准!

不过,由于发展Linux distributions的社区与公司实在太多了,例如在台湾有名的RedHat, SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很担心,如此一来每个distribution是否都不相同呢?这就不需要担心了,因为每个Linux distribution使用的kernel都是http://www.kernel.org所发布的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高,例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。

此外,为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有LinuxStandard Base(LSB)等标准来规范开发者,以及目录架构的Filesystem Hierarchy Standard(FHS)标准规范!唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式吧!所以说,基本上,每个Linuxdistribution除了架构的严谨度与选择的套件内容外,其实差异并不太大啦!^_^。大家可以选择自己喜好的distribution来安装即可!

FHS:http://www.pathname.com/fhs/

LSB:http://www.linuxbase.org/

事实上鸟哥认为distributions主要分为两大系统,一种是使用RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类;一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。若是加上商业公司或社区单位的分类,那么我们可以简单的用下表来做个解释喔!

                    RPM软件管理                    DPKG软件管理                                其他未分类

商业公司    RHEL(Red Hat公司)      Ubuntu(Canonical Ltd.)

                   SuSE(Micro Focus)

社区单位    Fedora                                Debian                                                Gentoo

                  CentOS                               B2D

                  OpenSUSE

下面列出几个主要的Linux distributions发行者网址:

Red Hat:http://www.redhat.com

SuSE:https://www.suse.com

Fedora:https://getfedora.org/

CentOS:http://www.centos.org/

Debian:http://www.debian.org/

Ubuntu:http://www.ubuntu.com/

Gentoo:http://www.gentoo.org/

Tips

到底是要买商业版还是社区版的Linux distribution呢?如果是要装在个人计算机上面做为桌面电脑用的,建议使用社区版,包括 Fedora, Ubuntu,

OpenSuSE等等。如果是用在服务器上面的,建议使用商业版本,包括Red Hat, SuSE等。这是因为社群版通常开发者会加入最新的软件,这些软件可能会有一些bug存在。至于商业版则是经过一段时间的磨合后,才将稳定的软件放进去。

举例来说,Fedora放出来的软件套件经过一段时间的维护后,等到该软件稳定到不容易发生错误后,RedHat才将该软件放到他们最新的发行版本中。所以,Fedora的软件比较经常改版,RedHat的软件就比较少改版。

Linux在台湾

当然发行套件者不仅于此。但是值得大书特书的,是中文Linux的延伸计划:CLE这个套件!早期的Linux因为是工程师开发的,而这些工程师大多以英文语系的国家为主,所以Linux对于国人的学习是比较困难一点。后来由国人发起的CLE计划,开发很多的中文套件及翻译了很多的英文文件,使得我们目前得以使用中文的Linux呢!另外,目前正在开发中的还有台南县卧龙小三等老师们发起的众多自由软件计划,真是造福很多的朋友啊!

自由软件技术交流网:http://freesf.tw/

B2D:http://b2d-linux.com/

此外,如果只想看看Linux的话,还可以选择所谓的可光盘启动进入Linux的Live CD版本,亦即是KNOPPIX这个Linux distribution呢!台湾也有阿里巴巴兄维护的中文LiveCD喔!

http://www.knoppix.net/

洪老师解释 KNOPPIX:http://people.ofset.org/~ckhung/b/sa/knoppix.php

Tips

对于没有额外的硬盘或者是没有额外的主机的朋友来说,KNOPPIX这个可以利用光盘启动而进入Linux操作系统的Live CD真的是一个不错的选择!你只要下载了KNOPPIX的镜像文件,然后将它刻录成为CD,放入你主机的光驱,并在BIOS内设置光盘为第一个启动选项,就可以使用Linux系统了呢!

如果你还想要知道更多的Linux distribution的下载与使用信息,可以参考:

http://distrowatch.com/

选择适合你的Linux distribution

那我到底应该要选择哪一个distribution?就如同我们上面提到的,其实每个distribution差异性并不大!不过,由于套件管理的方式主要分为Debian的dpkg及Red Hat系统的RPM方式,目前鸟哥的建议是,先学习以RPM套件管理为主的RHEL/Fedora/SuSE/CentOS等使用者较多的版本,这样一来,发生问题时,可以提供解决的渠道比较多。如果你已经接触过Linux了,还想要探讨更严谨的Linux版本,那可以考虑使用Debian,如果你是以性能至上来考虑,那么或许Gentoo是不错的建议!

总之,版本很多,但是各版本差异其实不大,建议你一定要先选定一个版本后,

先彻头彻尾的了解它,那再继续玩其他的版本时,就可以很快的进入状况。鸟哥的网站仅提供一个版本,不过是以比较基础的方式来介绍的,因此,如果能够熟练俺这个网站的话,呵呵!哪一个distribution对你来说,都不成问题啦!

不过,如果依据计算机主机的用途来分的话,在台湾鸟哥会这样建议:

用于企业环境:建议使用商业版本,例如Red Hat的RHEL或者是SuSE都是很不错的选择!毕竟企业的环境强调的是持久的经营,你可不希望网管人员走了之后整个机房的主机都没有人管理吧!由于商业版本都会提供客户服务,所以可以降低企业的风险喔!

用于个人或教学的服务器环境:要是你的服务器所在环境如果死机还不会造成太大的问题的话,加上你的环境是在教学的场合当中时(就是说,唔!经费不足的环境啦!)那么可以使用“号称”完全兼容商业版RHEL的CentOS。因为CentOS是抓RHEL的源代码来重新打包起来的一个Linux distribution,所以号称兼容于RHEL。这一版的软件完全与RHEL相同,再改版的幅度较小,适合于服务器系统的环境;

用于个人的桌面电脑:想要尝鲜吗?建议使用很炫的Fedora/Ubuntu等Desktop(桌面环境)使用的版本!如果不想要安装Linux的话,那么Fedora或CentOS也有推出Live CD了!也很容易学习喔!


1.3 Linux当前应用的角色

了解了什么是Linux之后,再来谈谈,那目前Linux用在哪里呢?由于Linux kernel实在是非常的小巧精致,可以在很多强调省电以及较低硬件资源的环境下面执行;此外,由于Linuxdistribution整合了非常多很棒的软件(不论是专利软件或自由软件),因此也相当适合目前个人计算机的使用呢!传统上,Linux常见的应用可大致分为企业应用与个人应用两方面,但这几年很流行的云计算环境中,让Linux似乎又更有着力点啰!


1.3.1 企业环境的应用

企业对于数码化的目标在于提供消费者或员工一些产品方面的信息(例如宣传网站),以及整合整个企业内部的数据统一性(例如统一的帐号管理/文件管理系统等)。另外,某些企业例如金融业等,则强调在数据库、安全强化等重大关键应用。学术单位则很需要强大的运算能力等。所以企业环境运用Linux作些什么呢?

网络服务器:

这是Linux当前最热门的应用了!承袭了Unix高稳定性的良好传统,Linux上面的网络功能特别的稳定与强大!此外,由于 GNU计划与Linux的GPL授权模式,让很多优秀的软件都在Linux上面发展,且这些在Linux上面的服务器软件几乎都是自由软件!因此,做为一部网络服务器,例如WWW, Mail Server, File

Server等等,Linux绝对是上上之选!当然,这也是Linux的强项!由于 Linux server 的需求强烈,因此许多硬件厂商推出产品时,

还得要特别说明有支持的 Linux distributions 呢!方便提供企业采购部门的规划喔!例如下面的链接可以瞧瞧:

Dell 公司的Server 对 OS 的支持度:

http://www.dell.com/support/contents/tw/en/twbsd1/article/Product-Support/Self-support-Knowledgebase/enterprise-resource-center/server-operating-system-support

HP 公司的支持:

http://www8.hp.com/us/en/business-services/it-services.html?compURI=1078888#tab=TAB1

IBM 公司的支持:

http://www-03.ibm.com/systems/hardware/browse/linux/

VMWare 的虚拟化支持:

https://www.vmware.com/support/ws55/doc/intro_supguest_ws.html

从上面的几个大厂的 Linux 支持情况来看,目前(2015)支持度比较广泛的依旧是 Red Hat 以及 SuSU两个大厂喔!提供给企业采购的时候参考参考!

Tips

前一阵子参加一个座谈会,会上许多企业界的前辈们在聊,如果想要选择某个 Linux distribution 时,哪个 distribution 会是企业采购时的最爱呢?与会的朋友说,要采购吗?看看服务器大厂对于该 distribution 的支持度就知道了!答案是什么?就是上面许多链接的结果啰!^_^ 

关键任务的应用(金融数据库、大型企业网管环境):

由于个人计算机的性能大幅提升且价格便宜,所以金融业与大型企业的环境为了要精简自己机房的机器设备,因此很多企业渐渐的走向Intel兼容的x86主机环境。而这些企业所使用的软件大多是Unix操作系统平台的软件,总不能连过去开发的软件都一口气全部换掉吧!所以啰,这个时候符合Unix操作系统标准并且可以在x86上运行的Linux就渐渐崭露头角了!^_^

目前很多金融业界都已经使用Linux做为他们的关键任务应用。所谓的关键任务就是该企业最重要的业务啦!举例来说,金融业最重要的就是那些投资者、帐户的数据了,这些数据大多使用数据库系统来作为存取接口,这些数据很重要吧!很多金融业将这么重要的任务交给了Linux了!你说Linux厉不厉害啊?

学术机构的高性能运算任务:

学术机构的研究常常需要自行开发软件,所以对于可作为开发环境的操作系统需求非常的迫切!举例来说,非常多技职体系的科技大学就很需要这方面的环境,好进行一些毕业项目的制作呢!又例如工程界流体力学的数值模式运算、娱乐业的特效功能处理、软件开发者的工作平台等等。由于Linux的创造者本身就是个计算机性能癖,所以Linux有强大的运算能力;并且Linux具有支持度相当广泛的GCC编译软件,因此Linux在这方面的优势可是相当明显的!

举个鸟哥自己的案例好了,鸟哥之前待的研究室有跑一套空气品质模式的数值仿真软件。这套软件原本只能在Sun的SPARC机器上面跑。后来该软件转向Linux操作系统平台发展,鸟哥也将自己实验室的数值模式程序由Sun的Solaris平台移植到Linux上面呢!据美国环保署内部人员的测试,发现Linux平台的整体硬件费用不但比较便宜(x86系统嘛!),而且速度还比较快呢!

另外,为了加强整体系统的性能,计算机集群系统(Cluster)的并行运算能力在近年来一直被拿出来讨论(注11)。所谓的并行运算指的是“将原本的工作分成多份,然后交给多部主机去运算,最终再将结果收集起来”的一种方式。由于通过高速网络使用多部主机,将能够让原本需要很长运算时间的工作,大幅的降低等待的时间!例如中央气象局的气象预报就很需要这样的系统来帮忙!而Linux操作系统则是这种架构下相当重要的一个环境平台呢!

Tips

由于服务器的CPU数量可以增加许多,而且也能够达到比较省电的功能,因此鸟哥最近更换了昆山科大资传系的模型运算服务器组,通过20核心40线程的以及12核心24线程的两部系统,搭配10G网卡来处理模式的运行!用的是本书谈到的CentOS Linux,跑的模式是美国环保署公布,现行于世界最流行的CMAQ空品模型喔!


1.3.2  个人环境的使用

你知道你平时接触的电子用品中,哪些东西里面有Linux系统存在呢?其实相当的多呢!我们就来谈一谈吧!

台式电脑:

所谓的台式电脑,其实就是你我在办公室使用的计算机啦。一般我们称之为Desktop(桌面)的系统。那么这个Desktop的系统平时都在做什么呢?大概都是这些工作吧:

上网浏览+实时通讯(Skype, FB, Google, Yahoo…);

文字处理;

网络办公平台;

办公室软件(OfficeSoftware)处理数据;

收发电子邮件;

想进行这些计算机工作时,你的Desktop环境需要什么东西?很简单,“就是需要窗口”!因为上网浏览、文字编辑的所见即所得界面,以及电子公文系统等等, 如果没有窗口界面的辅助,那么将对使用者造成很大的困扰。而众所皆知的,Linux早期都是由工程师所发展的,对于窗口界面并没有很需要,所以造成Linux不太友好的印象。

好在,为了要强化桌面电脑的使用率,Linux与X Window System结合了!要注意的是,X Window System仅只是Linux上面的一套软件,而不是核心喔!所以即使X Window挂了,对Linux也可能不会有直接的影响呢!更多关于X window system的详细信息我们留待第二十三章再来介绍。

近年来在各大社区的团结合作之下,Linux的窗口系统上面能够跑的软件实在是多的吓人!而且也能够应付得了企业的办公环境!例如美观的KDE与GNOME窗口界面,搭配可兼容微软Office的OpenOffice/LibreOffice(https://www.openoffice.org/zh- cn/,https://zh-cn.libreoffice.org/)等软件,这些自由的办公室软件包含了文字处理、电子表格、简报软件等等,功能齐全啊!然后配合功能强大速度又快的Firefox浏览器,以及可下载信件的雷鸟(ThunderBird)软件(类似微软的OutlookExpress),还有可连上多种实时通讯的Pidgin!Linux能够做到企业所需要的各项功能啦!

Tips

鸟哥真的垂垂老已~前一阵子(2014)上课时,跟学生说:“各位啊!你们考取的证书也转一份给老师来备份嘛!用email寄给鸟哥喔!”结果有几个学生竟然举手说!“老师!我知道email啊!不过,从来没有用过 email寄附件耶!所以才没有传给你啊!”哇!!什么:“那你们怎么传送文件啊?用FTP喔?”鸟哥问,他说“没啊!就用FB或者是Line啊!或者dropbox!真没用过email耶!”…时代不同了…

手持系统(PDA、手机):

自从iphone4在 2010年面世之后,整个手机市场开始大转向!智能手机市场将原本商务用的PDA市场整个吃掉!然后原本在2010年前后很热门的小笔记本也被平板电脑打趴了!在这个潮流下,Google成立了开放手机联盟(Open Handset Alliance),并且推出Android手机专用操作系统!而Android其实就是Linux核心的一支,只是专门用来针对手机/平板这类的ARM机器所设计的(注12)!

2015最新的Android系统5.x使用的就是Linuxkernel 3.4.x版本,另外,调查中也显示,从2013年之后,Android系统已经是全球最多人使用的手机系统。也就是说,现在手机市场的主流操作系统是Linux分支出来的Android喔!那怎么能说Linux很 少人用呢?哈哈!天天都在用耶各位!

Tips

如果你的手机是Android系统的话,请拿出来,然后点选“设置”--> “关于(手机)” --> “软件信息”,你就会看到Android版本,然后再点选“更多”, 这时你就会看到类似3.4.10-xxx的代号,那是什么?查一查上头提到的Linux版本,就知道那是啥鬼东西啰!^_^

嵌入式系统:

在第零章当中我们谈到过硬件系统,而要让硬件系统顺利的运行就得要撰写合适的操作系统才行。那硬件系统除了我们常看到的计算机之外,其实家电产品、PDA、手机、数码相机以及其他微型的计算机配备也是硬件系统啦!这些计算机配备也都是需要操作系统来控制的!而操作系统是直接嵌入于产品当中的,理论上你不应该会更动到这个操作系统,所以就称为嵌入式系统啦!

包括路由器、防火墙、手机、IP分享器、交换器、机器人控制芯片、家电用品的微计算机控制器等等,都可以是Linux操作系统喔!酷学园内的Hoyo大大就曾经介绍过如何在嵌入式设备上面载入Linux!你桌面上用来备份的 NAS 说不定内部也是精简化过的 Linux 系统啊!

虽然嵌入式设备很多,大家也想要转而使用Linux操作系统,不过在台湾,这方面的人才还是太少了!要玩嵌入式系统必须要很熟悉Linux Kernel与驱动程序的结合才行!这方面的学习可就不是那么简单喔!^_^


1.3.3  云端应用

自从个人计算机的CPU内置的核心数越来越多,单一主机的能力太过强大,导致硬件资源经常闲置,这个现象让虚拟化技术得以快速发展!而由于硬件资源大量集中化,然后移动办公室之类的需求越来越多,因此让办公数据集中于云程序中,让企业员工仅须通过端点设备连线到云去取用运算资源,这样就变成随时随地都可以办公啦(其实很惨…永远不得休息啊!真可怜~)!

这就是三国演义里面谈到的“天下大势,分久必合、合久必分”的名言啊!从(1)早期的昂贵的大型主机分配数个终端机的集中运算机制,到(2)2010 年前个人计算机运算能力增强后,大部分的运算都是在台式机或笔记本上自行完成,再也不需要跑去大型主机取得运算资源了!到现在(3)由于移动设备的发达,产生的庞大数据需要集中处理,因而产生云端系统的需求!让信息/资源集中管理!这不是分分合合的过程吗?^_^

云应用

许多公司都有将资源集中管理的打算,之前参与一场座谈会,有幸遇到阿里巴巴的架构师,鸟哥偷偷问他说,他们机房里面有多少计算机主机啊?他说不多!差不多才2万部主机而已…鸟哥正在搞的可提供 200 个左右的虚拟机的系统,使用大约 7部主机就觉得麻烦了,他们家至少有2万部耶!这么多的设备底层使用的就是 Linux 操作系统来统一管理。

另外,除了公司自己内部的私有云之外,许多大型网际网络供应商(ISP)也提供了所谓的公有云来让企业用户或个人用户来使用 ISP 的虚拟化产品。因此,如果公司内部缺乏专业管理维护人才,很有可能就将自家所需要的关键应用如 Web、Mail、系统开发环境等操作系统交由 ISP 代管,自家公司仅须远端登陆该系统进行网站内容维护或程序开发而已。那这些虚拟化后的系统,也经常是 Linux 啊!因为跟上面企业环境利用提到的功能是相同的!

所以说云应用的底层就是 Linux ,而云应用搭建出来的虚拟机,内容也是 Linux 操作系统哩!用的越来越多啊!

Tips

所谓的“虚拟化”指的是:在一部实体主机上面仿真出多个逻辑上完全独立的硬件,这个假的虚拟出来的硬件主机,可以用来安装一部逻辑上完全独立的操作系统! 因此,通过虚拟化技术,你可以将一部实体主机安装多个同时运行的操作系统 (非多重启动),以达到将硬件资源完整利用的效果。 很多ISP就是通过贩售这个虚拟机的使用权来赚钱的喔!

终端设备

既然运算资源都集中在云里面了,那我需要连线到云程序的设备应该可以越来越轻量吧?当然没错!所以智能手机才会这么热门啊!很多时候你只要有智能手机或者是平板,连线到公司的云里面去,就可以开始办公了哩!

此外,还有更便宜的端点设备喔!那就是近年来很热门又流行的树莓派 (Raspberry Pi)与香蕉派(Banana Pi),这两个小东西售价都不到 50 美元, 有的甚至台币 1000 块不到!这个Raspberry Pi其实就是一部小型的计算机,只要加上USB键盘、鼠标与HDMI的屏幕,立刻就是可以让小朋友学习程序语言的环境!如果加上通过网络去取得具有更强大运算资源的云端虚拟机,不就可以做任何事了吗?所以,端设备理论上会越来越轻量化的!

Tips

鸟哥近几年来做的主要研究,就是通过一组不是很贵的 server 系统达到打开多个虚拟机的环境,然后让学生可以在教室利用类似 banana pi 的设备来连线到服务器,这时学生就可以通过网络来取得一套完整的操作系统,可以拿来上课、回家实践练习、上机考试等等!相当有趣!

鸟哥称为虚拟计算机教室!而 server 与banana pi 的内部操作系统当然就是 Linux 啊!

你可能感兴趣的:(鸟哥的Linux私房菜2018简体化 第一章(2)、Linux是什么与如何学习)