主题 : 《Linux 基础》教案    第一章 Linux基础知识
我为人人,人人为我
级别: 七朵秋菊

UID: 13542
精华: 0
发帖: 1211
威望: 47453 点
无痕币: 23241 WHB
贡献值: 0 点
在线时间: 437(时)
注册时间: 2008-02-19
最后登录: 2023-08-15

0 《Linux 基础》教案    第一章 Linux基础知识


《Linux 基础》教案
第一章 Linux基础知识





1.    课程知识点讲解:    2
1.1.    Unix起源和发展    2
1.2.    Linux的诞生    11
1.3.    GNU与GPL/LGPL    17
1.4.    Linux 与Windows 的基础比较    22
2.    本章总结  [10分钟]    23
3.    考核点    24
4.    测试题    24
5.    扩展部分:    24
6.    学员问题汇总:    32
7.    作业:    33

























授课教师:师资培训
课时:2小时


    本章主要的目的
    了解Unix的起源与地位
    掌握有关Linux的基本常识
    了解学习Linux的意义
    掌握Linux的版本知识
    了解开放源代码的许可协议及其开发模式
    了解Linux与Windows各自的特色

    本章重点
    掌握有关Linux的基本常识
    了解开放源代码的许可协议及其开发模式
    了解Linux与Windows各自的特色

    本章难点
    Unix的起源与地位
    学习Linux的意义
1.    课程知识点讲解:    
1.1.    Unix起源和发展
UNIX这个名字早已被众多用户所熟知。作为一个操作系统,它以其独特的魅力----即开放性、可移植性、和多用户多任务等特点,不仅赢得了广大用户的喜爱,同时也受到许多计算机厂商的青睐。

Unix操作系统的历史漫长而曲折,它的第一个版本是1969年由Ken Thompson在AT&T贝尔实验室实现的,运行在一台DEC  PDP-7计算机上。这个版本实现了一个文件系统、一个命令解释器(shell)和一些简单的文件工具。Ken和他的伙伴们使用GE系统来为PDP-7进行交叉编译,很快写好了汇编器,使系统有了自支持的能力。这个系统已基本成型,其文件系统与现在的文件系统相似,它使用i结点,有特殊文件类型支持目录和设备,而且可以同时支持两个用户。

K. Thompson(UC Berkeley, 从1966开始在BTL工作)
Dennis Ritchie(哈佛应用数学专业,1968年开始在BTL工作)






Dec PDP-7 图片


1970年,UNIX被移植到PDP-11/20上,这需要很大的工作量,因为整个系统全是用汇编语言编写的。

C语言的诞生给系统设计带来了新的契机,Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。从那以后,Unix系统开始了令人瞩目的发展。由于此时AT&T还没有把Unix作为它的正式商品,因此研究人员只是在实验室内部使用并完善它。正是由于Unix是被作为研究项目,其他科研机构和大学的计算机研究人员也希望能得到这个系统,以便进行自己的研究。AT&T以分发许可证的方法,对Unix仅仅收取很少的费用,大学和研究机构就能获得Unix的源代码以进行研究。Unix的源代码被散发到各个大学,一方面使得科研人员能够根据需要改进系统,或者将其移植到其他的硬件环境中去,另一方面培养了懂得Unix使用和编程的大量的学生,这使得Unix的普及更为广泛。

由于操作系统的开发相当困难,只有少数的计算机厂商,如IBM、Digital等大型公司,才拥有自己的操作系统,而其他众多生产计算机的硬件厂商则采用别人开发的操作系统。因为Unix不需要太多的花费,因此很多厂商就选择了Unix作为他们生产的计算机使用的操作系统。他们把Unix移植到自己的硬件环境下,而不必从头开发一个操作系统。

到了70年代中后期,在Unix发展到了版本6之后,AT&T认识到了Unix的价值,成立了Unix系统实验室(UnixSystemLab,USL)来继续发展Unix。因此AT&T一方面继续发展内部使用的Unix版本7,一方面由USL开发对外正式发行的Unix版本,同时AT&T也宣布对Unix产品拥有所有权。几乎在同时,加州大学伯克利分校计算机系统研究小组(CSRG)使用Unix对操作系统进行研究,因此他们的研究成果就反映在他们使用的Unix中。他们对Unix的改进相当多,增加了很多当时非常先进的特性,包括更好的内存管理,快速且健壮的文件系统等,大部分原有的源代码都被重新写过,以支持这些新特性。很多其他Unix使用者,包括其他大学和商业机构,都希望能得到CSRG改进的Unix系统。因此CSRG中的研究人员把他们的Unix组成一个完整的Unix系统──BSD Unix(Berkeley Software Distribution),向外发行。

