第一讲:linux的简介

学习Linux,我们就要了解Linux,了解它成长的历史。从时间上来看,Linux是一个年轻的操作系统。Linux的诞生,发展,强大,离不开很多外界因素。下面我们来了解Linux前世今生,开启我们的Linux学习之门。
 
1.1.1UNIX的诞生
 UNIX操作系统,是美国AT&T美国电话电报公司)公司于1971年在PDP-11上运行的操作系统。一个事物的产生总有它的原因。上世纪六十年代时,美国电话及电报公司(American Telephone and Telegraph Inc.AT&T)、通用电器公司(General ElectricsG.E.)及麻省理工学院(Massachusetts Institute of TechnologyMIT)计划合作开发一个多用途(General-Purpose)、分时(Time-Sharing)及多用户(Multi-User)的操作系统,也就是这个MULTICS,该操作系统被设计运行在GE-645大型主机上。不过,这个项目由于太过复杂,整个目标过于庞大,糅合了太多的特性,进展缓慢,几年下来没有任何成果,而且性能都很低。于是到了19692月,贝尔实验室(Bell Labs)决定退出这个项目
当时贝尔实验室中的Ken Thompson他为MULTICS这个操作系统写了个叫“Space Travel(星际旅行)的游戏,在MULTICS上经过实际运行后,他发现游戏速度很慢而且耗费昂贵 。退出这个项目以后。他为了让这个游戏跑起来,所以他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统。这就是后来的UNIX。想不到吧,UNIX竟是程序员为了玩游戏写出来的!
但当时的电脑还是稀缺资源,他们只能一台被人遗弃的Digital PDP-7的迷你计算机实现他们的想法,这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型。1973年的时候,Ken Thompson Dennis Ritchie感到用汇编语言做的可移植性太差,Dennis Ritchie改良了B语言,这就是现在稳居开发语言前三名,每个计算机专业学生的必修课—C语言。从此,UNIX操作系统脱离纯汇编语言,并打开操作系统可移植性的大门,也为UNIX日后的蓬勃发展打下了坚实的基础。
1.1.2 UNIX的发展
1974UNIX的公布引起了学术界的兴趣并对其源码研究。其中Unix第五版免费提供给各大学作为教学之用。各大学和企业开始通过UNIX源码对UNIX进行了各种各样的功能的增强与扩展。UNIX开始广泛流行。
1978年,柏克利大学(UC Berkeley)在第六版的基础上改进而形成Unix的一个分支:BSD Berkeley Software Distribution)系列。与此同时,AT&T成立USGUnix Support Group),将 Unix变成商业化的产品。从此,UNIX便分为BSD UNIX AT&T UNIX ,形成System IV4.x BSD两大主流。
1979年发布的UNIX第七版发布。
1982年,AT&T基于版本7开发了UNIX System 的第一个版本,这是一个仅供出售的商业版本。另一方面,加州大学柏克利分校则继续开发BSD UNIX,这里不得不提BSDUNIX环境下的伟大贡献TCP/IP协议族。
1983年,美国司法部在针对AT&T的第二起反托拉斯诉讼中获胜,拆分了贝尔系统。这次判决将AT&T1958年的禁止将UNIX产品化的和解协议中解脱了出来。AT&T马上忙不迭地将UNIX System V商业化。
随着UNIX的发展,UNIX已经变的越来越强大,而且出现了很多类UNIX操作系统。然而功能强大的UNIX对想了解其的内部工作原理的初学者并不适合,而由Andrew S. Tanenbaum开发的Minix对于这样的初学者则是一个很好的选择。
1.1.3MINIX操作系统
Minix是一种类UNIX操作系统,Minix的名字来源于Mini UNIX,是一个迷你版本的类UNIX操作系统.它是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授开发的。
当时开发的目的主要用于帮助学生更好的理解操作系统原理。而现在可以看来,他使Linux的作者Linus Torvalds受益颇深。
1.1.4Linux的历史与发展
虽然Minix系统的源代码可以免费得到,但是限制源代码的修改与再发布。更重要的是Minix16位的设计与当时日渐便宜及受欢迎的、个人电脑的Intel 386架构兼容的并不好。
这些原因促使芬兰郝尔辛基大学的学生Linus Torvalds萌生了依靠手边的Minix移植到X86个人电脑的想法,并且完善Minix不足的功能。他曾说过:“如果那时候有可用的GNU或者386BSD内核的话,他很可能就不会去写他自己的内核了。”
"Hello everybody out there using minix——I'm doing a (free) operating system"
 1991年的八月,网络上出现了一篇以此为开篇话语的帖子——这是一个芬兰的名为Linus Torvalds的大学生为自己开始写作一个类似Minix,可运行在386上的操作系统寻找志同道合的合作伙伴。
