1.1 初识Linux
在开始学习Linux之前,有必要了解一些Linux的基础知识,比如Linux的前世今生、开源软件、Linux的特点及应用等。
1.1.1 Linux的前世今生
Linux通常被称为类UNIX操作系统,这是因为Linux和UNIX有着很深的渊源。关于UNIX的发展,读者可以自行了解。
1986年,Andrew Tanenbaum教授为了教学需要,开发了一种小型UNIX操作系统,并称之为Minix。1991年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,由于对课堂上使用的Minix不太满意,他决定开发自己的Minix,该系统一开始只具有操作系统内核的大致雏形,必须在Minix的机器上编译以后才能运行。Linus Torvalds最初为自己的这套系统取名为freax,并将源代码放在了芬兰的一个FTP站点上供大家下载。该站点的FTP管理员认为这个系统是Linus Torvalds的Minix,因此建立了一个名称为Linux(Linus'UNIX)的目录来存放这个新系统的源代码。这就是Linux名称的由来。
Linus Torvalds先于1991年10月5日发布了Linux的第1个版本——Linux 0.0.2。在这个版本中已经可以运行Bash(the GNU Bourne Again Shell——一种用户与操作系统内核通信的软件)和GCC(GNU Compiler Collection)编译器。同时,Linus Torvalds在网络上公布了Linux的核心程序的源代码,并决定以GPL(大众所有版权,也叫GNU通用公共许可证)的方式来发行传播,也就是说,这个软件允许任何人以任何形式进行修改和传播。
随着网络的日益发展,越来越多技术高超的程序员加入了Linux的开发与完善。在这个过程中,无数富有个性和开创性的程序员在没有计较任何报酬的前提下,完全自发地加入开发行列。一旦某个程序员完成了其中的部分程序,他就会立即将这个程序发布出来,并免费将它发送给任何一个需要这个程序的人,而其他的一些程序员在研究后会立即发布并发回这个程序的修正和改良程序。这个过程周而复始,因此Linux的改进速度是非常快的,同时,它的稳定性也是非常高的。这种集市型的开发模式促进了Linux的繁荣。可以这么说,Linux是一个热情、自由、开放的网络产物。
目前,Linux已经成为一个功能完善的主流网络操作系统。作为服务器的操作系统,Linux包括配置和管理各种网络所需的所有工具,并且得到了华为、Oracle、IBM、惠普、戴尔等大型企业的支持。因此,越来越多的企业开始采用Linux作为服务器的操作系统,也有很多用户采用Linux作为桌面操作系统。
1.1.2 开源软件简介
1.GNU和GPL
GNU是“GNU is Not UNIX”的递归缩写,是1985年由“自由软件运动”的精神领袖理查德·马修·斯托曼(Richard Matthew Stallman)提出的,目标是创造一套完全免费、开源,并且兼容UNIX的操作系统GNU。斯托曼是自由软件基金会(Free Software Foundation)的创立者,创建基金会的目标是为了完成GNU计划。
1989年,斯托曼与一些律师起草了被广泛使用的GNU通用公共许可证(GNU General Public License,GNU GPL),创造性地提出了“反版权”(copyleft,与版权的英文copyright相反)的概念。
GPL最重要的原则就是所有符合GPL协议的软件都可以被复制,可以被修改,可以被出售,但是源代码中所有的改进和修改必须向每个用户公开,所有用户都可以获得修改后的源代码。copyleft可以保证自由软件传播的延续性,也可以防止一些厂商利用自由软件,使其专有化。斯托曼认为,软件从业者不应依靠copyright(版权),迫使客户花费巨额资金购买软件,而应通过提供服务(如技术支持、训练)来获取应得的报酬。简而言之,自由软件时代的基本准则就是“资源免费,服务收费”。GNU的主要软件有GNU Emacs文字编辑器、GCC编译器、GDB调试器等。
2.GNU/Linux
GNU工程激励了许多年轻的“黑客”,他们编写了大量自由软件。斯托曼也受此鼓舞写出了Linux内核。Linux加入GNU计划,并遵循GPL协议是一件在Linux的发展历程上具有里程碑意义的事情。
在斯托曼的计划里,GNU操作系统的内核(Hurd),是自由软件基金会发展的重点,但是其发展一直尚未成熟。Linux的出现使得所有GNU软件可以在硬件上运行起来。Linux最初只是一个内核,但由于加入了GNU计划,在GPL协议下,允许商家对自由软件进一步开发,并且允许在Linux上开发商业软件。Linux的发展又获得了一次飞跃,出现了很多Linux发行版,如Slackware、Red Hat、SuSE、Ubuntu等10多种,而且还在增加。同时,一些公司开始在Linux上开发商业软件,或者把其他UNIX平台的软件移植到Linux中。另外,自由软件精神的引领,以及IBM、Intel、Oracle、Sysbase、Novell等ICT行业领袖宣布对Linux的支持或兼容,使Linux得到迅速普及,进入商业应用领域。
GNU和Linux很难厘清谁成就了谁,甚至斯托曼及许多人都认为整个操作系统应该称为GNU/Linux。整个操作系统包括GNU计划软件与Linux核心,使用GNU/Linux这个名称,可以更好地概括它的内容。
1.1.3 Linux的特点
随着Linux的发展,Linux已经由因为免费而被广泛传播变为因为具有良好的性能、完善的功能、超强的稳定性和可靠性而被广泛应用。
Linux包含Windows的所有功能,而且更加稳定,特别是在服务器的应用中。另外,Linux属于开源操作系统,程序的源代码一目了然,其可靠性和安全性有保障,更加适合政府、军事、金融等关键机构使用。我国自主的操作系统就是基于Linux内核开发的。
1.Linux可以进行内核定制
操作系统的核心控制着系统运行的各个方面,影响着一个系统的整体性能。Linux可以根据自己的需要对系统内核进行定制,从而构建一个新的符合服务器角色的内核,减少不必要的内存占用,提升系统的整体性能。Windows不允许用户进行内核定制,因此在整体性能上不如Linux。
2.Linux的系统角色灵活
由于Linux是以“内核+系统组件”的形式存在的,因此可以简便地转换系统的角色。Linux客户可以根据需要安装相关的系统组件,从而由组件决定系统的角色;而Windows客户一旦将系统安装完毕,除非购买新的操作系统进行安装,否则无法改变系统的角色。
3.Linux的GUI是可选组件
图形化操作系统虽然比较友好、简便,但它毕竟是以牺牲系统的整体性能来换取的。Windows的GUI(Graphical User Interface,图形用户界面)是不可选的,而且永远没有办法关闭。而Linux不仅有GUI,还有命令行操作界面,可根据用户的需要,将两者进行切换,做到在不同情况下使用不同界面,这对于提高服务器的性能和稳定性来讲尤为重要。
4.Linux拥有完善的功能和卓越的稳定性
Linux继承了UNIX卓越的稳定性表现,成为企业中重要服务器的首选系统。另外,由于Linux具有源代码开放的特点,得到了广大程序开发者和软件社区的广泛支持。因此,Linux平台下的应用软件也极其丰富。
1.1.4 Linux的应用
Linux正在得到越来越广泛的应用,尤其是在企业应用中逐渐显现出了巨大的优势,下面简单介绍Linux在企业中的应用。
1.使用Linux作为Internet网络服务器
Linux是一种类UNIX操作系统,因此很容易地成了UNIX操作系统的替代品,承担原有UNIX操作系统的角色,尤其是在充当Internet网络服务器方面显示出了强大的优势。Linux为各种网络服务器提供了一个稳定的运行平台,并配合不同的网络服务器组件,可以为企业提供大多数常用的Internet网络服务器应用,如Mail、DNS、Web等服务。
2.使用Linux作为中小企业内部服务器
Linux同样适用于架设中小企业的内部服务器,典型的应用场景如下所述。
(1)使用Linux作为网络防火墙。
(2)使用Squid服务,Linux可作为代理服务器。
(3)使用DHCP服务,用于管理内部网络的IP地址。
(4)使用NFS或Samba服务,实现企业内部的文件和打印共享。
在使用Linux作为中小企业内部服务器时,用户会存在各种各样的需求。Linux除了可以独立提供服务,还可以和其他服务器系统(如Windows)配合,构建多操作系统的混合运用环境,例如,使用Linux作为服务器,使用Windows作为桌面环境。
3.使用Linux作为桌面环境
随着开源软件桌面技术的发展,特别是GNOME和KDE两种桌面环境的迅速发展,Linux除了在服务器领域具有应用优势,在桌面应用领域也开始有不错的表现。随着Linux桌面时代的到来,相信在个人桌面和企业桌面应用中会越来越多地使用Linux。
4.使用Linux作为开发环境
Linux作为开发环境来使用可以说具有得天独厚的优势。对于有软件开发需求的企业而言,Linux能够在满足开发需求的条件下实现跨平台的开发和应用,大大降低了开发环境的成本。Linux广泛支持各种类型的开发语言,如Python、Java、C、C++等高级编程语言,PHP等网页编程语言,Perl、Ruby等脚本语言。
5.嵌入式Linux
嵌入式Linux是将Linux进行裁剪修改,使其能在嵌入式计算机系统上运行的一种操作系统。该系统的最大特点是源代码公开且遵循GPL协议,近几年来已成为研究热点。在目前正在开发的嵌入式系统中,有大约50%的项目选择Linux作为嵌入式操作系统。
Linux实现嵌入式具有得天独厚的优势。首先,Linux是开放源代码的,众多Linux爱好者和Linux开发者提供了强大的技术支持;其次,Linux的内核小、效率高,内核的更新速度很快,其系统内核最小只有大约134KB;再次,Linux在价格上极具竞争力;最后,Linux支持多种CPU和多种硬件平台,是一个跨平台的系统,很容易进行开发和使用。
嵌入式Linux的应用领域非常广泛,主要包括信息家电、PDA、机顶盒、交换机、路由器、ATM、远程通信、医疗电子、交通运输、工业控制、航空航天等。
6.Android
Android是一种基于Linux的自由且开放源代码的操作系统,主要适用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟开发及领导,中文名称一般为“安卓”或“安致”。
第一部Android智能手机发布于2008年10月。然后Android逐渐扩展到平板电脑及其他领域,如电视、数码相机、游戏机、智能手表等。