BSD Unix在Unix 的发展历史中具有相当大的影响力,被很多商业厂家采用,成为很多商用 Unix的基础,而当时AT&T开发的Unix版本的影响就小得多。同时,很多研究项目也是以BSD Unix为研究系统,例如,美国国防部的项目 ARPANET,ARPANET今天发展成了Internet,而BSD Unix中最先实现了TCP/IP,使Internet和Unix紧密结合在一起。
AT&T的Unix系统实验室,同时也在不断改进他们的商用Unix版本,直到他们吸收了BSD Unix中已有的各种先进特性,并结合其本身的特点,推出了Unix System V版本之后,情况才有了改变。从此以后,UNIX就有了一个大的分支,分为Unix System V和BSD Unix,现代的Unix版本大部分都是这两个版本的衍生产品。

Unix在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础。而AT&T与其同时存在的Unix版本的影响就小得多。同时很多研究项目也是以BSDUnix为研究系统,例如美国国防部的项目─ARPANET,ARPANET今天发展成为了Internet,而BSD Unix中最先实现了TCP/IP,使Internet和Unix紧密结合在一起。而AT&T的Unix系统实验室,同时也在不断改进他们的商用Unix版本,直到他们吸收了BSDUnix中已有的各种先进特性,并结合其本身的特点,推出了Unix System V版本之后,情况才有了改变。从此以后,BSDUnix和UnixSystemV形成了当今Unix的两大主流,现代的Unix版本大部分都是这两个版本的衍生产品。
Unix的版本号表示方式比较复杂,各种不同的Unix版本有自己的版本标识方式,如最早AT&T开发的内部Unix使用简单的顺序号来标识版本,从V1到V7 BSD使用主版本加次版本的方法标识,如4.2BSD,4.3BSD,在原始版本的基础上还有派生版本,这些版本通常有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2。AT&T使用罗马数字来标识他们的对外发布的Unix版本,用Release来表示次版本。如System V Release 4(简写为SVR4)标识AT&T的Unix System V的第四次发布的版本。其他商业公司的Unix使用自己的版本标识,如Sun的Solaris 2.6,IBM的AIX 4.0等。虽然AT&T的Unix System V也是非常优秀的Unix版本,但是BSD Unix在Unix领域内的影响更大。AT&T的Unix系统实验室一直关注着BSD的发展,在1992年,Unix系统实验室指控BSDI── 一家发行商业BSD Unix的公司,违反了AT&T的许可权,发布自己的Unix版本,并进一步指控伯克利计算机系统研究组泄漏了Unix的商业机密(此时的4.3BSD中来自AT&TUnix的代码已经不足10%)。这个官司影响了很多Unix厂商,使他们不得不从BSDUnix转向Unix System V,以避免法律问题。以至于当今大多数商业Unix版本都是基于UnixSystemV的。这件有关Unix版权的案子直到1993年Unix系统实验室被AT&T卖给了Novell公司后才得以解决,Novell不打算陷入这样的法律纷争中,因此就采用了比较友好的做法。伯克利的CSRG被允许自由发布BSD,但是其中来自于AT&T的代码必须完全删除。因此CSRG就对他们最新的4.4BSD进行了修改,删除了那些来自于AT&T的源代码,发布了4.4 BSD Lite版本(该系统是不完整的,尤其对于英特尔386体系的计算机系统)。由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。
Novell的比较友善的做法还不止对BSD,他把自己的Unix改名为Unixware,而将Unix商标赠送给X/Open── 一个由众多Unix厂家组成的联盟,这样这个联盟内的所有成员均可使用Unix商标。从此之后,Unix不再是专有产品了。后来Novell由于自身的经营问题,又将Unixware卖给SCO公司。同时,由于BSD系统已经十分成熟,作为对操作系统进行研究的目标已经达到,伯克利计算机系统研究组(CSRG)在发布了4.4BSD-lite2之后就解散了,小组的科研人员有些进入了Unix商业公司,有些继续进行其他计算机领域的研究。此时,严格意义上的UnixSystem V和BSDUnix都不复存在了,存在的只是他们的各种后续版本。Unix的魅力不仅在于其功能的强大性,还在于其优秀的可扩展性,它提供了高级语言C和各种解释语言可用于编写程序。利用这些系统提供的工具,使用者就能按照自己的需要和兴趣对原有系统进行扩展,满足相当一部分计算机研究人员和使用者的需要,这样Unix就具备更强大的能力,完成各种复杂的任务。一旦用熟了Unix,体会到Unix的强大功能,使用者就会希望一直使用它,而不是仅具备有限能力的其他计算机系统。企业也希望能在其可以承受的条件下,利用Unix系统的强大处理能力。
由于Unix是多用户操作系统,作为系统的普通使用者只能使用系统提供的有限功能,而只有Unix系统管理员才能充分利用其的全部能力。因而拥有自己的Unix系统也是一个普通Unix使用者的愿望。但是在那些时候,能够满足这些愿望的计算机并不是每个人都能买得起的。昂贵的硬件,以及Unix逐渐商业化趋势,都使得拥有自己的Unix对大多数人只是美好的愿望,而使用Unix的地方主要为一些要求较高的科研和大中型公司机构。
到80年代,个人计算机的出现,使得硬件的价格能被人和小企业接受了,给拥有一个Unix系统的愿望带来了一线曙光。但是使用8086芯片的个人计算机能力比较差,在其上不能实现真正正常工作的多用户系统。进入九十年代之后,英特尔公司推出的80386芯片使个人计算机的计算能力大大提高,在个人计算机上构建一个可以真正使用的Unix也成为了可能。
事实上此时能运行在X86平台上的Unix相当有限,Mircosoft的Xienx是一种(后来发展成为SCO Unix),但不能指望能自由、免费使用这个商用系统。要移植Unix到PC平台上便需要Unix的源代码,而此时受AT&T的许可权的限制,Unix代码还不能被自由获得(但在BSD与AT&T的法律纠纷之后的4.4 BSD Lite不再受这个限制了,可以在BSD许可下自由使用)。很多计算机爱好者为了实现一个可以自由使用的操作系统,不断进行着努力。自由软件基金会的GNU计划的目的就是打算创建一个自由的、与Unix类似的操作系统,为了实现这个目的,GNU开发了很多非常有效的工具,包括编译器和很多系统命令,然而GNU计划中的操作系统内核 ──HURD,却进展缓慢,从而无法构建一个完整的操作系统。很快,就有计算机爱好者开始考虑在个人计算机平台上构建一个Unix内核。芬兰一位计算机研究生Linus Torvalds开始了这个工作,并取得了相当大的成功,他通过学习Minix──一个用于教学目的的简单Unix系统,在x86平台上构建了Linux内核,这个内核和GNU的系统工具结合起来,成为当前非常流行的GNU/Linux系统。