1991105日,Linus Torvalds在新闻组comp.os.minix发布了大约有一万行代码的Linuxv0.01版本。
1993年,Linux 0.99的代码有大约有十万行,用户大约有10万左右。
19943月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。至此, Linux的代码开发进入良性循环。很多系统管理员开始在自己的操作系统环境中尝试linux,并将修改的代码提交给核心小组。由于拥有了丰富的操作系统 平台,因而 Linux的代码中也充实了对不同硬件系统的支持,大大的提高了跨平台移植性。
19966月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。
2004年,发布2.2.*版本。
2005年,发布2.4.*版本,同年发布了2.6.*版本。
纵观Linux的历史,UNIXMinix促成其诞生,GNUInternet怎是其发展的重要支柱。
1.2  GNUGPL
1983Richard Stallman(理查德.斯托曼)公开发起了GNU计划(GNUGNU`s Not UNIX 的递归缩写)。它旨在创建一套完全自由开放的操作系统。Linux虽不是GNU计划的一部分,但事实上两者的结合可以说是大势所趋。GNU大量优秀的应用软件使的Linux成为一个真正意义上完整可用的操作系统,而Linux的出现也填补了GNU在内核方面的缺失。
1985年,Richard Stallman又创立了自由软件基金会Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。并附带发布了GNU通用公共许可证(GNU General Public LicenseGPL)。
1990年,GNU计划已经开发出很多优秀的软件,比如大名鼎鼎的编辑器Emacs(这个我们将在本书第十章讲到),C语言编辑器GCCGDB调试器等等。但是最核心的组件操作系统内核依然进行艰难。就在这时,Linus Torvalds编写的Linux操作系统内核在GPL条款下发布
1992年,Linux与GNU软件结合,一套完全自由的操作系统在两位大神以及当时众多的开源软件开发者的努力下诞生。该操作系统常被叫做“GNU/Linux”。
1.3  Linux的组成
Linux一般可以分为四个部分:计算机硬件,Linux内核层,Shell层,文件系统层,应用程序层。
                                      应用程序

                    文件系统
 


 
                                    
 
 

              SHELL
           Linux内核
计算机硬件
 

 
 
 
 
 
 
 
 
 

 
(1) Linux内核:通过图可以看出Linux内核是连接计算机硬件与软件的桥梁,内核是系统的关所在。不仅在硬件方面控制硬件设备与硬件接口,提供内存管理,处理输入输出等,而且在软件方面进行进程调度,进程间通信,虚拟文件系统等。
(2) SHELL层:SHELL是系统的用户界面,它提供一种接口,可以让用户与内核进行交互。我们将在第三篇详细讲解SHELL以及SHELL编程。
(3) 文件系统层:文件存储在磁盘等存储设备的组织方式称为文件系统。Linux支持多种文件系统,例如常见文件系统:ext2ext3windows中常用的文件系统FATNTFS;光盘文件系统ISO-9600
(4) 应用程序:提供用户使用的一系列文本编辑器、X-Window、办公套件、Internet工具、数据库等程序。
这一节,我们将了解Linux的基本结构构,使我们对Linux的学习有一个大概的框架,为我
们以后更加深入的系统的学习Linux打下基础。
1.4  为什么选择Linux
既然我们选择学习Linux就一定有原因,您只是做为兴趣也好,还是工作或学习的需要也好,都是我们学习Linux的动力。Linux作为一个能够快速发展并强大起来的操作系统相比其他操作系统一定有它的过人之处。现在,就让我们来看看到是什么原因能够让Linux在计算机的历史长河中拥有巨大的影响力。
Linux的特点:
1开源
这是Linux得以快速发展的重要原因,当Linus Torvalds将自己写的源代码在网上公开时,吸引了一大批程序员(或者说一个庞大的真正意义上的黑客群)。他们用自己的智慧使Linux慢慢变的成熟。从发展初期就与GNU项目的密切合作使Linux,任何人,任何组织只要遵守GPL就可以自由的使用,修改,发布Linux源代码。并且它是免费的,任何人都可以免费拥有一个Linux系统。开源,免费,以及高模块化使它很适合嵌入式领域,例如机顶盒,移动电话,汽车等。
2硬件支持广泛
Linux支持广泛的硬件平台,能够在几乎全部的主流处理器上运行。由于源代码开放,内核中已经有了大部分厂商硬件的驱动,并且Linux的共享性能够很快地给那些常用的硬件提供驱动程序。这些使Linux具有广泛的硬件支持。
3高效性与稳定性
据调查世界TOP500超级电脑中有超过70%使用的是Linux,而且我们知道Linux除了应用在嵌入式领域,更被人们所熟知的是它在服务器方面的突出表现。这些与Linux的稳定性密不可分。Linux内核优秀的进程管理,存储管理机制以及它多任务,多用户,多平台的特性,决定了它的高效性。
4优秀的网络支持
作为一个类UNIX操作系统,Linux对网络的支持也是相当令人满意,Linux从诞生是就与Internet有密不可分的联系,支持各种标准的Internet协议。丰富的网络软件,使Linux在网络方面的应用更加广泛,例如最流行的HTTP服务器软件Apache,还有丰富的网络安全软件,网络管理软件等。
5多种文件系统支持
文件系统是整个操作系统中重要的组成部分,是操作系统正常运行的基本条件。Linux系统核心可以支持多种文件系统类型,例如:JFS ReiserFSextext2ext3ISO9660XFSMinxMSDOSUMSDOSVFATNTFSHPFSNFSSMBSysVPROC等。
1.5  常见的Linux发行版
了解了Linux的历史,组成,特点或许你已经迫不及待想尝试Linux,下面就来介绍几个常见的Linux发行版供大家选择。
1Ubuntu
Ubuntu是基于Debian的一个发行版,由Canonical有限公司赞助。使用自己的软件包库,与Debian不同的是,Ubuntu旨在开发出更加友好的桌面,成为很受桌面用户欢迎的一个Linux发行版,拥有华丽的界面,适合初学者。
2Red Hat Linux
这是广为人知的Linux发行版,由Red Hat公司发行。2004年,Red Hat公司正式停止对Red Hat 9.0版本的支持。Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在服务器版(Red Hat Enterprise Linux版)的开发上。
3Fedora
Fedora基于Red Hat Linux Red Hat 9.0以后,不再进行桌面版的开发,而是把桌面版项目与开源社区Fedora Project合作,于是就有了Fedora 这个 Linux 发行版。Fedora 可以说是Red Hat 桌面版本的延续,只是与开源社区合作。也可以说是Red Hat公司新技术的测试平台,将成熟的技术加入其服务器版中。
4Gentoo
相比其他发行版,Gentoo赋予用户更大的选择空间。它将应用程序的源代码提供给用户,使用户可以重新编译自己系统的每一部分,包括最基本的系统库和编译器。在编译过程中,参数和变量可以由用户自己指定。最大的意义是它同样建立起一个开发者社区。但是安装不是很简便,所以不适合初学者使用。
5SUSE Linux
SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品。这也是SUSE Linux的最初目的。此后,NovellSUSE提出收购。YaST2是其一款优秀的系统管理工具。
6Debian
Debian计划(Debian Project)组织维护。使用者很多的Ubuntu便是基于Debian GNU/Linux的一个桌面版项目,很多服务器发行版同样基于Debian GNU/Linux改写。拥有丰富的应用软件以及强大的社区支持。基于Debian社区则是GNUUNIX精神的忠实拥护者。
7CentOS
Linux发行版之一自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成,在一定程度上可以替代Red Hat商业发行版Red Hat Enterprise Linux,不同的是CnetOS是免费的。
源代码开放的Linux不仅仅有以上几个发行版,这里仅仅是介绍几个常见的,大众的。你还可找到一些针对性很强的或者很个性的Linux发行版。最重要的是找到一个适合自己的版本,Free—永远是Linux不变的宗旨!如果你觉得使用发行版还不过瘾,还不够“Linuxer”,你甚至可以尝试LFSLinux from Scratch),就是直接下载源码包,从头再编译LINUX的安装方式。这样你会拥有一个真正的你自己的Linux。关于LFS,虽然是菜鸟变高手的捷径,但是笔者建议初学者了解就行了,当有一定的积累(至少要学会常用的命令,了解Linux基本组成)时再进行LFS,这样会学到的更多。LFS是一个耗时的工作,需要的是耐心,细心,最重要的是信心。
1.6  学习Linux的一点建议
笔者自己并不是Linux大牛,也不是什么专家教授,只能算是Linux爱好者。接触Linux的时间并不算长,我能理解初学者对Linux的心情,还没有忘记对于一些很基础的Linux的问题的疑惑所在。仅就我学习Linux的过程中的一些经验给大家说说。
1正确认识Linux
记得大学还都是使用windows的时候,有个同学装了一个Linux,当时的我们对能装Linux的兄弟可以用崇拜来形容。有的说:“Linux进系统就是命令行,真难!”,“Linux怎么上网呀?”“Linux能干啥?能聊QQ吗?”,“我听说Linux有图形界面,用什么浏览器?IE?”…….
没接触Linux的我们把Linux看成了一个脾气古怪的精神病,一个异类,但是Linux真是这样吗?
笔者不想拿Linux和其他操作系统比较,毕竟每个事物都有它存在的原因,每个操作系统都有它自己的优点。Linux不是那么古怪,相反,它很温顺。只要基本的部分(内核,文件系统等等总得有呀)装上,如果再有编译器,源码就在网上,免费下载,丰富的帮助文档,强大的技术社区支持,你想装什么就装什么,想怎么装就怎么装。
再说说Linux的图形环境。目前Linux系统两种主要的桌面系统环境是KDEGNOME。有兴趣的读者还可以去了解一下X协议,X-WINDOWS
2图形界面与文字界面
现在很多人,包括计算机专业的对命令行界面都有一种畏惧感。刚开始使用文字界面确实没有图形界面易用,友好。可是当你用熟了文字界面是会发现文字界面的高效,快速,稳定是图形界面所不能比拟的。学习文字界面虽然开始会不习惯或者进度慢,但是在你熟悉之后,在SHELL界面熟练的敲下命令的时候就能体会到文字界面的优越性。当碰到问题是试着尽量用文字界面去解决,你会学到比用鼠标点图形界面更多的东西,更能抓住问题的本质所在。所以,强烈建议本书的读者在装好Linux后努力学习命令,去亲自实践命令。
3 注重动手
在学习的过程中,一定要自己去实践,只看明白书只是初步的学习。每个命令去敲一遍,看看是不是像讲的那样。了解更多的命令选项时,试着去读懂man在线手册。尝试做一些变动,去观察结果,分析结果出现的原因。在动手的过程中去发现问题,解决问题。
4问题的解决
由于作者水平有限,或者各个开发版之间的区别,不能面面俱到,例如:如果装的是Ret Hat,在系统的安装是就必须建立root用户(超级用户,这个会在以后详细讲解),并且建立密码,如果装的是Ubuntu桌面版,在安装时只是要求建立一个管理员密码,并没有root用户,而在使用过程中有的情况是必须使用超级用户的,就是这些细小的问题可能使我们走很多弯路,让我们的学习进度缓慢。所以在碰到问题的时候最好的方法就是利用网络的力量,Linux技术社区对于学习Linux有很大的帮助。丰富的帮助文档和在线手册也是我们学习的利器。