Linux学习 :Unix的历史

 

引用:《鸟哥的Linux私房菜基础篇第三版》

 

早在Linux出现之前的二十年(大约在 1970 年代),就有一个相当稳定而成熟的操作系统存在了!那就是Linux的老大哥“Unix”是也!怎么这么说呢?他们这两个家伙有什么关系呀?众所周知的,Linux的核心是由Linus Torvalds在1991年的时候开发出来的,并且丢到网络上提供大家下载,后来大家觉得这个小东西(Linux Kernel)相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这个小东西这么棒呢?又为什么大家都可以免费的下载这个东西呢?

1969年以前:一个伟大的梦想--Bell,MIT与GE的“Multics”系统

早期的计算机并不像现在的个人计算机一样普及,他可不是一般人碰的到的,除非是军事或者是高科技用途,或者是学术单位的学术研究,否则真的很难接触到。非但如此,早期的计算机架构还很难使用,除了指令周期并不快之外,操作接口也很困扰的!因为那个时候的输入设备只有卡片阅读机、输出设备只有打印机,用户也无法与操作系统交互(批次型操作系统)。

在那个时候,写程序是件很可怜的事情,因为程序设计者,必须要将程序相关的信息在读卡纸上面打孔,然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,如果程序有个小地方写错,光是重新打卡就很惨,加上主机少,用户众多,光是等待就耗去很多的时间了。

在那之后,由于硬件与操作系统的改良,使得后来可以使用键盘来进行信息的输入。不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?大家还是得要等待啊!好在1960年代初期麻省理工学院(MIT)发展了所谓的“兼容分时系统(Compatible Time-Sharing System,CTSS)”,它可以让大型主机通过提供数个终端机(terminal)以联机进入主机,来利用主机的资源进行运算工作。架构有点像这样:

这个兼容分时系统可以就是近代操作系统的始祖呢!它可以让多个使用者在某一段时间内分别使用CPU 的资源,感觉上你会觉得大家是同时使用该主机的资源!事实上,是CPU 在每个使用者的工作之间进行切换,在当时,这可是个划时代的技术。

如此一来,无论主机在哪里,只要在终端前面进行输入输出的作业,就可利用主机提供的功能了。不过,需要注意的是,此时终端机只具有输入输出的功能,本身完全不具任何运算或软件安装的能力。而且,比较先进的主机大概也只能提供30个不到的终端机而已。

为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE,或称为通用电器)共同发起了Multics的计划,Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机联机使用的目标。不过,到了1969年前后,计划进度落后,资金也短缺,所以该计划虽然继续在研究,但贝尔实验室还是退出了该计划的研究工作。

Tips:最终Multics还是有成功的发展出他们的系统,完整的历史说明可以参考:http://www.multicians.org/网站内容。Multics计划虽然后来没有受到很大的重视,但是他培养出来的人才是相当优秀的!

1969年:Ken Thompson的小型file server system

在认为Multics计划不可能成功之后,贝尔实验室就退出该计划。不过,原本参与Multics计划的人员中,已经从该计划当中获得一些点子,Ken Thompson就是其中一位!

Thompson因为自己的需要,希望开发一个小小的操作系统以满足自己的需求。在开发时,有一部DEC(Digital Equipment Corporation)公司推出的PDP-7刚好没人使用,于是他就准备针对这部主机进行操作系统核心程序的编写。本来Thompson应该是没时间的(有家有小孩的宿命?),无巧不巧的是,在1969年八月份左右,刚好Thompson的妻儿去了美西探亲,于是他有了额外的一个月的时间好好的待在家将一些构想实现出来!

经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序,以及一个小小的文件系统。那个系统就是Unix的原型!当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。(当时未有Unix的名称)

Thompson的这个文件系统有两个重要的概念,分别是:

所有的程序或系统设备都是文件

不管构建编辑器还是附属档案,所写的程序只有一个目的,就是要有效的完成目标。