Unix的变体

1983年 Douglas Comer开发了 Xinu 演示了一个课堂上使用的操作系统
1986年 Andrew Tannenbaum开发了 Minix,是UNIX的一个克隆变体,是免费的,和Linux一样,Minix也不用UNIX源代码,因此没有侵犯AT&T公司的版权
在AT&T被法律认可之前,加里福尼亚大学的 Bill Joy 开始研究UNIX 和BSD,1982年创办了SUN公司。


Unix的版本号表示

不同的Unix版本其标识方式不同:
    AT&T开发的内部Unix使用顺序号标识版本
    BSD使用主版本加次版本的方法标识,在原始版本的基础上还有派生版本,这些版本通常有自己的名字
    AT&T使用罗马数字标识Unix版本,用Release来表示次版本
    其他商业公司的Unix使用各自的版本标识



两种主要的BSD介绍

NetBSD
    世界上最多的平台上运行的Unix操作系统。
    可以在多种平台上运行。
    黑客心目中具有挑战性的操作系统。
    黑客(hacker)即执著投入的探索系统奥秘并善于解决难题的高水平程序员。
    
FreeBSD
专注使用领域,很多操作系统上的程序都可以在它上面运行。
国内新浪、网易、263的主WEB服务器都是Free    BSD 系统

BSD 系列的操作系统总结如下图:

