第一讲: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 ThompsonDennis Ritchie 感到用汇编语言做的可移植性太差, Dennis Ritchie 改良了 B 语言,这就是现在稳居开发语言前三名,每个计算机专业学生的必修课 —C 语言。从此, UNIX 操作系统脱离纯汇编语言,并打开操作系统可移植性的大门 ,也为 UNIX 日后的蓬勃发展打下了坚实的基础。
1.1.2 UNIX的发展
1974UNIX 的公布引起了学术界的兴趣并对其源码研究。其中 Unix 第五版免费提供给各大学作为教学之用。各大学和企业开始通过 UNIX 源码对 UNIX 进行了各种各样的功能的增强与扩展。 UNIX 开始广泛流行。
1978 年,柏克利大学( UC Berkeley )在第六版的基础上改进而形成 Unix 的一个分支: BSDBerkeley Software Distribution )系列。与此同时, AT&T 成立 USGUnix Support Group ),将 Unix 变成商业化的产品。从此, UNIX 便分为 BSDUNIXAT&TUNIX ,形成 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 系统核心可以支持多种文件系统类型,例如: JFSReiserFSextext2ext3ISO9660XFSMinxMSDOSUMSDOSVFATNTFSHPFSNFSSMBSysVPROC 等。
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 LinuxRed Hat9.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有很大的帮助。丰富的帮助文档和在线手册也是我们学习的利器。