这些概念在后来对于Linux的发展有相当重要的影响。

1973年:Unix 的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心

由于Thompson写的那个操作系统实在是太好用了,所以在贝尔实验室内部广泛流传,并且数度经过改版。但是因为Unics本来是以汇编语言写成的,而汇编语言具有专一性,加上当时的计算机机器架构都不太相同,所以每次要安装到不同的机器都要重新编写汇编语言,真不方便。

后来Thompson与Ritchie合作想将Unics改用高级程序语言来编写。当时现成的高级程序语言有B语言。但是由B语言编译出来的核心效率不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心,最后正名与发行出Unix的正式版本。

由于贝尔实验室是隶属于美国电信大厂AT&T公司的,只是AT&T当时忙于其他商业活动,对于Unix并不支持也不排斥。此外,Unix在这个时期的发展者都是贝尔实验室的工程师,这些工程师对于程序当然相当有研究,所以,Unix在此时当然是不容易被一般人所接受的。不过对于学术界的学者来说,这个Unix真是学者们进行研究的福音,因为程序代码可改写并且可作为学术研究之用。

需要特别强调的是,由于Unix 是以高级的C语言写的,相对于汇编语言需要与硬件有密切的配合,高级的C 语言与硬件的相关性就没有这么大了。所以,这个改变也使得Unix很容易被移植到不同的机器上面。

1977年:重要的Unix分支--BSD的诞生

虽然贝尔实验室属于AT&T,但是AT&T此时对于Unix 是采取较开放的态度,此外,Unix是以高级的C语言写成的,理论上是具有可移植性的。亦即只要取得Unix的源代码,并且针对大型主机的特性加以修订源代码(Source Code),就可能将Unix移植到另一部不同的主机上头了。所以在1973年以后,Unix便得以与学术界合作开发。最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。

柏克莱大学的Bill Joy在取得了Unix 的核心源代码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution(BSD)。这个BSD是Unix很重要的一个分支,Bill Joy也是SUN公司的创始人。Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。(后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)

1979年:重要的System V架构与版权宣告

由于Unix的高度可移植性与强大的效率,加上当时并没有版权的纠纷,所以让很多商业公司开始了Unix操作系统的发展,例如AT&T自家的System V、IBM的AIX以及HP 与DEC等公司,都有推出自家的主机搭配自己的Unix操作系统。

但是,如同我们前面提到的,操作系统的核心(Kernel)必须要跟硬件配合,以提供及控制硬件的资源进行良好的工作。而在早期每一家生产计算机硬件的公司还没有所谓的“协议”的概念,所以每一个计算机公司生产的硬件自然就不同。因此他们必须要为自己的计算机硬件开发合适的Unix 系统。例如在学术机构相当有名的SUN、Cray与HP就是这种情况。他们开发出来的Unix操作系统以及内含的相关软件并没有办法在其他的硬件架构下工作的。另外,由于没有厂商针对个人计算机设计Unix系统,因此,在早期并没有支持个人计算机的Unix操作系统的出现。

每一家公司自己出的Unix虽然在架构上面大同小异,但是且真的仅能支持自身的硬件,所以,早先的Unix只能与服务器(Server)或是大型工作站(Workstation)划上等号。但到了1979年时,AT&T推出System V第七版Unix 后,这个情况就有点改善了。这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说System V可以在个人计算机上面安装于运作了。

不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是想将Unix的版权收回去。因此,AT&T在1979年发行的第七版Unix中,特别提到了“不可对学生提供源代码”的严格限制。同时,也造成Unix业界之间的紧张气氛,并且也引爆了很多的商业纠纷。

Tips:目前被称为纯种的Unix指的就是System V以及BSD这两套。

1984年之一:x86架构的Minix操作系统的诞生