操作系统    特点
NetBSD    在世界上最多的平台上运行的 Unix 操作系统
FreeBSD    专注于实用领域
OpenBSD    专注于安全性和可靠性
Darwin(达尔文)    Apple 的 BSD 操作系统
DragonflyBSD
(蜻蜓)    最新诞生的 BSD 分支
1.2.    Linux的诞生
4.4BSD  Lite版本,很多人都对其进行了修改,其中在基于它进行重写的时候,除了继续坚持开放源代码的几个BSD Unix 分支外,为了教学和研究的需要,计算机科学家Andrew Tanenbaum以Verson 7为蓝本独立开发了基于Intel X86平台的Minix。Minix和Version 7在系统调用(编程接口)级兼容,但没有引用Unix的任何代码,因此不是“Unix”,不受AT&T许可协议的约束。Minix是公开源码的,允许用语科学教研目的。
Minix的诞生立刻引起了热烈的反响,Internet上很快出现了comp.os.minix新闻组,吸引了大量Minix用户前来交流讨论。出于教学的考虑,Minix的设计哲学是以简明为宗旨,系统的实现尽量采取简单、示意性的方法,在对设备的支持上,也仅包含了最基本的驱动程序。因此很多Minix用户为Minix不支持自己的设备而烦恼,并转向为Minix开发自己设备的驱动程序,另外有些用户在研究了系统之后开始修改系统的某些实现以提高效率。但当他们修改成功并尝试把工作成果提交给Minix作者时得到的答复却令他们沮丧:Tancenbaum并不反对爱好者们自己修改和增强Minix,但他开发Minix时为了教学科研目的,他为自己有义务保持Minix代码的“纯洁”,因此他拒绝将这些Minix“hacker”们的工作并入Minix中。
处于对Minix相对保守的做法的不满,芬兰赫尔辛基大学的年轻人Linus Benedict Torvalds对外发布了一套全新的操作系统。
说到Linus和他的操作系统,就不能不提到他的故乡芬兰。芬兰可以说是世界上国土面积按比例来说处在北极圈内最多的国家(约1/4的国土),在这个寒冷的国度里,遍布着大大小小约六万多个湖泊,芬兰也因此被人们称为“千湖之国”。在芬兰,一年中实际上只有三个季度,即春冬、夏季和秋冬。“严寒的冬天”长达8个月之久,而夏天却只有60天左右。芬兰的历史可以说是芬兰人民与自然、与寒冷做艰苦卓绝的斗争的一个神话。芬兰人的民族史诗《卡勒瓦拉》就记载了这个民族从远古时代起直到圣女玛丽亚生下英雄卡勒利亚王为止的所有神话。这部史诗的作者从丰富的民间传说、神话及歌谣中汲取了一切养料和精彩篇章,将它们收集、改编并润色整理,1835年初版时有35篇长诗,共12000多行;而1849年再版时,篇幅几乎增加了一倍,共50篇长诗,23000余行,最终成为芬兰人的“荷马史诗”。
140多年后,又有一位芬兰人创造了另一部伟大的“史诗”,他就是天才的程序员Linus.不过这一次他用的是计算机语言,他收集这部“史诗”创作素材的地方是覆盖全球的因特网。这使得他的创作从一开始便具有了国际性,使得他的这部“史诗”成了一部国际性的作品。这部“史诗”的问世,很有可能在20世纪以及21世纪成为芬兰人对于世界的最巨大的贡献。这部“史诗”的创作是从芬兰首都赫尔辛基开始的。芬兰首都赫尔辛基是一座三面环海、风景秀丽、大小湖泊星罗棋布的城市;它还是举世闻名的大学城和国际性的政治、文化及会议中心,这里曾举行过多次西方国家的首脑会议。在距市中心约10分钟脚程的地方,有一条以卡勒瓦拉命名的大街,街道两旁,19世纪的旧式住宅和现代化的建筑相映成趣。卡勒瓦拉大街上,有一座大学生寄宿公寓,我们这部史诗的缔造者Linus Torvalds就住在这座公寓里。现在看来,Linux并非深思熟虑的惊人之作,而是一个逐渐扩展的过程。它综合了许多次的试验、各种各样的概念和一小段一小段的程序,在不知不觉中逐渐凝聚成了一个有机的整体。这个过程与史诗《卡勒瓦拉》的成书过程极为相似。它最初的生成动机应当追溯到1990年的秋天。那时的Linus正在赫尔辛基大学学习Unix课程,所用的教材是Andrew Tanenbaum的《操作系统:设计与实施》。因为在学校上机需要长时间排队等待,于是“一气之下,我干脆自己掏钱买了一台PC机”,Linus回忆说。
Linus在自己的PC机上,利用Tanenbaum教授自行设计的微型Unix操作系统Minix为开发平台,开发了属于他自己的第一个程序。“这个程序包括两个进程,都是向屏幕上写字母,然后用一个定时器来切换这两个进程。”他回忆说,“一个进程写A,另一个进程写B,所以我就在屏幕上看到了AAAA,BBBB,如此循环重复的输出结果。”
Linus说刚开始的时候他根本没有想到要编写一个操作系统内核。1991年,他需要一个简单的终端仿真程序来存取Usenet新闻组的内容,于是他就在前两个草草编写的进程的基础上又写了一个程序。当然,他把那些个A和B改成了别的东西。“一个进程是从键盘上阅读输入然后发送给调制解调器,另一个进程则是从调制解调器上阅读发送来的信息然后送到屏幕上供人阅读。”然而要实现这两个新的进程,他显然还需要一些别的东西,这就是驱动程序。他必须为不同的显示器、键盘和调制解调器编写驱动程序。1991年的夏季,也就是在他购买了第一台PC之后6个月,Linus觉得他还需要从网上下载某些文件,为此他必须读写某个磁盘。“于是我又不得不写一个磁盘驱动程序,然后是一个文件系统。而一旦当你有了任务切换器、文件系统和设备驱动程序之后,你当然就拥有了一个Unix,”或者至少是它的一个内核。Linux就以这样一种极其古怪但也极其自然的方式问世了。
这个羽毛未丰的操作系统很有可能马上夭折,所以Linus并没有在Minix新闻组中公布 。他只是在赫尔辛基技术大学的一台FTP服务器上发了一则消息,说用户可以下载Linux的公开版本。“Linux是我的笔名,但是我要是真用它来命名的话,我担心有人会认为我狂妄自大,而且不会去认真地对待它。所以我当时选了一个很糟糕的名字:Freax,”这个字是由free(自由)+freak(怪胎)+x构成的,“我知道这听起来令人恶心。”幸好,管理这台FTP服务器的Ari Lemmke根本不喜欢Freax这个名字,他最后还是选择了Linux。到1992年1月止,全世界大约只有100个左右的人在使用Linux,但正是他们为Linux做关键性的在线洗礼。他们所提供的所有初期的上载代码和评论后来证明对Linux的发展至关重要,尤为重要的是那些网上黑客们为了解决Linux的错误而编写的许多插入代码段。
Linus就是如此这般脚步蹒跚跌跌撞撞地创建了一个网上的“卡勒利亚王国”,并开始为他的“卡勒瓦拉”收集并组织各种有用的素材。网上的任何人在任何地方都可以得到Linux的基本文件,并可通过电子邮件发表评论或者提供修正代码,Usenet还专门为它开辟了一个论坛。于是,Linux就从最开始的一个人思想的产品变成了一副巨大的织锦,变成了由无数志同道合的黑客们发起的一场运动。
Linus向来不求名利,Linux的成功也没有为他带来财富,但他的成就已使其在电脑科技发展史上占有一席之地。Linus的才能吸引了二十多名精英跟随左右,并心甘情愿地离开他们的家和原来的办公室,随Linus来到硅谷,去开创他们眼里真正的事业。而Linux的转售商,像RedHat、Solaris、Caldera以及Workstation Solution等,在得知李纳斯要离开赫尔辛基去硅谷发展时,无不对Linux系统的前景翘首以盼。就像当年Marc Andreesen离开学校开发出Internet免费浏览器软件(即今天的NETSCAPE),又或像杨致远和David Filo创办雅虎一样,Linus离开象牙塔后也定会有所建树。
Linux虽有不少优势,但并非所向披靡。对长期依赖微软操作系统的人来说,Linux的使用概念仍很陌生;企业用户也不可能一夜间抛弃Windows。虽然电脑大厂纷纷表态支持Linux,但现有支援Linux的应用软件和工具仍比不上微软完备。但对于不远的将来,Linus会竭尽一切,使Linux在激烈竞争中继续领先。Linux受欢迎的现状已经超出了他当初的想象,而且还将继续被关注、被传播、被进行下去。
Linux可以在基于Intel386,486,Pentium,PentiumPro,PentiumMMX,PentiumII
型处理器以及Cyrix,AMD的兼容芯片(如6x86,K6等芯片)的个人计算机上运行,它可以将一台普通的个人电脑立刻变成一台功能强劲的UNIX工作站,在Linux上可以运行大多数UNIX程序:TEX,X Window系统,GNU的C/C++编译器。它让用户端坐家中就
可以享受UNIX的全部威力。如今有越来越多的商业公司采用Linux作为操作系统,例如科学工作者使用Linux来进行分布式计算,ISP使用Linux配置Intranet服务器,电话拨号服务器等网络服务器,CERN(西欧核子中心)采用Linux做物理数据处理,美国98年1月最卖座的影片《泰坦尼克号》的片中计算机动画的设计工作就是在Linux平台下进行的。更有趣的是去年InfoWorld把年度最佳技术支持奖颁给了Linux,给批评自由软件没有良好服务的人好好地上了一课。越来越多的商业软件公司宣布支持Linux。在国外的大学中很多教授用Linux来讲授操作系统原理和设计。当然对于大多数用户来说最重要的一点是,现在我们可以在自己家中的计算机上进行UNIX编程,享受阅读操作系统的全部源代码的乐趣了!

