下载

0下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 鸟哥的Linux私房菜

鸟哥的Linux私房菜.pdf

鸟哥的Linux私房菜

wenxyz520
2011-05-24 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《鸟哥的Linux私房菜pdf》,可适用于IT/计算机领域

仅发Linux伊甸园鸟哥的Linux私房菜文档收集:檸檬dё單純尊重作者鸟哥,转载请示出处!交流群:WelcomeYou!!!什么是Linux最近更新日期:众所皆知的Linux的核心原型是年由托瓦兹(LinusTorvalds)写出来的但是托瓦兹为何可以写出Linux这个操作系统?为什么他要选择的计算机来开发?为什么Linux的发展可以这么迅速?又为什么Linux是免费的?以及目前为何有这么多的Linux版本(distributions)呢?了解这些东西后才能够知道为何Linux可以免除专利软件之争并且了解到Linux为何可以同时在个人计算机与大型主机上面大放异彩!所以在实际进入Linux的世界前就让我们来谈一谈这些有趣的历史故事吧!^^什么是Linux计算器:计算的辅助工具什么是操作系统?Linux之前Unix的历史关于GNU计划Torvalds的Linux发展与Minix之间对硬件的多任务测试初次释出LinuxLinux的发展:虚拟团队的产生LinuxdistributionsLinux的特色Linux的特色Linux的优缺点其它Linux相关重点回顾本章练习参考数据针对本文的建议:http:phorumvbirdorgviewtopicphpt=什么是Linux?Linux这玩意儿是在计算机上面运作的所以当然得要了解一下计算机这玩意儿。首先到底有哪些种类的计算机呢?而Linux可以在哪些种类的计算机上面运作?且Linux源自哪里?这些我们都得来谈一谈先!计算器:计算的辅助工具在目前的都市生活中您应该很难不接触到计算机这个玩意儿吧?这个计算机当初在开发的时候是希望可以辅助与简化人们进行大量的运算工作后来才发展成为一些特殊用途。无论如何计算机基本的功能就是:『接受使用者输入指令经由CPU的数学与逻辑单元运算处理后以产生或储存成有用的信息』。为了达成这个功能当然计算机就必须要有:•输入单元:例如鼠标、键盘、卡片阅读机等等•中央处理器(CPU):含有算数逻辑、控制、记忆等单元•输出单元:例如屏幕、打印机等等如果您看过计算机的话那么上面的东西其实就是组成您计算机的主要组件啰!而为了连结各个组件因此有了主机板所以您的主机里面就包含了主机板以及CPU还有各种需要的适配卡。而屏幕、键盘、鼠标则透过与主机的连结就构成一部可以运作的计算机了。另外由于计算机仅认识因此计算机主要是以二进制的方式来计算的因此通常计算机的记忆储存单位都是以Byte或bits为基本单位。他们的单位是这样的:•Bytes=bits•KB=Bytes•MB=KB•GB=MB而计算机也因为他的复杂度而分为数种等级例如:•超级计算机(Supercomputer):超级计算机是运作速度最快的计算机但是他的维护、操作费用也最高!主要是用于需要有高速计算的计划中。例如:国防军事、气象预测、太空科技用在模拟的领域较多。详情也可以参考:国家高速网络与计算中心http:wwwnchcorgtw的介绍!至于全世界的大超级计算机则请参考:http:wwwtoporg•大型计算机(MainframeComputer):大型计算机通常也具有数个高速的CPU功能上虽不及超级计算机但也可用来处理大量资料与复杂的运算。例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构或者是大型企业的数据库服务器等等。•迷你计算机(Minicomputer):迷你计算机仍保有大型计算机同时支持多使用者的特性但是主机可以放在一般作业场所不必像前两个大型计算机需要特殊的空调场所。通常用来作为科学研究、工程分析与工厂的流程管理等。•微电脑(Microcomputer):又可以称为个人计算机也是我们这本书主要探讨的目标!体积最小价格最低但功能还是五脏俱全的!大致又可分为桌上型、笔记型等等。虽然在目前个人计算机的使用甚为广泛但是在年以前个人计算机是比较不被重视的!因为()他的运算速度在当时实在很差而且()当时比较有名的操作系统也没有对个人计算机支持。所以才会流行不太起来~嘿嘿!提到操作系统啰~底下我们就来谈一谈之前的操作系统。什么是操作系统什么是操作系统(OperationSystem,OS)呢?我们先来想一想上面介绍的计算器(计算机)是如何工作的?举例来说您计算机屏幕上面显示的讯息是如何显示出来的呢?嗯!是藉由显示卡与屏幕显像的。那么如果你想要看VCD呢?呵呵就需要)有影音数据的光盘片、)可读取光盘片的光驱、)可以转换影音数据输出的中央处理器(CPU)、)可以显示影像的显示芯片(显示卡)、)可以传输声音的音效芯片(声卡)、)可以输出影像的屏幕以及)可以发出声音的喇叭!也就是说:所有在『工作』的东西都是『硬件』呀!对啦!就是硬件在工作!那么问题来了现在我们知道计算机所进行的工作都是计算机硬件帮我们达成的但是为什么这些硬件知道如何播放VCD呢?这当然是因为有某个东西在正确的控制硬件的工作了那个咚咚就是:操作系统啦!操作系统可以管理整部计算机的硬件他可以控制CPU进行正确的运算他可以分辨硬盘里头的数据并进行读取他还必须要能够认识所有的适配卡这样才能够将所有的硬件通通正确的使用上啊!所以如果没有这个操作系统那么您的计算机就等于是一堆废铁而已啊!虽然操作系统可以完整的掌控所有的硬件资源但是对于使用者来说还是不够的!因为操作系统虽然可以掌控所有的硬件但是如果使用者无法与操作系统沟通那么这个操作系统就没有什么用处了。简单的来说以上面的VCD为例虽然操作系统可以控制硬件播放VCD但是如果使用者没有办法控制何时要播出VCD的话那么到底我们要怎么看VCD啊?对吧!所以说一个比较『完整的操作系统』应该要包含两个东西一个是『核心与其提供的接口工具』、一个是『利用核心提供的接口工具所开发出来的软件』。我们以大家常使用的Windows计算机来做一个简单的说明好了。大家应该都使用过Windows计算机里面的『档案总管』吧!当你开启档案总管的时候他就会显示你硬盘当中的数据这个『显示硬盘里面的数据就是核心帮你做的』但是『你要核心去显示硬盘哪一个目录下的数据则是由档案总管这个工具帮你达成的』!这样可以理解吗?那么核心有没有作不到的事?当然有的举例来说如果您曾经自行安装过比较新的显示卡在您的个人计算机上面那么应该常常会发生Windows计算机告知您:『找不到合适的驱动程序来显示』的问题吧?也就是说即使您有最新的显示卡安装在您的个人计算机上面而且也有播放VCD的程序但是因为『核心』无法操控这个最新的显示卡所以就无法正常的显示您的VCD了。没错!你的整个硬件是由核心来管理的而如果核心不认识你的硬件那么你将无法使用该硬设备例如上面提到的最新的显示卡。Tips:在定义上只要能够让计算机硬件正确无误的运作那就算是操作系统了。所以说操作系统其实就是核心与其提供的接口工具不过就如同上面讲的因为最阳春的核心缺乏了与使用者沟通的亲和接口所以在目前一般我们提到的『操作系统』都会包含核心与相关的使用者应用软件呢!核心就是『Kernel』他是一个操作系统的最底层的东西由他来掌管整个硬件资源的工作状态而每个操作系统都有自己的核心所以说当有新的硬件加入到你的系统中的时候若你的『Kernel』并没有支援他的时候呵呵这个新的硬件就肯定无法工作的因为控制他的Kernel并不认识他呀!这样了解了吗?!先有个概略性的了解后面我们提到『核心编译』的时候会再更详细的谈到他!一般来说Kernel为了达成使用者所需要的正确运算结果他必须要管理的事项有:•系统呼叫接口(Systemcallinterface):为了方便程序开发者可以轻易的透过与kernel的沟通将硬件的资源进一步的利用于是需要有这个简易的接口来方便程序开发者。•行程管理(Processcontrol):总有听过所谓的『多任务环境』吧?一部计算机可能同时间有很多的工作跑到CPU等待运算处理Kernel这个时候必须要能够控制这些工作让CPU的资源作有效的分配才行!•内存管理(Memorymanagement):控制整个系统的内存管理若内存不足Kernel最好还能够提供虚拟内存的功能!•档案系统管理(Filesystemmanagement):档案系统的管理例如数据的输入输出(IO)等等的工作啦!还有不同档案格式的支持啦等等如果你的核心不认识某个档案系统那么您将无法使用该档案格式的档案啰!例如:Windows就不认识NTFS档案格式的硬盘•装置的驱动(Devicedrivers):就如同上面提到的硬件的管理是Kernel的主要工作之一当然啰装置的驱动程序就是核心需要做的事情啦!好在目前都有所谓的『可加载模块』功能可以将驱动程序编辑成模块就不需要重新的编译核心啦!这个也会在后续的核心编译当中提到的!所以啦!所有硬件的资源都是kernel来管理的!至于我们要达成一些工作时除了藉由核心本身提供的功能(例如上面提到的档案总管)之外还可以藉由其它的应用软件来达成喔!举个例子来说你要看VCD影片是吧!那么除了Windows提供的媒体播放程序之外你也可以自行安装VCD播放程序来播放VCD啰!这个播放程序就是应用软件啰而这个应用软件可以帮你去控制核心来工作(就是放映影片啰)因此我们可以这样说核心是控制整个硬件支持的咚咚也是一个操作系统的最底层然而要让整个操作系统更完备的话那还需要含有相当丰富的核心提供的工具以及核心相关的应用软件来支持。OK!提到这里那么您知道Linux是什么了吗?呵呵!对啦!其实Linux就是一个操作系统这个操作系统里头含有最主要的kernel以及kernel提供的工具啦!他提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构这个架构是沿袭Unix良好的传统来的所以相当的稳定而功能强大!此外由于这个优良的架构可以在目前的个人计算机(X系统)上面跑所以很多的软件开发者将他们的工作心血移转到这个架构上面那就是很多的应用软件啦!虽然Linux仅是其核心与核心提供的工具不过由于核心、核心工具与这些软件开发者提供的软件的整合使得Linux成为一个更完整的、功能强大的操作系统啰!我们可以将Linux的系统与使用者的相关性看成底下的图示:图一、使用者、使用者接口与核心工具、核心、与硬件之相关性约略了解Linux是何物之后接下来我们要谈一谈『为什么说Linux是很稳定的操作系统呢?他是如何来的?』Tips:Torvalds先生在写出Linux的时候其实该核心仅能『驱动所有的硬件』而已所谓的『让计算机开始运作并且等待使用者指令输入』而已事实上当时能够在Linux上面跑得软件还很少呢!Tips:由上面的说明中我们知道硬件是由『核心』来控制的而每种操作系统都有他自己的核心。这就产生了一个很大的问题因为早期硬件的开发者所开发的硬件架构或多或少都不相同举例来说年以前的麦金塔是请IBM公司开发自己的硬件与操作系统Windows则是开发在x架构上的操作系统之一那么Windows是否可以在麦金塔上面跑?答案是『不行』的!不过在年以后麦金塔转而请Intel设计其硬件架构亦即其硬件架构已经转为x系统因此在年以后的麦金塔若使用x架构时其硬件则『可能』可以安装Windows操作系统了。Tips:因为Windows操作系统本来就是针对个人计算机x架构的硬件去设计的所以他当然只能在x的个人计算机上面运作在不同的平台当然就无法运行了。也就是说每种操作系统都是在他专门的机器上面运行的喔!这点得要先了解。不过Linux由于是OpenSource的操作系统所以他的程序代码可以被修改成适合在各种机器上面运行的也就是说Linux是具有『可移植性』这可是很重要的一个功能喔!^^Linux之前Unix的历史早在Linux出现之前的二十年(大约在年代)就有一个相当稳定而成熟的操作系统存在了!那就是Linux的老大哥『Unix』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的Linux的核心是由LinusTorvalds在年的时候给他开发出来的并且丢到网络上提供大家下载后来大家觉得这个小东西(LinuxKernel)相当的小而精巧所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!嗯!等鸟哥慢慢的唬xx喔不!听我慢慢的道来!•年以前:一个没有完成的梦想:Bell,MIT与GE的『Multics』系统早期的计算机并不像现在的个人计算机一样他可不是一般人碰的起的呢~除非是军事或者是高科技用途或者是学术单位的学术研究否则真的很难接触到。非但如此早期的计算机架构还很难使用除了运算速度并不快之外操作接口也很困扰的!在那个时候写程序是件很可怜的事情因为程序设计者必须要将程序相关的信息在读卡纸上面打洞然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了如果程序有个小地方写错哈哈!光是重新打卡就很惨加上主机少使用者众多光是等待就耗去很多的时间了!在之后经由操作系统的改良使得后来可以使用键盘来进行信息的输入输出。不过在一间学校里面主机毕竟可能只有一部如果多人等待使用那怎么办?好在年代初期麻省理工学院(MIT)发展了所谓的:『兼容分时系统(CompatibleTimeSharingSystem,CTSS)』它可以让大型主机透过提供数个终端机(terminal)以联机进入主机来利用主机的资源进行运算工作。架构有点像这样:图二、早期主机与终端机的相关性图标如此一来无论主机在哪里只要在终端机前面进行输入输出的作业就可利用主机提供的功能了。不过需要注意的是此时终端机只具有输入输出的功能本身完全不具任何运算或者软件安装的能力。而且比较先进的主机大概也只能提供个不到的终端机而已。为了更加强化大型主机的系统以让主机的资源可以提供更多使用者来利用所以在年前后由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE)共同发起了Multics的计划Multics目的是想要让大型主机可以达成提供个以上的终端机联机使用的目标。不过到了年前后计划进度落后资金也短缺所以该计划就宣告不治喔!是宣告失败~(注:Multics有复杂、多数的意思存在。)•年:KenThompson的小型fileserversystem在认为Multics计划不可能成功之后贝尔研究室就退出该计划。不过原本参与Multics计划的人员中已经从该计划当中获得一些点子KenThompson就是其中一位!Thompson因为自己的需要希望开发一个小小的操作系统以提供自己的需求。在开发时有一部DEC(DigitalEquipmentCorporation)的PDP没人使用于是他就准备针对这部主机进行操作系统核心程序的撰写。本来Thompson是没时间的有趣的是在年八月份左右刚好Thompson的妻儿去了美西探亲于是他有了额外的一个月的时间好好的待在家将一些构想实现出来!经过四个星期的奋斗他终于以组译语言(Assembler)写出了一个核心程序同时包括一些核心工具程序以及一个小小的档案系统。那个系统就是Unix的原型!当时Thompson将Multics庞大的复杂系统简化了不少于是同实验室的朋友都戏称这个系统为:Unics。Thompson的这个档案系统有两个重要的概念分别是:o所有的程序或系统装置都是档案o不管建构编辑器还是附属档案所写的程序只有一个目的且要有效的完成目标。这些概念在后来对于Linux的发展有相当重要的影响喔!•年:Unix的正式诞生Ritchie等人以C语言写出第一个正式Unix核心由于Thompson写的那个操作系统实在太好用了所以在贝尔实验室内部广为流传并且数度经过改版。但是比较重要的改版则发生在年。Unix本来是以组译语言写成的后来因为系统移植与效能的需求该系统被B语言所改写。不过效能依旧不是很好。后来DennisRitchie将B语言重新改写成C语言C语言算是比较高阶的程序语言可以在不同的机器上面运作而Ritchie等人也同时将原本Thompson的那个操作系统重新以C语言改写最后发行出Unix的正式版本!在这个时候需要特别注意的是贝尔实验室是隶属于ATT的只是ATT当时忙于其它商业活动所以对于Unix是采取比较开放的态度此外Unix在这个时期的发展者都是贝尔实验室的工程师这些工程师对于程序当然相当有研究所以Unix在此时当然是不容易被一般人所接受的!此外也需要特别强调由于Unix是以较高阶的C语言写的相对于组译语言需要与硬件有密切的配合高阶的C语言与硬件的相关性就没有这么大了!所以这个改变也使得Unix很容易被移植到不同的机器上面喔!•年:重要的Unix分支:BSD的诞生前面说到虽然贝尔属于ATT但是ATT此时对于Unix是采取开放的态度此外Unix是以高阶的C语言写成的理论上是具有可移植性的!所以只要取得Unix的原始码并且针对大型主机的特性加以修订原有的原始码(SourceCode)就可能将Unix移植到另一部不同的主机上头了。所以在年以后Unix便得以与学术界合作开发!最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。柏克莱大学的BillJoy在取得了Unix的核心原始码后着手修改成适合自己机器的版本并且同时增加了很多工具软件与编译程序最终将他命名为BerkeleySoftwareDistribution(BSD)。这个BSD是Unix很重要的一个分支BillJoy也是Unix业者『Sun』这家公司的创办者!Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。(后来可以安装在x硬件架构上面FreeBSD即是BSD改版而来!)•年:一个措手不及的版权宣告!由于Unix的高度可移植性与强大的效能加上当时并没有版权的纠纷所以让很多商业公司开始了Unix操作系统的发展例如ATT自家的SystemV、IBM的AIX以及HP与DEC等公司都有推出自家的主机搭配自己的Unix操作系统。但是如同我们前面提到的操作系统的核心(Kernel)必须要跟硬件配合以提供及控制硬件的资源进行良好的工作!而在早期每一家生产计算机硬件的公司还没有所谓的『协议』的概念所以每一个计算机公司出产的硬件自然就不相同啰!因此他们必须要为自己的计算机硬件开发合适的Unix系统。例如在学术机构相当有名的Sun、Cray与HP就是这一种情况。他们开发出来的Unix操作系统以及内含的相关软件并没有办法在其它的硬件架构下工作的!且由于没有厂商针对个人计算机设计Unix系统因此在早期并没有支持个人计算机的Unix操作系统的出现(由于Unix强调的是多人多任务的环境但早期的x个人计算机架构下的CPU是没有能力达到多任务的作业因此并没有人对移植Unix到x的计算机上有兴趣)。每一家公司自己出的Unix虽然在架构上面大同小异但是却真的仅能支持自身的硬件所以啰早先的Unix只能与服务器(Server)或者是大型工作站(Workstation)划上等号!但是这个高度开放的Unix系统在年有了重大的转折~因为ATT由于商业的考虑以及在当时现实环境下的思考于是将想Unix的版权收回去因此在ATT在年发行的第七版Unix中特别提到了『不可对学生提供原始码』的严格限制!同时也造成Unix业界之间的紧张气氛并且也引爆了很多的商业纠纷~•年之一:x架构的Minix诞生关于年的版权声明中影响最大的当然就是学校教Unix相关学问的教授了!想一想如果没有核心原始码那么如何教导学生认识Unix呢?这问题对于AndrewTanenbaum(谭宁邦)教授来说实在是很伤脑筋的!不过学校的课程还是得继续啊!那怎么办??既然年的Unix第七版可以在Intel的x架构上面进行移植那么是否意味着可以将Unix改写并移植到x上面了呢?在这个想法上谭宁邦教授于是乎自己动手写了Minix这个UnixLike的核心程序!在撰写的过程中为了避免版权纠纷谭宁邦完全不看Unix核心原始码!并且强调他的Minix必须能够与Unix兼容才行!谭宁邦在年开始撰写核心程序到了年终于完成并于次年出版Minix相关书籍同时与新闻群组相结合~这个Minix版本比较有趣的地方是他并不是完全免费的无法在网络上提供下载!必须要透过磁盘磁带购买才行!虽然真的很便宜~不过毕竟因为没有在网络上流传所以Minix的传递速度并没有很快速!此外购买时随磁盘还会附上Minix的原始码!这意味着使用者可以学习Minix的核心程序设计概念喔!(这个特色对于Linux的启始开发阶段可是有很大的关系喔!)此外开发者仅有谭宁邦教授因为学者很忙啊!加上谭宁邦始终认为Minix主要用在教育用途上面所以对于Minix是点到为止!所以Minix很受欢迎没错不过使用者的要求需求的声音可能就比较没有办法上升到比较高的地方了!这样说您明白吧???^^•年之二:GNU与FSF计划的成立RichardMathewStallman(史托曼)在年发起的GNU计划对于现今的自由软件风潮真有不可磨灭的地位!目前我们所使用得很多自由软件几乎均直接或间接帮助于GNU这个计划呢!那么史托曼是何许人也?为何他会发起这个GNU计划呢?RichardMathewStallman(生于年网络上自称的ID为RMS)从小就很聪明!他在年的时候进入黑客圈中相当出名的人工智能实验室(AILab)这个时候的黑客专指计算机功力很强的人而非破坏计算机的怪客(cracker)喔!当时的黑客圈对于软件的着眼点几乎都是在『分享』所以并没有专利方面的困扰!这个特色对于史托曼的影响很大!不过后来由于管理阶层的问题导致实验室的优秀黑客离开该实验室并且进入其它商业公司继续发展优秀的软件。但史托曼并不服输仍然持续在原来的实验室开发新的程序与软件。后来他发现到自己一个人并无法完成所有的工作于是想要成立一个开放的团体来共同努力!年以后因为实验室硬件的更换使得史托曼无法继续以原有的硬件与操作系统继续自由程序的撰写~而且他进一步发现到过去他所使用的Lisp操作系统是麻省理工学院的专利软件是无法共享的这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了Lisp这个系统。后来他接触到Unix这个系统并且发现Unix在理论与实际上都可以在不同的机器间进行移植。于是他开始转而使用Unix系统。因为Lisp与Unix是不同的系统所以他原本已经撰写完毕的软件是无法在Unix上面运行的!为此他就开始将软件移植到Unix上面。并且为了让软件可以在不同的平台上运作因此史托曼将他发展的软件均撰写成可以移植的型态!年史托曼开始GNU计划这个计划的目的是想要:建立一个自由的开放的Unix操作系统。但是建立一个操作系统谈何容易啊!而且在当时的GNU是仅有自己一个人单打独斗的史托曼~这实在太麻烦但又不能不做这个计划于是史托曼反其道而行~『既然操作系统太复杂我就先写可以在Unix上面运行的小程序这总可以了吧?呵呵!』在这个想法上史托曼便开始了程序的写作。在写作期间为了不让自己吃上官司他绝对不看专利软件的原始码!为了这个计划他开始使用原本Unix上面跑的软件并自行撰写功能与Unix原有专利软件相仿的软件。但不论是什么软件都得要进行编译成为二进制档案(binaryfile)后才能够执行因此他便开始撰写C语言的编译器那就是现在相当有名的GNUC(gcc)!这个点相当的重要!这是因为C语言编译器版本众多但都是专利软件如果他写的C编译器够棒效能够佳那么将会大大的让GNU计划出现在众人眼前!Tips:我们在前面稍微提过计算机仅认识的数据但是人类不认识啊!人类对于纯文字的数据(就是所谓的ASCII档案格式)比较有感觉。但是偏偏计算机又不认识ASCII格式的文字很头痛不是吗?为此就会有很多的所谓的『编译器』来辅助我们撰写程序。我们一般使用文字编辑器以ASCII纯文字格式来撰写程序再透过所谓的『编译器(compiler)』』将刚刚完成的文本文件『编译』成为计算机认识的二进制制(binaryfile)的档案以让计算机认识且可以执行的程序啊!但开始时并不顺利为此他先转而将Emacs编辑器写成可以在Unix上面跑得软件并公开公布原始码因为Emacs太优秀了因此很多人便直接向他购买。此时Internet尚未流行所以史托曼便借着Emacs以磁带(tape)出售赚了一点钱进而开始全力撰写其它软件。并且成立自由软件基金会(FSF,FreeSoftwareFoundation)请更多工程师与志工撰写软件。终于还是完成了GCC这比Emacs还更有帮助!此外他还撰写了更多可以被呼叫的C函式库(GNUClibrary)以及可以被使用来操作操作系统的基本接口BASHshell!这些都在年左右完成了!Tips:如果纯粹使用文字编辑器来编辑程序的话那么程序语法如果写错时只能利用编译时发生的错误讯息来修订了这样实在很没有效率。Emacs则是一个很棒的编辑器!注意!是编辑(editor)而非编译(compiler)!他可以很快的立刻显示出您写入的语法可能有错误的地方这对于程序设计师来说实在是一个好到不能再好的工具了!所以才会这么的受到欢迎啊!到了年为了避免GNU所开发的自由软件被其它人所利用而成为专利软件所以他与律师草拟了有名的通用公共许可证(GeneralPublicLicense,GPL)并且称呼他为copyleft(相对于专利软件的copyright!)。关于GPL的相关内容我们在下一个小节继续谈论在这里必须要说明的是由于有GNU所开发的几个重要软件如:oEmacsoGNUC(GCC)oGNUCLibrary(glibc)oBashshell造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发!进一步壮大了自由软件团体!这是很重要的!不过对于GNU的最初构想『建立一个自由的Unix操作系统』来说有这些优秀的程序是仍无法满足因为当下并没有『自由的Unix核心』存在所以这些软件仍只能在那些有专利的Unix平台上工作~~一直到Linux的出现•年:图形接口XFree计划有鉴于图形使用者接口(GraphicalUserInterface,GUI)的需求日益加重在年由MIT与其它协力厂商首次发表了XWindowSystem并且更在年成立了非营利性质的XFree这个组织。所谓的XFree其实是XWindowSystemFreex的整合名称呢!而这个XFree的GUI界面更在Linux的核心版于年释出时整合于Linux操作系统当中!Tips:为什么称图形使用者接口为X呢?因为由英文单字来看Window的W接的就是X啦!意指Window的下一版就是了!需注意的是XWindow并不是XWindows喔!•年:芬兰大学生LinusTorvalds的一则简讯到了年芬兰的赫尔辛基大学的LinusTorvalds在BBS上面贴了一则消息宣称他以bash,gcc等工具写了一个小小的核心程序这个核心程序可以在Intel的机器上面运作让很多人很感兴趣!从此开始了Linux不平凡的路程!关于GNU计划年创立GNU计划与FSF基金会的Stallman先生认为写程序最大的快乐就是让自己发展的良好的软件让大家来使用了!而既然程序是想要分享给大家使用的不过每个人所使用的计算机软硬件并不相同既然如此的话那么该程序的原始码(Sourcecode)就应该要同时释出这样才能方便大家修改而适用于每个人的计算机中呢!这个将原始码释出的举动就称为OpenSource!此外史托曼同时认为如果您将您程序的Sourcecode分享出来时若该程序是很优秀的那么将会有很多人使用而每个人对于该程序都可以查阅sourcecode无形之中就会有一票人帮您除错啰!您的这支程序将会越来越壮大!越来越优秀呢!而为了避免自己的开发出来的Opensource的自由软件被拿去做成专利软件于是Stallman同时将GNU与FSF发展出来的软件都挂上GPL的版权宣告~这个FSF的核心观念是『版权制度是促进社会进步的手段版权本身不是自然权力。』对于FSF有兴趣或者对于GNU想要更深入的了解时请参考树德大学的洪朝贵教授的网站http:saturnstuedutw~ckhungacphp或直接到GNU去:http:wwwgnuorg里面有更为深入的解说!Tips:为什么要称为GNU呢?其实GNU是GNU'sNotUnix的缩写意思是说GNU并不是Unix啊!那么GNU又是什么呢?就是GNU'sNotUnix嘛!如果您写过程序就会知道这个GNU=GNU'sNotUnix可是无穷循环啊!忙碌~另外什么是OpenSource呢?所谓的source是程序发展者写出的原始程序代码OpenSource就是软件在发布时同时将作者的原始码一起公布的意思!那么这个GPL(GNUGeneralPublicLicense,GPL)是什么玩意儿?为什么要将自由软件挂上GPL的『版权宣告』呢?这个版权宣告对于作者有何好处?首先Stallman对GPL一直是强调Free的这个Free的意思是这样的:"Freesoftware"isamatterofliberty,notpriceTounderstandtheconcept,youshouldthinkof"freespeech",not"freebeer""Freesoftware"referstotheusersfreedomtorun,copy,distribute,study,change,andimprovethesoftware大意是说FreeSoftware(自由软件)是一种自由的权力并非是『价格!』举例来说你可以拥有自由呼吸的权力、你拥有自由发表言论的权力但是这并不代表您可以到处喝『免费的啤酒!(freebeer)』也就是说自由软件的重点并不是指『免费』的而是指具有『自由度,freedom』的软件史托曼进一步说明了自由度的意义是:使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。这无疑是个好消息!因为如此一来你所拿到的软件可能原先只能在Unix上面跑但是经过原始码的修改之后你将可以拿他在Linux或者是Windows上面来跑!总之一个软件挂上了GPL版权宣告之后他自然就成了自由软件!这个软件就具有底下的特色:•取得软件与原始码:您可以根据自己的需求来执行这个自由软件•复制:您可以自由的复制该软件•修改:您可以将取得的原始码进行程序修改工作使之适合您的工作•再发行:您可以将您修改过的程序再度的自由发行而不会与原先的撰写者冲突•回馈:您应该将您修改过的程序代码回馈于社群!但请特别留意您所修改的任何一个自由软件都不应该也不能这样:•修改授权:您不能将一个GPL授权的自由软件在您修改后而将他取消GPL授权~•单纯贩卖:您不能单纯的贩卖自由软件。也就是说既然GPL是站在互助互利的角度上去开发的您自然不应该将大家的成果占为己有而取消GPL授权的!对吧!因此您当然不可以将一个GPL软件的授权取消即使您已经对该软件进行大幅度的修改!那么自由软件也不能贩卖吗?当然不是!还记得上一个小节里面我们提到史托曼藉由贩卖Emacs取得一些经费让自己生活不至于匮乏吧??是的!自由软件是可以贩卖的不过不可仅贩卖该软件应同时搭配售后服务与相关手册~这些可就需要工本费了呢!很多人还是有疑问目前不是有很多Linux开发商吗?为何他们可以贩卖Linux这个GPL授权的软件?原因很简单因为他们大多都是贩卖『售后服务!』所以他们所使用的自由软件都可以在他们的网站上面下载!(当然每个厂商他们自己开发的工具软件就不是GPL的授权软件了!)但是您可以购买他们的Linux光盘如果您购买了光盘他们会提供相关的手册说明文件同时也会提供您数年不等的咨询、售后服务、软件升级与其它协力工作等等的附加价值!所以说目前自由软件工作者他们所赖以维生的几乎都是在『服务』这个领域呢!毕竟自由软件并不是每个人都会撰写有人有需要您的自由软件时他就会请求您的协助此时您就可以透过服务来收费了!这样来说自由软件确实还是具有商业空间的喔!Tips:很多人对于GPL授权一直很疑惑对于GPL的商业行为更是无法接受!关于这一点鸟哥在这里还是要再次的申明GPL是可以从事商业行为的!而很多的作者也是藉由这些商业行为来得以取得生活所需更进一步去发展更优秀的自由软件!千万不要听到『商业』就排斥!这对于发展优良软件的朋友来说是不礼貌的!上面提到的大多是与使用者有关的项目那么GPL对于自由软件的作者有何优点呢?大致的优点有这些:•软件安全性较佳•软件执行效能较佳•软件除错时间较短•贡献的原始码远永都存在。这是因为既然是OpenSource的自由软件那么您的程序代码将会有很多人帮您查阅如此一来程序的漏洞与程序的优化将会进展的很快!所以在安全性与效能上面自由软件一点都不输给商业软件喔!此外因为GPL授权当中修改者并不能修改授权因此您如果曾经贡献过程序代码嘿嘿!您将名留青史呢!不错吧!^^不过就鸟哥的观点来看GPL对于程序开发者的优点是相当多的不过对于不熟悉程序的一般人来说GPL的优点其实不太容易看出来~首先虽然他是随手可得的自由软件不过您也必须要会使用基本的编译器才行吧!(呵呵!这也是您为何要买这本书察看鸟哥的网站的原因吧!^^)这对于一般人来说并不容易!当然啦如果每个人都跟Stallman一样神那商业公司就不用存在啦!嘿嘿!对于不懂程序的人来说商业公司是一个很快速的解决之道啊!而对于我们广大的读者群来说认识了学习了Linux与自由软件的相关技巧后对于未来真的是有很不错的帮助喔!Torvalds的Linux发展我们前面一节当中提到了Linux是由Torvalds这个芬兰人所发明的。那么为何托瓦兹可以发明Linux呢?凭空想象而来的?还是有什么渊源?这里我们就来谈一谈啰!与Minix之间LinusTorvalds(托瓦兹,年出生)的外祖父是赫尔辛基大学的统计学家他的外祖父为了让自己的小孙子能够学点东西所以从小就将托瓦兹带到身边来管理一些微计算机。在这个时期托瓦兹接触了汇编语言(AssemblyLanguage)那是一种直接与芯片对谈的程序语言也就是所谓的低级语言。必须要很了解硬件的架构否则很难以汇编语言撰写程序的。在年间托瓦兹顺利的进入了赫尔辛基大学并选读了计算机科学系。在就学期间因为学业的需要与自己的兴趣托瓦兹接触到了Unix这个操作系统。当时整个赫尔辛基只有一部最新的Unix系统同时仅提供个终端机(terminal)。还记得我们上一节刚刚提过的早期的计算机仅有主机具有运算功能terminal仅负责提供InputOutput而已。在这种情况下实在很难满足托瓦兹的需求因为光是等待使用Unix的时间就很耗时~为此他不禁想到:『我何不自己搞一部Unix来玩?』不过就如同Stallman当初的GNU计划一样要写核心程序谈何容易~不过幸运之神并未背离托瓦兹因为不久之后他就知道有一个类似Unix的系统并且与Unix完全兼容还可以在Intel机器上面跑的操作系统那就是我们上一节提过的谭宁邦教授为了教育需要而撰写的Minix系统!他在购买了最新的Intel的个人计算机后就立即安装了Minix这个操作系统。另外由于Minix这个操作系统是有附上原始码的~所以托瓦兹也经由这个原始码学习到了很多的核心程序设计的设计概念喔!对硬件的多任务测试事实上托瓦兹对于个人计算机的CPU其实并不满意因为他之前碰的计算机都是工作站型的计算机这类计算机的CPU特色就是可以进行『多任务处理』的能力。什么是多任务呢?理论上一个CPU在一个时间内仅能进行一项工作那如果有两个工作同时出现到系统中呢?举例来说您可以在现今的计算机中同时开启两个以上的办公软件例如电子电子表格与文字处理软件。这个同时开启的动作代表着这两个工作同时要交给CPU来处理~啊!CPU一个时间点内仅能处理一个工作那怎么办?没关系这个时候如果具有多任务的CPU就会自动在不同的工作间切换~亦即我先跑的电子电子表格再转到文书处理器跑再回去电子电子表格一直到将两个工作结束为止(不一定同时结束!如果某个工作先结束了CPU就会全速去跑剩下的那个工作了!)Tips:为什么有的时候我同时开两个档案(假设为A,B档案)所花的时间要比开完A再去开B档案的时间还要多?现在是否稍微可以理解?因为如果同时开启的话CPU就必须要在两个工作之间不停的切换~而切换的动作还是会耗去一些CPU时间的!所以啰同时启用两个以上的工作在一个CPU上要比一个一个的执行还要耗时一点。这也是为何现在CPU开发商要整合两个CPU于一个芯片中!也是为何在运作情况比较复杂的服务器上需要比较多的CPU负责的原因!早期Intel的x架构计算机不是很受重视的原因就是因为x的芯片对于多任务的处理不佳CPU在不同的工作之间切换不是很顺畅。但是这个情况在计算机推出后有很大的改善。托瓦兹在得知新的芯片的相关信息后他认为以价格性能比的观点来看Intel的便宜而且性能上也就稍微可以将就将就^^。所以他就贷款去买了一部Intel的来玩。前面提到托瓦兹是玩汇编语言的汇编语言对于硬件有很密切的关系为了彻底发挥的效能于是托瓦兹花了不少时间在测试机器上!他的重要测试就是在测试的多功效能上。首先他写了两个小程序一个程序会持续输出A另一个会持续输出B他将两个程序同时执行结果他看到屏幕上很顺利的一直出现ABABABAB他知道他成功了!^^Tips:要达到多任务(multitasking)的环境除了硬件(主要是CPU)需要能够具有多任务的特性外操作系统也需要支持这个功能喔!一些不具有多任务特性的操作系统想要同时执行两个程序是不可能的。除非先被执行的程序执行完毕否则后面的程序不可能被主动执行。至于多任务的操作系统中每个程序被执行时都会有一个最大CPU使用时间若该工作运作的时间超过这个CPU使用时间时该工作就会先被丢出CPU的运作中而再度的进入核心工作排程中等待下一次的CPU运作。这有点像在开记者会啦主持人(CPU)会问『谁要发问』?一群记者(工作程序)就会举手(看谁的工作重要!)先举手的自然就被允许发问问完之后主持人又会问一次谁要发问当然所有人(包括刚刚那个记者)都可以举手!如此一次一次的将工作给他完成啊!^^多任务的环境对于复杂的工作情况帮助很大喔!初次释出Linux探索完了的硬件相关信息并且也安装了类似Unix的Minix操作系统同时还取得Minix的原始码接下来托瓦兹干嘛去了??因为Minix的发展控制在谭宁邦教授手上他希望Minix能以教育的立场去发展所以对于Minix的开发并不是十分的热中但是一堆人对于Minix的功能需求又很强烈例如一些接口与周边的驱动程序与新的协议等等。在无法快速的得到解决后托瓦兹就想那我干脆自己写一个更适合我自己用的Minix好了!于是他就开始进行核心程序的撰写了。对于托瓦兹来说GNU真的是一个不可多得的好家伙~因为他用来撰写属于自己小核心的工具就是GNU的bash操作接口与gcc编译器等等自由软件。他以GNU的软件针对并参考Minix的设计理念(注意仅是程序设计理念并没有使用Minix的原始码)来写这个小核心。喝!没想到竟然可以写出这个小玩意而这个小玩意竟然可以在上面顺利的跑起来~还可以读取Minix的档案系统。真是太好了!不过还不够他希望这个程序可以获得大家的一些修改建议于是他便将这个核心放置在网络上提供大家下载同时在BBS上面贴了一则消息:HelloeverybodyoutthereusingminixI'md

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/

VIP

意见
反馈

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利