关于1979年的版权声明中,影响最大的当然就是学校教Unix核心源代码相关学科的教授了,想一想,如果没有核心源代码,那么如何教导学生认识Unix 呢?这问题对于Andrew Tenenbaum(谭宁邦)教授来说,实在是很伤脑筋。不过,学校的课程还是得继续啊!那怎么办?

既然1979年的Unix第七版可以在Intel的x86架构上面进行移植,那么是否意味着可以将Unix改写并移植到x86上面呢?在这个想法上,谭宁邦教授于是自己动手写了Minix这个Unix Like的核心程序。在编写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心源代码,并且强调他的Minix必须能够与Unix兼容才行,谭宁邦在1984年开始编写核心程序,到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合。

Tips:之所以称为Minix的原因,是因为它是个Mini的Unix系统。

这个Minix版本比较有趣的地方是,它并不是完全免费的,无法在网络上提供下载,必须要通过磁盘/磁带购买才行。虽然真的很便宜,不过,毕竟因为没有在网络上流传,所以Minix的传递速度并没有很快速。此外,购买时,随磁盘还会附上Minix的源代码,这意味着使用者可以学习Minix的核心程序设计概念。

此外,Minix操作系统的开发者仅有谭宁邦教授,因为学者很忙,加上谭宁邦教授始终认为Minix主要用在教育用途上面,所以对于Minix是点到为止。没错,Minix是很受欢迎,不过,使用者的要求/需求的声音可能就比较没有办法上升到比较高的地方了。

1984年之二:GNU计划与FSF基金会的成立

Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,对于现今的自由软件风潮,真有不可磨灭的地位,目前我们所使用的很多自由软件,几乎均直接或间接受益于GNU这个计划。那么史托曼是何许人?为何他会发起这个GNU计划呢?

一个分享的环境:

Richard Mathew Stallman(生于1953年,网络上自称的ID为RMS)从小就很聪明,他在1971年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab),这个时候的黑客专指计算机能力很强的人,而非破坏计算机的怪客(cracker)。

当时的黑客圈对于软件的着眼点几乎都是在“分享”,所以并没有专利方面的困扰,这个特色对于史托曼的影响很大,不过,后来由于管理阶层的问题,导致实验室的优秀黑客离开该实验室,并且进入其他商业公司继续发展优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件。后来,他发现到,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力。

使用Unix开发阶段:

 

1983年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统自由程序的编写。而且他进一步发现到,过去他所使用的Lisp操作系统,是麻省理工学院的专利软件,是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了Lisp这个系统。后来,他接触到Unix这个系统,并且发现Unix在理论与实际上,都可以在不同的机器间进行移植。虽然Unix 依旧是专利软件,但至少Unix 架构上还是比较开放的,于是他开始转而使用Unix 系统。

因为Lisp与Unix是不同的系统,所以,他原本已经编写完毕的软件是无法在Unix上面运行的。为此,他就开始将软件移植到Unix上面。并且,为了让软件可以在不同的平台上运行,因此,史托曼将他发展的软件均编写成可以移植的版本,也就是他都会将程序的源代码公布出来。

GNU计划的推进:

1984年,史托曼开始GNU计划,这个计划的目的是:建立一个自由、开放的Unix操作系统(Free Unix)。但是建立一个操作系统谈何容易啊!而且在当时的GNU是仅有自己一个人单打独斗的,这实在太麻烦,但又不想放弃这个计划,那可怎么办呢?

聪明的史托曼干脆反其道而行“既然操作系统太复杂,我就先写可以在Unix上面运行的小程序,这总可以吧”在这个想法上,史托曼开始参考Unix上面现有的软件,并依据这些软件的作用开发出功能相同的软件,且开发期间史托曼绝不看其他软件的源代码,以避免吃上官司。后来一堆人知道免费的GNU软件,并且实际使用后发现与原有的专利软件也差不了太多,于是便转而使用GNU软件,于是GNU计划逐渐打开知名度。