Linux版本号的命名规则
Linux的内核版本由3部分组成:
    主版本号
    次版本号
    末版本号
如下图:
  
版本号的第二位数字,可以确定Linux内核版本的类型
开发版本 :  第二位数字是奇数
稳定版本 :  第二位数字是偶数

Linux内核版本发展,如下图:

                  

















1.3.    GNU与GPL/LGPL
GNU通用公共许可证

GNU就是GNU's Not Unix的缩写,GNU的创始人Stallman认为UNIX 虽然不是最好的操作系统,但是至少不会太差,而他自信有能力把UNIX不足的地方加以改进,使它成为一个优良的操作系统, 就是名为GNU的一个同UNIX兼容的操作系统,并且开发这个系统的目的就是为了让所有计算机用户都可以自由地获得这个系统。任何人都可以免费地获得这个系统的源代码,并且可以相互自由拷贝。因而在使用GNU软件的时候我们可以理直气壮地说我们使用的是正版软件。当然GNU也是有自己的版权声明(即GPL,见附录A)的,就是它有名的Copyleft(相对于版权的英文Copyright),就是用户获得GNU软件后可以自由使用和修改,但是用户在散布GNU软件时,必须让下一个用户有获得源代码的权利并且必须告知他这一点。这一条看似古怪的规定是为了防止有些别有用心的人或公司将GNU软件稍加修改就去申请版权,说成是自己的产品。其目的就是要让GNU永远是免费和公开的。
GNU是谁发起的?GNU是由自由软件基金会(Free Software Foundation,FSF)
的董事长Richard M.Stallman(RMS)于1984年发起的,如今已经有十几年的历史了。

Stallman本来是在美国麻省理工学院的人工智能实验室从事研究工作的研究员,同时也是世界上可数的几个顶尖程序员之一,他的最著名的作品也是GNU的第一个软件就是GNU Emacs,UNIX平台上的一个编辑器。这个软件推出后受到广大UNIX用户的热烈欢迎,由于它同时提供源代码,大家都热心地替它排除错误,增加功能,它的功能越来越强大,终于成为UNIX平台上最好的编辑器,上至CRAY超级计算机,下至最普遍的PC机,从DOS到Windows,从VMS到UNIX都可以使用这个Emacs。受到这个软件成功的鼓励,Stallman成立了自由软件基金会,以推广GNU计划。 基金会成立之后,主要靠一些厂家的捐献和出售GNU程序的使用手册,以及拷贝GNU软件的电脑磁带和光盘来维持,不过许多硬件厂家开始基金会提供高性能的工作站,这其中包括HP和SONY,AT&T这样的
国际性大公司。

GNU目前已经推出的软件主要由Emacs──功能强大的编辑环境,GCC──性能优异的多平台的C,C++,Fortran编译器和其他40多种软件。其中GCC的成功为GNU带来了前所未有的影响。GCC是一种可以在11种硬件平台上编译出可执行程序的超级编译器,而且其执行效率更是惊人,与一般的编译器相比平均效率要高20%-30%。这使得很多商业公司也采用GCC来开发软件,其中包括像HP公司这样的专业大公司。而现在回到苹
果公司的前NeXT公司总裁斯蒂夫•乔布斯也对Stallman尊敬有加,因为NeXT公司的软件都是用GCC开发的,在PC游戏中最好的3D射击游戏quake(由ID Software公司开发)也是用GCC的DOS移植版本djgpp编写的。GCC是C,C++,Objective C(由NeXT公司贡献)三者合一的编译器,它的编译原理同大多数编译器不一样,它先有一个前端处理程序将C,C++,Ovjective C的语句转换成为一个类似于Lisp的内部语言--RTL,再由一个后端处理程序将其优化后产生目的CPU可以执行的机器代码,因而对于每种新语言来说,只要写好一个新的前端处理程序就可以立刻将此语言移植到GCC已经支持的不同硬件平台上去,而且编译出来的就已经是经过优化的二进制代码。除了C系列以外,GCC还有Fortran77,ada9x,Pascal的前端处理程序。GCC的多平台的实现方法同JAVA的虚拟机技术不太一样,因而其运行速度远非JAVA能望其项背。
GNU开始的策略就是先开发UNIX已经有的程序(因为计划中GNU将会是一个与UNIX兼容的操作系统,而UNIX下的标准使用界面已经非常完善了,所以先依照这个标准开发应用程序,将来GNU自己的系统核心一出来,就立即可以使用所有先前开发的GNU应用程序),因此会先有emacs,GCC等工具软件开发出来。其中GCC更是GNU计划自立更生的一个重要步骤(不需要依靠商业软件来产生/编译整个GNU系统),如今这套程序开发工具已经很成熟了。下一步要做的就是开发GNU的核心--Hurd了,只要Hurd一开发出来,GNU就是一套能够自我开机,真正自给自足,完整的自由操作系统。Hurd是基于Mach这个微内核(micro kernel)上的操作系统核心。以后会使用尤他大学的Mach4(一个更为方便和快速的微内核),由于Hurd基于Mach,所以只要Mach移植到什么机器上,Hurd也立刻就是这种硬件平台的操作系统,就这一点而言,它是一种很前卫的操作系统。