虽然GNU计划渐渐打开知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件,都得要进行编译成为二进制文件(binary program)后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗?因此他便开始编写C语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc),这个点相当的重要,这是因为C语言编译程序版本众多,但都是专利软件,如果他写的C编译程序够棒,效率高,那么将会大大的让GNU 计划出现在众人眼前。

但开始编写GCC时并不顺利,为此,他先转而将他原先就已经写过的Emacs编辑器写成可以在Unix上面跑的软件,并公布源代码。Emsca是一种程序编辑器,它可以在用户编写程序的过程中就进行程序语法的检验,此一功能可以减少程序设计师出错的时间,因为Emacs太优秀了,因此,很多人便直接向他购买。

此时因特网还未流行,所以,史托曼便借着Emacs以磁带(tape)出售,赚了一点钱,进而开始全力编写其他软件。并且成立自由软件基金会(FSF,Free Software Foundation),请更多工程师编写软件。终于还是完成了GCC,这比Emacs还更有帮助。此外,他还编写了更多可以被调用的C函数库(GNU C Library),以及可以被用来操作操作系统的基本接口BASH Shell,这些都在1990年左右完成了。

GNU的通用公共许可证:

到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件,所以他与律师草拟了有名的通用公共许可证(General Public License,GPL),并且称呼为copyleft(相对于专利软件的copyright)。GNU开发了几个重要的软件,如:

Emacs