但是Linux在短短的几年内崛起,也使用GNU的版权声明,大有取代Hurd之势。在网络上甚至有不少人认为Hurd应该停止开发,因为Linux系统已经十分成熟,GNU实际上可以使用Linux当作核心,也能构成一套完整的操作系统。甚至连自由软件基金会的技术人员也承认,要是Linux早几年出现,也许就不用发展Hurd了。但是Linux还是晚了一步,Hurd已经计划很久了,技术上有很多非常领先的地方,能够支持的硬件平台也比Linux多,不完成就太可惜了。1994年11月,Hurd的第一个雏形已经发表;1995年4月,也发表了第二次snapshot。Hurd目前的版本是0.2,是1997年6月发布的,已经可以独立安装与稳定运行了,GNU版本的Mach 目前的版本是1.1.3。与此同时,已经开发出一个基于微内核的Linux版本了,目前有一个可以在HP-PARISC机器上运行的Linux系统。实际上,自由软件基金会目前有一套以Linux为核心的GNU系统计划。这个计划就是自由软件基金会支持的DebianLinux。DebianLinux是GNU软件与公共软件(Public Domain Software)最彻底的结合,它是一套完全由GNU和公共软件配置起来的,而且具有商业操作系统水平的操作系统。




商业软件、共享软件、自由软件

当今流行的软件按照提供的方式和是否赢利可以分为:商业软件、共享软件、自由软件
商业软件:
开发者出售拷贝并提供软件技术服务,用户只有软件的使用权,不得进行非法拷贝、扩散和修改。
共享软件:
开发者提供软件拷贝授权,用户在使用一段时间后,必须开始交纳使用费
自由软件:
免费提供给用户,并且源代码公开可以自由修改。

2)GPL :GNU组织颁布的通用公共许可证
和软件是否免费无关,主要目标是保证软件对所有用户来说是自由的。
典型的GPL软件有:
Perl、TCP/IP、Apache、Netscape、C++编译器、防火墙、java内核支持。
它要求软件以源代码的形式发布,并规定,任何用户都能够以源代码的形式将软件复制或发布给别的用户。
它提醒每个用户,对于该软件不提供任何形式的担保。
如果用户的软件使用了受GPL保护的任何软件的一部分,那么,该软件就继承了GPL软件,并因此而成为GPL软件,也就是说必须随应用程序一起发布源代码。
GPL并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其它非自由软件。

3)LGPL:Libraray General Public License,程序库通用公共许可证
LGPL许可证允许使用者在自己的应用程序中使用GNU软件的程序库,即使不公开源代码,并且允许对这些程序库进行修改。


1.4.    Linux 与Windows 的基础比较
首先说明希望学Linux的朋友能够忘记Windows2000,最起码忘记Windows下的盘符、应用程序等基础的东西,其次要深刻明白Linux和Windows是2个不同的系统平台,可以去对比着学习,但不要直接拿Windows那套东西直接套用到Linux学习中。


一、桌面系统,就是系统安装好后的视窗系统,在Windows下叫Windows,在Linux下叫 X Windows,其实只是名字不一样而已这样虽然有助于Linux桌面的使用,但对于Linux系统的推广真是没什么好处)

很多初学Linux人的安装好Linux后,进入其 X Windows桌面,兴奋不已,以为大功告成,Linux自己会了,这种想法是很可怕的;如果我告诉你Linux的X Windows环境不是Linux 系统,它只是在Linux下面运行的应用程序(类似于在Windows下运行office2000),你是怎么想的?

Windows下的应用程序几乎是不能直接在Linux系统下安装和使用,学编程的应该明白,所以不要去找Windows工具盘安装你的RAR,QQ,realone等常用工具,你是装不上的。

你可以尝试去安装你硬件的最新驱动程序,安装Linux下的常用工具,做一些Linux简单的汉化,你就会理解经常在论坛里问这方面问题的朋友的困难了。

总之,学桌面,不是学Linux系统。

二、开放内核源代码

去买正版的Linux系统(不是很贵),会附带一张或者2张Linux源代码盘,Linux程序员从这里开始,是起点也是终点。

三、系统管理

也就是管理Linux系统环境:SHELL、图形、系统服务、硬件驱动等等。

系统管理Linux跟UNIX类似(是看了些Unix系统管理才这样说的),基本上都是通过命令----->配置文件----->脚本文件。


综合看Linux与Windows的优缺点
    在易用性方面,Windows仍然处于优势
    在灵活性方面,Linux则占据上风
    在对客户端软件和多媒体软件的支持方面,一直是 Windows 的强项
    在软件使用经费上,LINUX占有绝对的优势

2.    本章总结     [10分钟]
    Linux操作系统的源代码是公开和免费的,这一特点成为它迅速发展壮大的主要原因
    目前Linux操作系统已经赢得了国际上众多大型软件公司的支持
    要了解Linux操作系统的发展,首先要了解Unix操作系统的发展和开放源代码操作系统的发展
    GPL的主要目标是保证软件对所有的用户来说是自由的
    Linux的版本分为发行版本和内核版本,而内核版本又分为开发版本和稳定版本,开发版本和稳定版本是相互关联的
    Linux和Windows两个操作系统各有优缺点,两者也在很多情况下在互相借鉴,互相融合


3.    考核点
了解开放源代码的许可协议及其开发模式

掌握有关Linux的基本常识

4.    测试题
  Linux创始人是谁?
  Linux与windows的比较优势有哪些?

5.    扩展部分:
一、Unix作者Thompson小故事
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。
Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。

二、GNU条款
序言
大多数软件许可证决意剥夺你的共享和修改软件的自由。对比之下,GNU通用公共许可证力图保证你的共享和修改自由软件的自由——保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受 GNU库通用许可证的保护)。你也可以将它用到你的程序中。

当我们谈到自由软件(free software)时,我们指的是自由而不是价格。我们的 GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。

为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且将这些条款给他们看,使他们知道他们有这样的权利。

我们采取两项措施来保护你的权利。
(l)给软件以版权保护。
(2)给你提供许可证。
它给你复制,发布和修改这些软件的法律许可。同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引人的任何问题,不应损害原作者的声誉。最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。

有关复制,发布和修改的条款和条件
0.此许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPI条款的约束下发布。下面提到的“程序”指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约柬的衍生作品。也就是说包含程序或程序的一部分的作品。可以是原封不动的,或经过修改的和/或翻译成其他语言的(程序)。在下文中,翻译包含在修改的条款久每个许可证接受人(Iicense)用你来称呼。许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。是否普遍适用取决于程序具体用来做什么。

1.只要你在每一副本上明显和恰当地出版版权声明和不承担担保的声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起绘每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定费用。

2.你可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。

a)你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。
b)你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。
c)如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。

这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当你将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。因此,本条款的意图不在于索取权利;或剥夺全部由你写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。

此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。

3.你可以以目标码或可执行形式复制或发布程序(或符合第2款的基于程序的作品),只要你遵守前面的第 l,2款,并同时满足下列3条中的1条。
a)在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面第1,2款的要求。或者
b)在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的第1,2款的要求。或者
c)和目标码一起,附有你收到的发布源码的报价信息。(这一条款只适用于非商业性发布,而且你只收到程序的目标码或可执行代码和按 b)款要求提供的报价)。

作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的 script。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。

如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。

4.除非你明确按许可证提出的要求去做,否则你不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制,修改,转发许可证和发布程序是无效的。而且将自动结束许可证赋予你的权利。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。

5.你没有在许可证上签字,因而你没有必要一定接受这一许可证。然而,没有任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证,这些行为是法律禁止的。因此,如果你修改或发布程序(或任何基于程序的作品),你就表明你接受这一许可证以及它的所有有关复制,发布和修改程序或基于程序的作品的条款和条件。

6.每当你重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的许可证。你不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履行许可证条款的义务。

7.如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题)的结果,强加于你的条件(不管是法院判决,协议或其他)和许可证的条件有冲突。他们也不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及其他相关的义务时,作为结果,你可以根本不发布程序。例如,如果某一专利许可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。

如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分。并将条款作为整体用于其他环境。

本条款的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过通用公共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大量自由软件作出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统发布软件。许可证待有人不能强制这种选择。

本节的目的在于明确说明许可证其余部分可能产生的结果。

8.如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受到限止,将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的条款,将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情况下,许可证包含的限止条款和许可证正文一样有效。

9.自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差别。

每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及“任何更新的版本”。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。

10.如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同。写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导。这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态。以及从整体上促进软件的共享和重复利用。

没有担保

11.由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其他提供程序的人们“一样”不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由你来承担。如果程序出现缺陷,你承担所有必要的服务,修复和改正的费用。

12.除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者程序不能和其他程序协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。

最后的条款和条件

如何将这些条款用到你的新程序

如果你开发了新程序,而且你需要它得到公众最大限度的利用。

要做到这一点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和重新发布。为了做到这一点,绘程序附上下列声明。最安全的方式是将它放在每个源程序的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”行以及在什么地方能看到声明全文的说明。
6.    学员问题汇总:
  学员问题1:    
  学员问题2:    
7.    作业:
  习题1:课后题
  习题2:理解linux的开源精神
  习题3:了解什么是GNU
Total 0.051338(s) query 3, Time now is:05-17 12:41, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