GNU C(GCC

GNU C Library(glibc

Bash shell

造成后来很多的软件开发者可以基于这些基础的工具来进行程序开发,进一步壮大了自由软件团体。这是很重要的,不过,对于GNU的最初构想“建立一个自由的Unix操作系统”来说,有这些优秀的程序是仍无法满足,因为,当下并没有“自由的Unix核心”存在,所以这些软件仍只能在那些有专利的Unix平台上工作,一直到Linux的出现。

1988年:图形接口XFree86计划

由于图形用户接口(Graphical User Interface,GUI)的需求日益加重,在1984年由MIT与其他第三方首次发表了X Window System,并且更在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是X Window System+Free +X86的整合名称,而这个XFree86的GUI界面更是在Linux的核心1.0版于1994年发行时,整合到Linux操作系统当中。

1991年:芬兰大学生Linus Torvalds的一则简讯

到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息,宣称他以Bash,gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上面运行,让很多人很感兴趣,从此开始了Linux不平凡的路程。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux是一个多任务、多用户的操作系统,它以其良好的特性和资源的免费性而得到了蓬勃的发展。  本书通过大量的图示和实例,深入浅出的介绍了Linux的基本原理和应用。主要包括Linux的基本概念和操作,Linux的树型结构,Linux的文本编辑,Linux的安装和启动,用户管理,Shell编程技术,进程管理,C编译器,系统扩充,维护与监视,Linux的图形界面,网络的基本概念与设置,Linux在网络资源共享和电子邮件方面的应用,以及DNS、FTP、Web和Proxy服务器等内容。  本书可作为Linux操作系统课程的教材,也可作为电脑爱好者,相关技术人员及参加Linux认证考试人士的参考书。 一、关于Linux Linux是一个正在蓬勃发展的极富生命力的操作系统。芬兰青Linus Torvalds和其杰作的传奇故事吸引了无数的电脑爱好者尝试去使用Linux,但他们中的大多数人却被Unix类操作系统传统的枯燥的字符界面、艰涩难懂的操作命令和数量庞大的基本概念以及基础知识所吓退。Linux在这几中迅速地发展,Turbo Linux宣布该公司已经开始盈利了,这说明了Linux正在逐渐大众化。在未来的几中,Linux在各行各业中的应用将遍地开花,能熟练操作Linux将是每一个系统管理员所需掌握的基本技能。 曾经有一种说法:能熟练操作Linux的人,必定是电脑业界的顶尖高手。本书正是为改变这一种看法而面世的,它主要面向那些对电脑系统有初步认识的初学者,即使读者从未接受过电脑方面的系统训练,甚至连微软的Windows都没有学过,也能从本书中获益。 二、本书特点 1)在介绍过程中,着重于概念的层次性和内容的衔接,使读者更容易进行学习。 2)为了能把深奥、复杂的概念和操作表达明白,本书使用了大量的插图和实际操作例子,使之通俗易懂。例如:在网络应用部分中的很多例子,都在中山大学服务器上运行,每天都在承受巨大的访问量。 3)配置了大量习题。 三、本书结构安排 本书共分19章,遵循由简到繁、由易到难的讲解方式来组织、安排内容。 第1章:Linux基础。本章首先对Unix进行了概述,然后介绍了Linux的技术特点、Linux的版本,以及Linux对中文的支持。 第2章:基本操作。本章主要介绍了Linux的一些基本操作。如:注册、注销、远程登录、更改时间、关闭系统等。 第3章:树型结构。本章主要介绍了Linux的文件结构、目录结构,同时还介绍了链接,并用大量的实例形象生动地说明了Linux下各种文件的操作。 第4章:文本编辑。本章主要介绍了Linux下的文本编辑器,这是使用Linux的一些基本技能。学好本章,有利于以后的学习。 第5章:Linux的安装和启动。本章主要介绍了Linux的安装和启动,其中涉及到一些原理以及其他Unix类操作系统上的原理。 第6章:用户管理。本章主要介绍了Linux下增加用户、删除用户、设置用户组的各种操作,这些操作是进入Linux系统的第一步。 第7章:Shell和Shell编程。本章主要介绍了Shell的基本概念、Shell脚本以及awk的相关知识。 第8章:进程管理。本章主要介绍了在Linux中的进程管理。其中包括了进程、进程数、进程的优先级、定时执行等。 第9章:C编译器—— gcc。本章主要介绍了Linux下面的编译器—— gcc的基本用法以及Make与Makefile的一些基本知识。 第10章:系统扩充。本章主要介绍了在Linux中系统的扩充,包括软件的安装和内核的升级等内容。 第11章:系统维护与监视。本章主要介绍了Linux中的文件系统维护与监视。其中包括交换空间、/proc的信息以及各种日志文件和进程记账等。 第12章:图形界面。本章主要介绍了X Window以及它的配置,并且介绍了在KDE环境下汉化的基本思想,用实例来讲解了Linux汉化的基础知识。 第13章:网络的基本概念与设置。本章主要介绍了网络的基本概念,并在讲解这个概念的同时,讲解Linux中的网络配置。在此同时讲解了Linux的基本的网络命令,这对于理解Linux的网络上面的基本运用有着很大的作用。 第14章:网络资源共享。本章主要介绍了NFS文件系统、NFS文件系统的架设、Samba的资源共享、打印机网络共享等内容。 第15章:电子邮件。本章主要介绍电子邮件系统、Linux下的电子邮件系统,以及建立Linux下的邮件服务器。 第16章:DNS服务器。本章主要介绍DNS工作的原理、Linux下的域名服务器系统以及BIND的安装与配置等内容。详细叙述了主DNS服务器和辅助DNS服务器的配置以及DNS的安全。 第17章:FTP服务器。本章主要介绍了wu-ftp服务器的安装、配置和使用,Proftpd服务器的安装、配置和使用。 第18章:Web服务器。本章主要介绍了Apache的安装和配置。从Apache的最基本配置到它的高级运用,在本章中都有详细的叙述。 第19章:Proxy服务器。本章主要介绍在Linux上比较常用的两个proxy服务器软件的配置。 本书最后还附有参考答案,以供读者对照课后习题进行练习。 四、本书适用对象 本书适合用于大专院校、电脑培训班等作为LinuxUNIX操作系统课程的教材,也可作为电脑爱好者、相关技术人员或准备参加Linux认证的读者的参考书。 本书写作过程中受到广东省自然科学基金和中山大学青启动基金的帮助,在此特表感谢! Linux发展至今,经历了无数人的努力,是千万人智慧的结晶。最新的Linux发布版,完全安装需要占用1G以上的空间,要完全掌握这样一个庞大的系统,并不是一件容易的事情,这对于作者本身也毫不例外。读者在学习本书的过程中如遇到疑难问题或觉得不妥之处,可到相关网站的论坛进行探讨,网址:http://www.cnbook.net。 尽管作者写这本书时具有良好初衷而且竭尽全力,但由于水平有限和时间仓促,疏漏之处在所难免,敬请读者批评指正和原谅。 编 者 200212月 第1章 Linux基础 1 1.1 Unix概述 1 1.1.1 Unix历史 1 1.1.2 Unix的特点 3 1.1.3 Unix的现状和未来 5 1.2 Linux基础知识 5 1.2.1 Linux历史 6 1.2.2 Linux的技术特点 6 1.2.3 Linux的版本 7 1.2.4 Linux对中文的支持 8 小结 8 习题一 8 一、思考题 8 二、选择题 9 三、上机操作 9 第2章 基本操作 10 2.1 进入Linux系统 10 2.1.1 开机与系统选择 10 2.1.2 注册 10 2.1.3 控制和终端操作 11 2.1.4 进入图形界面 11 2.1.5 用Telnet方式远程连入 12 2.2 一些基本命令 13 2.2.1 修改密码 13 2.2.2 查询、修改日期与时间 14 2.2.3 观看月历 15 2.2.4 清屏 16 2.2.5 获取注册信息 16 2.2.6 与其他用户作简单通讯 17 2.2.7 观看主机配置情况 18 2.2.8 寻找命令使用方法 18 2.3 退出Linux 19 2.3.1 注销 19 2.3.2 关闭系统 19 小结 20 习题二 21 一、思考题 21 二、选择题 21 三、上机操作 21 第3章 树型结构 23 3.1 文件 23 3.1.1 Linux的文件 23 3.1.2 文件操作相关命令 24 3.2 目录和路径 27 3.2.1 树型结构基础知识 27 3.2.2 路径 30 3.2.3 与树型结构相关的操作 32 3.2.4 通配符与多文件操作 37 3.3 链接 41 3.3.1 硬链接 41 3.3.2 符号链接 42 3.4 文件的属性 43 3.4.1 显示文件的属性 43 3.4.2 权限字与权限操作 46 3.5 设备文件 48 3.6 磁盘的操作 51 3.7 备份 60 小结 62 习题三 62 一、思考题 62 二、选择题 63 三、上机操作 64 第4章 文本编辑 65 4.1 行编辑器ed 65 4.1.1 启动ed 65 4.1.2 输入和修改 65 4.1.3 查找与替换 67 4.1.4 保存与退出 67 4.2 全屏幕编辑器vi 67 4.2.1 进入vi及vi状态 67 4.2.2 光标移动 68 4.2.3 删除与恢复 69 4.2.4 替换 69 4.2.5 保存与退出 70 4.2.6 进入插入状态 70 4.2.7 寻找指定字符或字符串 72 4.2.8 块操作 75 4.3 功能强大的Emacs 76 4.3.1 Emacs是什么 76 4.3.2 Emacs的操作 77 4.4 文本的基本操作命令 87 4.4.1 more与less 87 4.4.2 pr 88 4.4.3 tail与head 89 4.4.4 spell 90 4.4.5 diff与cmp 90 4.4.6 wc 91 4.4.7 find与grep 92 小结 94 习题四 94 一、思考题 94 二、选择题 95 三、上机操作 95 第5章 Linux的安装和启动 96 5.1 安装的基本知识 96 5.1.1 硬件要求 96 5.1.2 硬盘分区 96 5.1.3 Linux的起动与多系统并存 96 5.1.4 安装前的准备 97 5.2 安装的过程 97 5.3 Loadlin方式的引导 105 5.4 安装后Linux系统的构成 107 5.5 引导过程 109 5.5.1 lilo 109 5.5.2 内核 111 5.5.3 init与inittab 112 5.5.4 Shell 114 小结 114 习题五 115 一、思考题 115 二、选择题 115 三、上机操作 115 第6章 用户管理 116 6.1 用户账号的设置 116 6.1.1 增加用户 116 6.1.2 /et/passwd文件与/etc/shadow文件 117 6.1.3 删除用户 119 6.1.4 观看和修改用户资料 120 6.2 用户组的设置 122 6.2.1 /etc/group文件 122 6.2.2 用户组的操作 123 小结 124 习题六 124 一、思考题 124 二、选择题 124 三、上机操作 125 第7章 Shell和Shell编程 126 7.1 什么是Shell 126 7.1.1 Shell的类型 126 7.1.2 为用户指定Shell 127 7.1.3 Shell的环境 128 7.2 Shell脚本 130 7.2.1 Shell脚本的编写 130 7.2.2 控制流 132 7.2.3 here文本 135 7.2.4 几个特别的Shell脚本 135 7.3 awk 141 7.3.1 调用awk 141 7.3.2 awk脚本 142 7.3.3 模式和动作 142 7.3.4 域和记录 142 7.3.5 awk内置变量 143 7.3.6 awk的字符函数 144 7.3.7 数组 144 7.3.8 控制流和循环 145 小结 145 习题七 145 一、思考题 145 二、选择题 149 三、上机操作 149 第8章 进程管理 150 8.1 进程管理的应用 150 8.2 定时执行 155 小结 156 习题八 157 一、思考题 157 二、选择题 157 三、上机操作 157 第9章 C编译器—— gcc 158 9.1 什么是gcc 158 9.1.1 gcc简介 158 9.1.2 gcc的用法 158 9.2 make与Makefile 159 小结 160 习题九 161 一、思考题 161 二、选择题 161 三、上机操作 161 第10章 系统扩充 166 10.1 软件安装 166 10.1.1 传统安装 166 10.1.2 rpm 168 10.2 内核升级 171 10.2.1 获得内核源码 171 10.2.2 配置内核 171 10.2.3 编辑与安装新内核 182 小结 185 习题十 185 一、思考题 185 二、选择题 185 三、上机操作 186 第11章 系统维护与监视 187 11.1 文件系统维护 187 11.2 交换空间 187 11.3 系统监视 189 小结 194 习题十一 195 一、思考题 195 二、选择题 195 三、上机操作 195 第12章 图形界面 196 12.1 X Window 196 12.1.1 什么是X 196 12.1.2 X的结构 196 12.2 Linux下的X——XFrea86 197 12.2.1 配置 197 12.2.2 Xfea86图形界面的功能与操作 199 12.2.3 中文化问题 202 小结 206 习题十二 206 一、思考题 206 二、选择题 206 三、上机操作 206 第13章 网络的基本概念与设置 207 13.1 什么是网络 207 13.1.1 网络的定义 207 13.1.2 网络的分类与结构 207 13.1.3 网络的硬件与软件 208 13.1.4 网络的应用 209 13.2 Internet与TCP/IP协议 210 13.2.1 Internet的历史与现状 210 13.2.2 TCP/IP基础知识 212 13.3 Linux的基本网络配置 213 13.3.1 安装与驱动网卡 213 13.3.2 设定IP地址及TCP/IP 基本参数 213 13.3.3 检测连通性 215 13.3.4 使用MODEM拨号上网 216 13.4 TCP/IP实用程序 218 13.4.1 ping 218 13.4.2 Telnet 219 13.4.3 FTP 220 13.4.4 traceroute 223 13.4.5 ifconfig 224 小结 225 习题十三 225 一、思考题 225 二、选择题 225 三、上机操作 225 第14章 网络资源共享 226 14.1 Linux/Unix系统之间 文件共享——NFS 226 14.1.1 NFS的概念 226 14.1.2 NFS的安装和启动 226 14.1.3 架设NFS文件系统 227 14.2 Linux/Windows系统之间文件 共享——Samba 229 14.2.1 什么是Samba 229 14.2.2 安装与启动Samba 229 14.2.3 Samba的配置 230 14.2.4 在Linux上访问Windows 的共享资源 233 14.3 打印机网络共享 233 14.3.1 建立打印服务器 233 14.3.2 使用远程打印机 234 小结 234 习题十四 235 一、思考题 235 二、选择题 235 三、上机操作 235 第15章 电子邮件 236 15.1 电子邮件系统 236 15.1.1 电子邮件的历史 236 15.1.2 电子邮件的体系结构和服务 236 15.2 Linux下的电子邮件系统 237 15.2.1 Linux下的邮件服务器 237 15.2.2 Linux下的邮件用户代理 242 15.3 mail命令 242 15.4 建立Linux下的邮件服务器 247 15.4.1 sendmail的复杂性 247 15.4.2 sendmail的组成结构和原理 247 15.4.3 编译和配置sendmail 251 15.4.4 技巧和提示 253 小结 256 习题十五 256 一、思考题 256 二、选择题 256 三、上机操作 257 第16章 DNS服务器 258 16.1 DNS的工作原理 258 16.1.1 域名 258 16.1.2 因特网的域名系统 258 16.1.3 DNS的消息格式 260 16.1.4 对象内容与资源记录内容 261 16.2 Linux下的域名服务器系统 261 16.3 BIND的安装与配置 262 16.3.1 BIND的编译与安装 262 16.3.2 Linux下与域名系统相关的 几个配置文件 263 16.3.3 Caching Only域名服务器 的配置 264 16.3.4 主域名服务器的配置 269 16.3.5 从域名服务器的配置 272 16.4 设置chroot的DNS 273 小结 275 习题十六 276 一、思考题 276 二、选择题 276 三、上机操作 276 第17章 FTP服务器 277 17.1 wu-ftp 277 17.1.1 wu-ftp的安装 277 17.1.2 wu-ftp的配置 278 17.1.3 wu-ftpd的启动和测试 285 17.1.4 实用命令 286 17.2 Proftpd 286 17.2.1 Proftpd的安装 286 17.2.2 Proftpd的配置 286 17.2.3 一个实例 289 17.2.4 proftpd的启动和测试 292 小结 292 习题十七 292 一、思考题 292 二、选择题 292 三、上机操作 292 第18章 Web服务器 293 18.1 Apache的安装 293 18.1.1 编辑设置 293 18.1.2 编译和安装 294 18.2 Apache的配置 294 18.2.1 全局设置 295 18.2.2 主服务器设置 297 18.3 虚拟Web服务器 308 18.3.1 虚拟主机的类型与运行方式 308 18.3.2 基于IP的虚拟主机 308 18.3.3 基于域名的虚拟主机 310 小结 312 习题十八 312 一、思考题 312 二、选择题 312 三、上机操作 312 第19章 Proxy服务器 313 19.1 Proxy的概念 313 19.1.1 什么是Proxy 313 19.1.2 Proxy的应用 313 19.2 利用Apache建立Proxy 313 19.2.1 配置前的准备工作 314 19.2.2 建立Proxy服务器 314 19.2.3 建立Cache服务器 315 19.2.4 常用的mod_proxy模块的指令 315 19.3 Squid 316 19.3.1 安装Squid 316 19.3.2 配置Squid 317 19.3.3 更多的配置参数 319 19.3.4 启动和关闭Squid 327 19.3.5 日志文件 327 小结 328 习题十九 328 一、思考题 328 二、选择题 328 三、上机操作 329 参考答案 330

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值