新書推薦:
《
乾隆制造
》
售價:HK$
87.4
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:HK$
296.7
《
明代社会变迁时期生活质量研究
》
售價:HK$
308.2
《
律令国家与隋唐文明
》
售價:HK$
74.8
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:HK$
101.2
《
现代吴语的研究(中华现代学术名著3)
》
售價:HK$
66.7
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:HK$
79.4
《
德国天才4:断裂与承续
》
售價:HK$
112.7
|
編輯推薦: |
畅销书全面升级精通Linux的终极指南知名Linux专家、畅销书作家Christopher Negus 全新作品
|
內容簡介: |
精通Linux的终极指南
《Linux宝典第9版 在上一版的基础上全面更新,旨在帮助Linux新手及中级用户将Linux知识和技能提升到新水平。知名Linux专家、畅销书作家Christopher Negus在本书中浓墨重彩地描述Red Hat Enterprise Linux、Fedora和Ubuntu最新版本和命令行工具,并通过分步的详明演示和精选习题引导读者悟透Linux操作系统的工作原理。本书还为各类Linux认证考试提供备考资料。
Linux是云计算中大多数技术进步的核心,这意味你必须扎实掌握Linux技术,从而在未来的数据中心高效工作。本书开篇介绍Linux基础知识,接着演示如何运用这些知识将Linux系统部署为虚拟机管理程序、云控制器和虚拟机,并讲述如何管理虚拟网络和网络存储。
本书讲述如何获取、安装和开始使用Linux,并最终驾轻就熟地管理和保护Linux。对于那些希望将Linux用作开发工作站的软件开发人员来说,本书也是优秀的参考资源。
主要内容
● 开始使用Linux
● 成为一名Linux高级用户
● 访问Shell并编写简单的Shell脚本
● 管理Linux系统和服务器
● 保护Linux系统和网络
● 配置各种服务器并排除常见故障
● 创建运行在虚拟机管理程序和云平台上的Linux虚拟机
|
目錄:
|
目 录
第Ⅰ部分 入 门
第1章 开始使用Linux 3
1.1 理解什么是Linux 4
1.2 了解如何区分Linux和其他操作系统 5
1.3 探讨Linux历史 5
1.3.1
Bell实验室中自由流动的UNIX文化 6
1.3.2
商业化的UNIX 8
1.3.3
GNU将UNIX转变为免费 9
1.3.4
BSD失去了一些动力 10
1.3.5
Linus弥补了缺失的部分 11
1.3.6
OSI开源定义 11
1.4 理解Linux发行版本是如何出现的 12
1.4.1 选择Red Hat发行版本 13
1.4.2
选择Ubuntu或者其他Debian发行版本 15
1.5 利用Linux找到职业机会 15
1.5.1
了解如何利用Linux挣钱 16
1.5.2
获得Red Hat认证 17
1.6 小结 20
第2章 创建完美的Linux桌面 21
2.1 了解Linux桌面技术 22
2.2 开始使用Fedora
GNOME桌面Live镜像 23
2.3 使用GNOME 3桌面 24
2.3.1
计算机启动之后 24
2.3.2
设置GNOME 3桌面 30
2.3.3
扩展GNOME 3桌面 31
2.3.4
启动桌面应用程序 33
2.3.5
停止GNOME 3桌面 37
2.4 使用GNOME 2桌面 37
2.4.1
使用Metacity窗口管理器 38
2.4.2
更改GNOME外观 39
2.4.3
使用GNOME面板 40
2.4.4
使用AIGLX添加3D效果 43
2.5 小结 45
2.6 习题 45
第Ⅱ部分 成为一名Linux高级用户
第3章 使用Shell 49
3.1
Shell和Terminal窗口 50
3.1.1
使用Shell提示符 50
3.1.2
使用Terminal窗口 51
3.1.3
使用虚拟控制台 52
3.2 选择Shell 52
3.3 运行命令 53
3.3.1
了解命令语法 53
3.3.2
查找命令 56
3.4 使用命令历史记录重复执行命令 58
3.4.1
命令行编辑 58
3.4.2
命令行补齐 60
3.4.3
命令行重复执行 61
3.5 连接和扩展命令 62
3.5.1
命令之间的管道 62
3.5.2
连续命令 63
3.5.3
后台命令 63
3.5.4
扩展命令 64
3.5.5
扩展算术表达式 64
3.5.6
扩展变量 64
3.6 使用Shell变量 64
3.6.1
创建和使用别名 66
3.6.2
退出Shell 66
3.7 创建自己的Shell环境 67
3.7.1
配置Shell 67
3.7.2
设置提示符 68
3.7.3
添加环境变量 69
3.8 获取关于命令的信息 70
3.9 小结 71
3.10
习题 71
第4章 在文件系统中移动 73
4.1 使用基本的文件系统命令
75
4.2 使用元字符和运算符 77
4.2.1
使用文件匹配元字符 77
4.2.2
使用文件重定向元字符 78
4.2.3
使用括号扩展字符 79
4.3 列出文件和目录 80
4.4 了解文件权限和所有权 83
4.4.1
使用命令chmod数字更改权限 84
4.4.2
使用chmod字母更改权限 85
4.4.3
使用umask设置默认的文件权限 85
4.4.4
更改文件所有权 86
4.5 移动、复制和删除文件 87
4.6 小结 88
4.7 习题 88
第5章 使用文本文件 91
5.1 使用vim和vi编辑文件 91
5.1.1
开始使用vi 92
5.1.2
在文件中跳过 96
5.1.3
搜索文本 96
5.1.4
使用ex模式 96
5.1.5
学习更多关于vi和vim的知识 97
5.2 查找文件 97
5.2.1
使用locate命令根据名称查找文件 97
5.2.2
使用find命令搜索文件 98
5.2.3
使用grep命令在文件中搜索
103
5.3 小结 104
5.4 习题 104
第6章 管理运行中的进程 107
6.1 理解进程 107
6.2 列出进程 108
6.2.1
使用ps命令列出进程 108
6.2.2
使用top命令列出和更改进程 109
6.2.3
使用System Monitor列出进程 110
6.3 管理后台和前台进程 112
6.3.1
启动后台进程 112
6.3.2
使用前台和后台命令 113
6.4 杀死和改变进程 114
6.4.1
使用kill和killall命令杀死进程 114
6.4.2
使用nice和renice命令设置处理器优先级 115
6.5 使用cgroups限制进程 116
6.6 小结 118
6.7 习题 118
第7章 编写简单的Shell脚本 119
7.1 理解Shell脚本 119
7.1.1
执行和调试Shell脚本 119
7.1.2
理解Shell变量 120
7.1.3
在Shell脚本中执行算法 123
7.1.4
在Shell脚本中使用编程结构 124
7.1.5
使用一些有用的文本操作程序 129
7.1.6
使用简单的Shell脚本 130
7.2 小结 132
7.3 习题 132
第Ⅲ部分 成为一名Linux系统管理员
第8章 学习系统管理 137
8.1 理解系统管理 137
8.2 使用图形化管理工具 138
8.2.1
使用system-config-*工具 139
8.2.2
使用基于浏览器的管理工具 140
8.3 使用root用户账户 140
8.3.1
通过Shell成为root用户su命令 141
8.3.2
通过GUI允许管理访问权限 142
8.3.3
使用sudo获取管理访问权限 142
8.4 探索管理命令、配置文件和日志文件 143
8.4.1
管理命令 144
8.4.2
管理配置文件 144
8.4.3
管理日志文件和Systemd Journal 148
8.5 使用其他管理账号 149
8.6 检查和配置硬件 150
8.6.1
检查硬件 150
8.6.2
管理可移动硬件 153
8.6.3
使用可加载模块 154
8.7 小结 156
8.8 习题 156
第9章 安装Linux 159
9.1 选择计算机 160
9.2 从Live介质安装Fedora
161
9.3 从安装介质安装Red
Hat Enterprise Linux 164
9.4 了解基于云的安装 166
9.5 在企业中安装Linux
167
9.6 探索共同的安装主题 168
9.6.1
升级或者从头开始安装 168
9.6.2
双启动 169
9.6.3
安装Linux并以虚拟方式运行 170
9.6.4
使用安装启动选项 170
9.6.5
使用专门的存储器 173
9.6.6
对硬盘进行分区 174
9.6.7
使用GRUB启动加载程序 176
9.7 小结 182
9.8 习题 182
第10章 获取和管理软件 183
10.1
在桌面管理软件 183
10.2
超越Software窗口 184
10.3
了解Linux RPM和DEB软件打包 185
10.3.1
理解DEB包 186
10.3.2
理解RPM包 187
10.4
使用YUM管理RPM软件包 188
10.4.1
了解yum的工作原理 189
10.4.2
借助于第三方的软件库使用YUM 192
10.4.3
使用YUM命令管理软件 192
10.5
使用rpm命令安装、查询和验证软件 198
10.5.1
使用rpm安装和删除软件包 199
10.5.2
查询rpm信息 199
10.5.3
验证RPM软件包 201
10.6
在企业中管理软件 202
10.7
小结 203
10.8
习题 203
第11章 获取用户账户 205
11.1
创建用户账户 205
11.1.1
使用useradd命令添加用户 207
11.1.2
设置用户默认值 209
11.1.3
使用usermod修改用户 210
11.1.4
使用userdel删除用户 211
11.2
了解组账户 212
11.2.1
使用组账户 212
11.2.2
创建组账户 213
11.3
在企业中管理用户 214
11.3.1
使用ACL设置权限 214
11.3.2
为用户添加目录以便进行协作 218
11.4
集中用户账户 220
11.4.1
使用Users窗口 221
11.4.2
使用Authentication Configuration窗口 221
11.5
小结 222
11.6
习题 222
第12章 管理磁盘和文件系统 225
12.1
了解磁盘存储器 225
12.2
对硬盘进行分区 227
12.2.1
理解分区表 227
12.2.2
查看磁盘分区 227
12.2.3
创建单分区磁盘 229
12.2.4
创建一个多分区磁盘 232
12.3
使用逻辑卷管理分区 235
12.3.1
检查现有的LVM 235
12.3.2
创建LVM逻辑卷 238
12.3.3
扩大LVM逻辑卷 239
12.4
挂载文件系统 240
12.4.1
被支持的文件系统 240
12.4.2
启用交换区 242
12.4.3
禁用交换区 243
12.4.4
使用fstab文件定义挂载文件系统 243
12.4.5
使用mount命令来挂载文件系统 245
12.4.6
以环回方式挂载磁盘镜像 246
12.4.7
使用umount命令 246
12.5
使用mkfs命令创建文件系统 247
12.6
小结 248
12.7
习题 248
第Ⅳ部分 成为一名Linux服务器管理员
第13章 了解服务器管理 253
13.1
开始学习服务器管理 254
步骤1:安装服务器 254
步骤2:配置服务器 255
步骤3:监视服务器 258
13.2
使用Secure Shell服务管理远程访问 259
13.2.1
启动openssh-server服务 260
13.2.2
使用SSH客户端工具 261
13.2.3
使用基于密钥无密码的身份验证 266
13.3
配置系统日志 268
13.3.1
使用rsyslog启用系统日志 268
13.3.2
使用logwatch查看日志 271
13.4
使用sar检查系统资源 272
13.5
检查系统空间 274
13.5.1
使用df显示系统空间 274
13.5.2
使用du检查磁盘使用情况 274
13.5.3
使用find确定磁盘消耗 275
13.6
管理企业中的服务器 275
13.7
小结 276
13.8
习题 276
第14章 管理网络 279
14.1
配置桌面网络 280
14.1.1
检查网络接口 281
14.1.2
配置网络接口 285
14.1.3
配置网络代理连接 287
14.2
使用命令行配置网络 289
14.2.1
编辑连接 289
14.2.2
了解网络配置文件 291
14.2.3
设置别名网络接口 295
14.2.4
设置Ethernet通道捆绑 295
14.2.5
设置自定义路由 296
14.3
配置企业中的网络 297
14.3.1
将Linux配置为一个路由器 297
14.3.2
将Linux配置为DHCP服务器 298
14.3.3
将Linux配置为DNS服务器 298
14.3.4
将Linux配置为代理服务器 299
14.4
小结 299
14.5
习题 300
第15章 启动和停止服务 301
15.1
了解初始化守护进程init或者systemd 302
15.1.1
了解经典的init守护进程 303
15.1.2
了解Upstart int守护进程 308
|
內容試閱:
|
开始使用 Linux
本章主要内容:
●
学习什么是 Linux
●
学习 Linux 的起源
●
选择 Linux 的发布版本
●
利用 Linux 找到职业机会
●
获得 Linux 认证
Linux 是 21 世纪最重要的技术进步之一。除了在 Internet 发展过程中所起到的重要作用以及在
计算机驱动的设备中扮演着重要的技术角色外,Linux 开发还为合作项目提供了一种模型,从而超
越个人和公司可以完成的工作。
Google 运行了成千上万的 Linux 服务器来增强其搜索能力。此外,它的 Android 电话也是基于
Linux 的。同时,当下载并运行 Google 的 Chrome OS 时,会发现 Chrome
OS 也是由 Linux 操作系统
在后台提供支持。
Facebook 使用了所谓的 LAMP 堆栈Linux、Apache、Web 服务器、MySQL 数据库和 PHP 网络
脚本语言,这些都是开源项目构建和部署其网站。事实上,Facebook 自己也使用了一种开源的开发
模型,从而使应用程序的源代码以及驱动 Facebook 运行的工具向公众公开。该模型帮助 Facebook
快速地找出程序中的错误,并获得来自全世界的帮助,从而为 Facebook 的快速发展提供源源不断的
动力。
那些为了提高自身操作系统速度和安全性而花费数万亿美元的金融机构也依赖 Linux。其中包
括纽约股票交易所、芝加哥商品交易所以及东京股票交易所。
随着云逐步成为当今最热门的流行语之一,其中一部分是炒作而来的,但也有一部分并不
是炒作,因为如今快速发展的云创新是以 Linux 和其他开源技术为基础的。任何构建一个私有云或
者公共云所需的软件组件如管理程序、云控制器、网络存储、虚拟网络和验证都可以从开源世界
中免费获得。
Linux 在全世界的广泛采用创造了对 Linux 专业知识的巨大需求。本章将帮助你理解什么是
Linux、Linux 的起源以及如何才能熟练使用
Linux,从而在你成为一名 Linux 专家的道路上开一个
好头。本书的其他部分将会提供相关的实践活动,从而帮助你获得相关的知识。最后,还要演示如
何将所学到的专业知识应用到云技术中。
第1章
第Ⅰ部分
入 门
4
1.1 理解什么是 Linux
Linux 是一种计算机操作系统。一个操作系统由用来管理计算机的不同软件所组成,并且可以
在操作系统上运行应用程序。Linux 以及其他类似的计算机操作系统都包含了如下所示的功能:
●
检测和准备硬件
当启动 Linux 系统时即当打开计算机时,Linux 将查看计算机中的组
件CPU、硬盘驱动器、网卡等并加载访问这些特定的硬件设备所需的软件驱动程序和
模块。
●
管理进程 操作系统必须同时跟踪正在运行的多个进程,并决定哪些进程访问 CPU 以及
何时进行访问。此外,该系统还必须提供启动、停止以及更改进程状态的相关方法。
●
管理内存 当应用程序需要使用内存时,必须向其分配 RAM 和交换空间即扩展内存。
操作系统决定如何处理对内存的请求。
●
提供用户界面
操作系统必须提供访问系统的相关方法。最初,主要是通过一个被称为
Shell 的命令行解释器来访问 Linux 系统。如今,图形桌面界面也被广泛使用。
●
控制文件系统
文件系统结构内置于操作系统之中或者说作为模块加载到操作系统中。
操作系统对文件系统中所包含的文件和目录文件夹的所有权和访问进行控制。
●
提供用户访问和身份验证
创建用户账户并在用户之间设置允许边界是 Linux 的一项基
本功能。分离用户账户和组账户能够让用户控制他们自己的文件和进程。
●
提供管理实用工具
在 Linux 中,可以使用成百甚至上千个命令和图形窗口来完成相关的
操作,比如添加用户、管理磁盘、监视网络、安装软件、管理计算机以及确保计算机安
全等。
●
启动服务 为了使用打印机、处理日志消息以及提供各种不同的系统和网络服务,需要
在后台运行被称为守护进程daemon processes的进程,从而等待请求的到来。在 Linux 中可
以运行多种不同类型的服务。此外,Linux 还提供了不同的方法来启动和停止这些服务。换
句话说,当 Linux 包含了用来浏览 Web 页面的 Web 浏览器时,它也是一台可以向他人提供
Web 页面的计算机。比较流行的服务器功能包括
Web、电子邮件、数据库、打印机、文件、
DNS 以及 DHCP 服务器。
●
编程工具 在 Linux 中,可使用各种编程实用工具来创建应用程序,以及使用不同的库来
实现专业界面。
如果想要更好地管理 Linux 系统,则需要学习如何使用前面所描述的相关功能。虽然可以通过
使用图形界面来管理大部分功能,但对于负责管理 Linux 系统的人来说,理解 Shell 命令行是至关重
要的。
现代 Linux 系统的功能已经大大超越了最初的 UNIX 系统Linux 是基于 UNIX 系统的的功能。
在大型企业中,通常会使用 Linux 的一些高级功能,比如:
●
群集 Linux 可被配置为在群集cluster中工作,从而使多个系统对外部世界表现为一个
系统。此外,还可以对服务进行相关配置,使其能够在群集节点之间来回传递,从而使这
些节点在使用相关服务时感觉不到任何服务运行的中断。
●
虚拟化 为更有效地管理计算资源,可以将 Linux 作为一个虚拟主机来运行。在该主机上,
可以将其他的 Linux 系统、Microsoft Windows、BSD 以及其他操作系统作为虚拟访客来运
行。而对于外部世界来说,每一个虚拟访客都表现为一个单独的计算机。而在 Linux 中,可
使用 KVM 和 Xen 技术来创建虚拟主机。
第 1 章
开始使用 Linux
5
●
云计算 为管理大规模的虚拟化环境,可以使用基于 Linux 的成熟的云计算平台。诸如
OpenStack 和 Red Hat Enterprise
Virtualization 之类的项目可以同时管理多个虚拟主机、虚拟
网络、用户和系统验证、虚拟访客以及网络存储空间。
●
实时计算 可以对 Linux 进行相关配置,以便进行实时计算,此时高优先级的进程可以得
到更快、可预测的关注。
●
专门的存储空间
在 Linux 中,除了在计算机的硬盘中存储数据之外,还可以使用许多专
门的本地和网络存储空间。Linux 中可用的共享存储设备包括 iSCSI、Fibre Channel 以及
Infiniband。而完全开源的存储平台包括诸如
Cephhttp:ceph.com和 GlusterFShttp:gluster.org
之类的项目。
本书并不会介绍所有这些高级主题。然而,对于那些使用 Shell、使用磁盘、启动和停止服务以
及为了使用这些高级功能而配置不同的服务器所需的相关功能,本书将会详细进行介绍。
1.2 了解如何区分 Linux 和其他操作系统
如果你是一名 Linux 的初学者,且使用过 Microsoft Windows 或者 Apple Mac OS 操作系统,那
么学习 Linux 是非常好的机会。虽然 Mac OS X 在免费软件操作系统中有一席之地,通常被称为
Berkeley Software Distribution,但 Microsoft 以及 Apple 的操作系统都被称为专有操作系统。这也就
意味着:
●
无法查看用来创建操作系统的代码。
●
对于无法满足需求的操作系统,不能在最基本层面对其进行更改。并且不能使用该操作系
统构建自己的操作系统。
●
不能对源代码进行检查,从而无法找到代码错误,发现安全漏洞,或者学习代码的工作
原理。
●
如果操作系统的开发者没有对外公开所需的编程接口,你将无法向操作系统中插入自己的
软件。
当你看到这些关于专有软件的相关陈述,可能会说:我不在乎这些。我不是一名软件开发人员。
我并不想查看或者更改操作系统的构建机理。
你的想法可能是对的。但事实上,很多其他软件已经成为免费的、开源的软件并被使用,从而
使 Internet比如 Google、移动电话比如 Android、特殊的计算设备比如 Tivo以及成百上千的技术
公司呈现爆炸式发展。免费软件不仅降低了计算成本,还有利于创新的爆发。
你可能并不希望像 Google、Facebook 以及其他公司那样使用 Linux 为一家数十亿美元的公司构
建基础程序。但那些已经使用 Linux 构建了计算机基础结构的公司则需要越来越多具备专业技能的
人来运行这些系统。
一个功能强大且灵活的计算机系统是如何免费的呢?要了解这一切,需要首先明白 Linux 的起
源。所以,本章的下一节将介绍导致 Linux 产生的免费软件运动的不寻常且曲折的发展道路。
1.3 探讨 Linux 历史
Linux 的历史起源于 1991 年 8 月 25 日 Linus
Torvalds 向 comp.os.minix 新闻组张贴的一则消息
第Ⅰ部分
入 门
6
http:groups.google.comgroupcomp.os.minixmsgb813d52cbc5a044b?pli=1:
Linus Benedict Torvalds
所有使用 Minix 的朋友们,大家好。
目前,我正在为 386486AT clones 编写一个免费的操作系统这仅仅只是我的一个业余爱好,该
操作系统将不会是一个类似于 gnu 之类的大型、专业操作系统。该想法从今年 4 月份开始酝酿,目
前已经开始准备编写了。由于我的操作系统与 Minix 类似比如相同的文件系统物理布局之所以这
么做,最主要是出于现实原因,因此希望喜欢或者不喜欢 Minix 的人可以提出反馈意见,任何建
议都欢迎,但我不能保证会实现所有的意见。
Linustorvalds@kruuna.helsinki.fi
附注:当然,该操作系统不包含任何 Minix 代码,并且具有一个多线程的文件系统。该系统不
是便携式的原文如此因为使用了 386 任务切换等功能,同时,它仅支持 AT-harddisks,这就是我
能够完成的全部功能。
Minix 是 90 年代初在 PC 上运行的类似于 UNIX 的一种操作系统。与
Minix 一样,Linux 也是
UNIX 操作系统的克隆。除了少数例外,比如
Microsoft Windows,大多数现代计算机系统包括 Mac
OS X 和 Linux都源自 UNIX 操作系统,而该系统最初由
ATT 所创建。
如果你真正体会到了 ATT Bell 实验室是如何根据一个专有系统创建出一个免费的操作系统,
那么将有助于理解创建 UNIX 时的文化背景以及使 UNIX 的精华部分重现的一系列事件。
注意
为学习更多关于 Linux 的创建原理,请参考以下书籍:Linus Torvalds 所著的 The Story of an
Accidental RevolutionaryHarperCollins 出版社,2001。
1.3.1 Bell 实验室中自由流动的 UNIX 文化
最初,UNIX 操作系统在一个公共社区中被创建并逐步发展。UNIX 的创建并不是受市场需求
所驱使的,而是用来克服生产程序中的障碍。而拥有 UNIX 商标的 ATT 最终使 UNIX 成为了一个
商业产品,但在那时,许多使 UNIX 特殊化的概念甚至很多早期的代码都已经进入了公共领域。
如果你非常年轻无法回想起 1984 年 ATT 分裂时的情景,那么可能也就不知道 ATT 曾经是
一家电话公司。直到 20 世纪 80 年代初,ATT 并没有过多地考虑竞争的问题,因为当时在美国如
果想要买一部电话,则必须去 ATT 公司。所以它将大部分资金投入了纯理论的研究项目。而进行
这些研究项目的单位是位于 New Jersey 州 Murray Hill 的 Bell 实验室。
在 1969 年左右,一个被称为 Multics 的项目失败了,在此之后,Bell 实验室聘用了 Ken Thompson
和 Dennis Ritchie 开始创建一种新的操作系统,从而为软件的开发提供一种改进的环境。在那个时候,
大部分应用程序都是写在穿孔卡片上,并批量地输入到大型机中。在 1980 年的一次关于UNIX 分
时系统的演变的演讲中,Dennis Richie 总结了 UNIX 系统的灵魂:
我们想要开发的并不仅仅是一个能够进行编程的好环境,而是一个能够形成友谊的系统。根据
经验我们知道,公用计算的本质是通过远程访问提供的,分时系统并不仅仅是为了将程序输入一个
终端,而是鼓励大家进行密切的沟通。
从那时开始,UNIX 设计的简单性以及强大功能开始打破阻碍软件开发人员的种种障碍。而
UNIX 的基础由几个关键元素组成:
第 1 章
开始使用 Linux
7
● UNIX 文件系统
因为 UNIX 包含了一个允许子目录级别的文件系统结构对于当今桌面
用户而言,这种结构看起来类似于在文件夹中包含了文件夹,所以可以使用 UNIX 以一种
直观的方式组织文件和目录。此外,UNIX 将磁盘、磁带以及其他设备表示为单独的设备文
件,这样就能够将它们作为目录中的条目来进行访问,从而大大简化了访问这些设备的复
杂方法。
●
输入输出重定向
早期的 UNIX 系统还包括了输入重定向和管道。通过一个命令行,
UNIX 用户能够使用右箭头键将一条命令的输出定向到一个文件中。随后,UNIX 又引入
了管道|的概念,从而将一条命令的输出定向到另一条命令的输入中。例如,下面所示的命
令行首先将 file1 和 file2 连接起来cat,然后按照字母顺序对文件中的代码行进行排序sort,
紧接着对排好序的文本进行分页pr,以便进行打印,最后将输出定向到计算机的默认打印
机上lpr:
$ cat file1 file2 | sort | pr | lpr
这种对输入和输出进行定向的方法能够让开发人员创建自己专业的实用工具,并且能够与
现有的实用工具进行联接。这种模块化的方法能够让不同的开发人员编写不同的代码,并
且在用户需要的时候将这些代码片段组合起来。
●
可移植性 简化使用 UNIX 的体验能够使其更具可移植性,从而在不同的计算机上运行。
通过使用设备驱动程序表示为在文件系统树中的若干个文件,UNIX 只需向应用程序提供
一个接口即可,而应用程序则无须知道底层硬件的详细信息。如果日后想要从 UNIX 移植
到另一个系统,开发人员只需更改驱动程序即可,而应用程序并不需要针对不同的硬件进
行修改。
然而,为了使可移植性成为现实,还需要使用一种高级编程语言来实现所需的软件。为此,Brian
Kernighan 和 Dennis Ritchie 创建了 C 编程语言。在 1973 年,使用 C 语言重新编写了 UNIX。如今,
C 语言仍然是创建 UNIX以及 Linux操作系统内核所使用的主要语言。
在 1979 年的一次演讲中,Ritchie 接着说http:cm.bell-labs.comwhodmrhist.html:
如今,仍然使用汇编程序编写的重要的 UNIX 程序就只剩汇编程序自己了;实际上,所有的实
用工具都已经使用 C 语言进行编写,而大部分应用程序也都是使用 C 语言编写的,虽然仍然有许多
介绍 Fortran、Pascal 和 Algol 68 的网站。似乎可以肯定的是,UNIX 的成功很大程度上取决于其软
件的可读性、可修改性以及可移植性,而这三性又取决于 UNIX 在高级语言中的表达。
如果你是一名 Linux 爱好者,并且有兴趣想知道早期的 Linux 中哪些功能被保留下来,那么不
妨读一下 Dennis Ritchie 再版的第一个 UNIX 程序员手册1971 年 11 月 3 日。可以在 Dennis Ritchie
的网站中找到该手册:http:cm.bell-labs.comcmcswhodmrlstEdman.html。该文档的形式是 UNIX
手册页man pages,如今,UNIX 手册页仍然是介绍 UNIX 和 Linux 操作系统命令和编程工具的主
要形式。
通过阅读 UNIX 系统的早期文档和说明,可以清楚地看到 UNIX 的开发是一个自由流动的过程,
从而使 UNIX 变得更加优秀。而该过程还导致了代码的共享包括 Bell 实验室内部的共享以及外部的
共享,从而能够快速地开发高质量的 UNIX 操作系统。此外,还可以产生一个 ATT 日后难以回滚
的操作系统。
第Ⅰ部分
入 门
8
1.3.2 商业化的 UNIX
在 1984 年 ATT 资产剥离之前当时,ATT 被分为 ATT 以及七个Baby Bell公司,ATT
被禁止出售计算机系统。而日后成为 Verizon、Qwest 和 Alcatel-Lucent 的公司也都是 ATT 的一部
分。由于 ATT 对电话系统的垄断,美国政府开始担心一个不受限制的 ATT 可能会主导新兴的计
算机产业。
因为在资产剥离之前 ATT 被禁止直接向客户出售计算机,所以 ATT 将 UNIX 源代码授权给
各大学并且只收取象征性的费用。此时,ATT 所出售的 UNIX 操作系统都需要用户自己进行编译。
1. Berkeley 软件发行版的产生
到了 1975 年,UNIX V6 成为在 Bell 实验室之外被广泛使用的 UNIX 的第一个版本。根据该版
本的 UNIX 源代码,位于 Berkeley 的 California 大学创建了 UNIX 的第一个主要变异版本,该版本
被称为 BSDBerkeley Software Distribution,Berkeley 软件发行版。
在接下来的 10 年里,UNIX 的 BSD 版本和 Bell Labs 版本在各自不同的方向得到了迅速发展。
其中 BSD 继续以自由流动、代码共享的方式这也是早前 Bell Labs UNIX 的主要特点向前发展,而
ATT 则开始使 UNIX 转向商业化。随着一个独立的
UNIX 实验室的产生该实验室从 Murray Hill
搬出,搬到了 New Jersey 的 Summit,ATT 开始尝试对 UNIX 进行商业化。到了 1984 年,资产剥
离后的 ATT 开始准备真正出售 UNIX 了。
2. UNIX 实验室和商业化
UNIX 实验室被视为一个无法找到其产地或者找到一种方法来赚钱的宝石。由于它在 Bell 实验
室和 ATT 的其他部门之间来回迁移,因此它的名称被改了多次。其中给人影响最深的名字是其作
为 ATT 的剥离资产时的名称:USLUNIX System Laboratories,UNIX 系统实验室。
来自 USL 的 UNIX 源代码被部分卖给了 SCOSanta Cruz Operation,因此曾经一段时间 SCO 使
用这部分代码作为诉讼依据与主要的 Linux 供应商比如 IBM 和 Red Hat 公司打官司。所以,我认
为大部分人已经遗忘了 USL 对 Linux 的成功所做的贡献。
当然,在 20 世纪 80 年代,许多计算机公司担心相对于一家位于华盛顿,Redmond 地区的新崛
起的公司,完成资产剥离的 ATT 将可能对计算机产业产生更大的威胁。为了消除 IBM、Intel、Digital
Equipment Corporation 以及其他计算机公司的担心,UNIX
实验室做出以下承诺,以确保一个平等的
游戏规则:
●
仅出售源代码 ATT 将继续只出售源代码,并且对所有的许可证持有人都平等可用,
而不会生产自己的 UNIX 套装。此外,每一家公司还可以将 UNIX 植入到自己的设备中。
直到 1992 年,为了与 Novell 组建合资企业被称为 Univel而将该实验室拆分出来,并最终
卖给了 Novell。随后,Novell 根据源代码直接生产了 UNIX 的商业套装。
●
发布的接口 为了在
OEMOriginal Equipment Manufacturers,原始设备制造商之间创建
一个公平的社会环境,同时也为了保证 UNIX 的本质内容不变,ATT 开始对 UNIX 的不
同端口进行标准化。为此,UNIX 供应商可以使用诸如 POSIXPortable Operating System
Interface标准以及 SVIDATT
UNIX System V Interface Definition之类的规范来创建兼容
UNIX 系统。同样,这些文档也为 Linux 的创建提供了线路图。
第 1 章
开始使用 Linux
9
注意
在早前的电子邮件新闻组帖子中,Linus Torvalds 曾经请求获取一份 POSIX 标准的副本更确切
地讲是在线文档。我想 ATT 可能会认为如果不使用任何 UNIX 源代码,没有人能够仅通过这些接
口就可以编写出自己的 UNIX 克隆版本。
●
技术方法 直到 USL 结束时为止,关于 UNIX
发展方向的大多数决定都是基于技术上的
考虑而做出的。通过技术等级的划分,使管理得到了极大提升。据我所知,从来没有任何
人说过所编写的软件破坏了其他公司的软件,或者限制了 USL 合伙人的成功。
当 USL 最终开始雇佣市场营销专家并为终端用户创建桌面 UNIX 产品时,Microsoft Windows
已经牢牢把握了桌面市场。同时,由于 UNIX 的营销方向是为大型计算机系统指定源代码许可,因
此 USL 很难为其产品定价。例如,对于包含了 UNIX 的软件,USL 必须根据主机的价格$100 000
支付每台计算机的许可费用,而不是根据 PC 的价格$2000。再加上没有适用于 UnixWare 的应用程
序,所以你就会明白 USL 努力失败的原因了。
然而,当时其他计算机公司却成功地实现了对 UNIX 系统的营销。其中 SCO 发现了一个利基市
场,主要销售在小型办公室中运行哑终端的 UNIX 的 PC 版本。Sun Microsystems 则针对程序员以及
高端技术应用程序比如股票交易出售大量的 UNIX 工作站该工作站最初是基于 BSD 开发出来的,
但最终在 SVR4 内核标准下与 UNIX 合并。
20 世纪 80 年代,还出现了其他的商业
UNIX 系统。这种新的 UNIX 所有权声明违背了开放贡
献的精神。为此产生了诉讼案件来保护 UNIX 源代码和商标。在 1984 年,这种新的、受限制的 UNIX
促使了一个新组织的诞生,而该组织最终促使了 Linux 的诞生:Free Software Foundation。
1.3.3 GNU 将 UNIX 转变为免费
在 1984 年,Richard M. Stallman 启动了 GNU 项目http:www.gnu.org,短语 GNU is Not UNIX
的缩写。作为 FSFFree Software Foundation的一个项目,其主要目的是重新编写整个
UNIX 操作系
统,从而可以自由地进行分发。
GNU 项目页面http:www.gnu.orggnuthegnuproject.html以 Stallman 自己的话讲述了项目名称
的由来。此外,该页面还列举了专有软件公司给那些希望共享、创建和创新的软件开发人员所带来
的问题。
虽然由一两个人重新编写数百万行代码似乎是不可能的,但如果有几十甚至上百个程序员共同
努力,那么该项目就是可能的。请记住,设计 UNIX 的目的就是可以分别构建并在需要时连接在一
起。因为是使用知名且已发布的接口重新编写命令和实用工具,所以可以非常容易地在许多开发人
员中分配任务。
事实证明,全新代码不仅可以获得相同的结果,甚至在某些方面比原始的 UNIX 版本更好。因
为每个人都可以看到该项目所编写的代码,所以随着时间的流逝,不完善的代码可以被快速更改或
者替换。
如果你非常熟悉 UNIX,可以尝试从 Free Software Directoryhttp:directory.fsf.orgwikiGNU中搜
索数以千计的 GNU 软件包,从而找到你所喜欢的 UNIX 命令。除此之外,还可以找到许多其他可
用的软件项目。
随着时间的流逝,术语免费软件逐步被术语开源软件所取代。虽然开源软件被 Open Source
Initiativehttp:www.opensource.org所大力提倡,但 Free
Software Foundation 仍然喜欢使用术语免
第Ⅰ部分
入 门
10
费软件。
为了调节两个阵营的矛盾,一些人使用术语免费和开源软件Free and Open Source Software,
FOSS来代替。然而,虽然可以免费使用所喜欢的软件,但 FOSS 的基本原则规定使用者有义务将
对所使用软件的改进编写成代码,并供其他人使用。也就是说,当你从别人的工作中受益的同时,
别人也可以从你的工作中受益。
为清晰地定义应该如何处理开源软件,GNU 软件项目创建了 GNU Public License,或者简称为
GPL。虽然许多其他的软件许可证在保护免费软件方面使用了不同的方法,但 GPL 是最知名的,且
自身包含了 Linux 内核。GNU Public License 的基本功能如下所示:
●
作者权利 原始作者保留对其软件的所有权利。
●
免费分发 人们可以在自己的软件中使用
GNU 软件,修改以及重新分发软件。然而,在
分发时必须包括源代码或者可以使他人非常容易地获得源代码。
●
版权维护 即使对软件进行重新封装和转售,该软件中也必须维护原始的 GNU 协议,这
意味着该软件未来的使用者可以像你一样有机会更改源代码。
在 GNU 软件上没有保修的义务。如果软件出现错误,该软件的原始开发人员没有义务解决该
问题。然而,当有问题的软件包含在他们自己的 Linux 系统或者其他开源软件发布版本中时,许多
大型和小型的公司都提供了付费技术支持如果想了解更多关于开源软件的详细信息,请参阅本章
后面的OSI 开源定义一节。
尽管在创建成百上千的 UNIX 实用工具方面取得了成功,但 GNU 项目仍然无法创建一段关键
的代码:即内核代码。起初,尝试使用 GNU Hurd 项目http:www.gnu.orgsoftwarehurd构建开源内
核,但没有成功,所以 GNU Hurd 项目无法成为主要的开源内核。
1.3.4 BSD 失去了一些动力
一个有机会击败 Linux 并成为主要开源内核的软件项目是 BSD 项目。在 20 世纪 80 年代末期,
位于伯克利的加利福尼亚大学的 BSD 开发人员意识到他们已经重新编写了十年前获得的大部分
UNIX 源代码。
在 1989 年,加利福尼亚大学发布了与 UNIX 类似的代码 Net1,随后在 1991 年又发布了 Net2。
正当加利福尼亚大学准备编写完整的类似于 UNIX的操作系统该系统对所有的 ATT 代码免费时,
1992 年,ATT 一纸诉状打断了编写进程。该诉讼声称加利福尼亚大学使用了来自 ATT UNIX 系
统中的商业秘密编写了该软件。
需要重点注意的是,BSD 开发人员已经对来自 ATT 的版权保护代码进行了重新编写。而版权
是 ATT 用来保护其对 UNIX 代码权利的主要手段。一些人相信,如果 ATT 取得了 UNIX 代码中
所包含概念的专利权,就不会有如今的 Linux 操作系统或者任何 UNIX 克隆版本。
当 1994 年 Novel 从 ATT 买下了 UNIX System Laboratories 之后,该诉讼才尘埃落定。但在此
关键时期,人们开始担心和怀疑 BSD 代码的合法性,同时 BSD 在新兴的开源社区所取得的动力也
在逐步消失。许多人开始寻找其他的开源替代产品。此时,对于一名一直在编写自己内核的芬兰大
学生而言,时机已经到来。
注意
如今,可以从三个主要项目中获取不同的 BSD 版本:FreeBSD、NetBSD 以及 OpenBSD。人们
通常认为 FreeBSD 是最易于使用的,而 NetBSD 主要用于大多数的计算机硬件平台,OpenBSD 则
第 1 章
开始使用 Linux
11
侧重于安全性。许多注重安全性的人仍然更喜欢使用 BSD 而不是 Linux。此外,由于其许可功能,
BSD 还可以被专有软件供应商所使用,比如
Microsoft 和 Apple,因为它们都不希望其他人共享自己
的操作系统代码。其中,Mac OS X 就是基于一个 BSD 派生产品而构建的。
1.3.5 Linus 弥补了缺失的部分
Linus Torvalds 于 1991 开始从事 Linux 方面的工作,当时他还是芬兰赫尔辛基Helsinki大学的
一名学生。最初,他想要创建类似于 UNIX 内核的目的是能够在学校以及家用计算机上使用相同类
型的操作系统。当时,Linus 正在使用 Minix,但他想要超越 Minix 标准所许可的范围。
如前所述,Linus 于 1991 年 8 月 25 日向 comp.OS.minix 新闻组宣布了 Linux 内核的第一个公共
版本,虽然 Torvalds 推测第一个版本直到该年 9 月中旬才会真正出来。
虽然 Torvalds 声明 Linux 是针对 386 处理器编写的,并且可能不具有可移植性,但其他开发人
员一直坚持提倡以及致力于使 Linux 的早期版本具有可移植性。1991 年 10 月 5 日,Linux 0.02 版
本发布,其中使用了 C 编程语言重新编写了大部分的原始汇编代码,从而可以将该版本的 Linux 移
植到其他计算机中。
Linux 内核是在 GPL 下完成一个完整的、类似于
UNIX 操作系统所需的最后且最重要的代码片
段。所以,当人们开始将各种发行版本放在一起时,会将 Linux 和 GNU 联系在一起。一些诸如 Debian
之类的发行版本将自己称为 GNULinux 发行版本在 Linux 操作系统的标题或者子标题中不包括
GNU 也是 GNU 项目中一些成员常抱怨的事情。参见 http:gnu.org。
如今,可将 Linux 描述为一个开源的、类似于 UNIX 的操作系统,它符合 SVID、POSIX 和 BSD
标准。同时,Linux 一直在努力符合 POSIX 以及 UNIX 商标所有人 Open Grouphttp:www.unix.org
所设定的标准。
Open Source Development Labs 负责管理 Linux 发展努力的方向。当它与
Free Standards Group
http:www.linuxfoundation.org合并后,被重命名为
Linux Foundation,并且聘用了 Linus Torvalds。
其赞助商包括商业 Linux 系统 Whos Who 以及应用程序供应商,比如 IBM、Red Hat、SUSE、Oracle、
HP、Dell、Computer
Asscociates、Intel、Cisco Systems 等。Linux Foundation 的宗旨是通过为 Linux
开发人员提供法律保护和软件开发标准,保护和加快 Linux 的发展。
虽然大部分 Linux 努力主要在企业计算方面,但在桌面舞台也得到了巨大的提高。KDE 和
GNOME 桌面环境不断提升了临时用户的 Linux 体验。而诸如 Xfce 和 LXDE 之类最新轻量级的桌面
环境也为用户提供了有效的替换产品,从而将数以千计的上网本用户带入了 Linux 世界。
Linus Torvalds 目前仍在继续维护和改善
Linux 内核。
注意
如果想了解更多关于 Linux 历史的详细信息,可以参阅 Open Sources:Voices from the Open Source
Revolution 一书OReily,1999。可从
http:oreilly.comcatalogopensourcesbooktoc.html 在线获取该
书完整的第一个版本。
1.3.6 OSI 开源定义
Linux 提供了一种平台,通过该平台,软件开发人员可以按照自己的意愿修改操作系统,并且
可以在创建应用程序的过程中得到所需的帮助。开源运动的其中一个监视者就是 Open Source
InitiativeOSI,http:www.opensource.org。
第Ⅰ部分
入 门
12
虽然开源软件的主要目的是使源代码可用,但 OSI 在其开源定义中还定义了开源软件的其他目
的。下列针对可接受的开放源码许可证所指定的规则主要是为了保护开源代码的自由性和完整性:
●
免费发布 一个开源许可证不能向那些转售软件的人收取任何费用。
●
源代码 源代码必须包括在软件中,并且在重新发布时不能对源代码有任何限制。
●
派生的作品 许可证必须允许在相同的条件下对代码进行修改和再分发。
●
保持作者源代码的完整性
如果使用源代码的人更改了源代码,许可证可以要求他们删
除原始项目的名称或者版本。
●
不能针对个人或者团体进行区别对待
许可证必须允许所有的人平等合法地使用源
代码。
●
不能针对不同活动领域进行区别对待
许可证不能因为某项目具有商业化特征,或者因
为某项目与软件提供商所不喜欢的活动领域相关联而限制该项目使用源代码。
●
许可证的分发
使用和重新分发软件不应该需要额外的许可证。
●
许可证不能只针对某一产品
许可证不能将源代码限制为某一特殊的软件发行版本。
●
许可证不能限制其他软件
许可证不能够阻碍人们在相同的介质上将开源软件作为非开
源软件来使用。
●
许可证必须在技术上是中立的
许可证不能够限制可以重新分发源代码所使用的方法。
软件开发项目所使用的开源许可证必须满足这些标准,以便被 OSI 接受为一个开源软件。大约
有 70 种不同的许可证被 OSI 所接受,并被用来将软件标记为OSI 认证开源软件。除了 GPL 之外,
其他被 OSI 所批准的常用许可证还包括:
● LGPL GNU LGPLLesser General Public License通常被用来分发其他应用程序所依赖
的库。
● BSD Berkeley Software Distribution License 允许对源代码进行重新分发,但有两点要求:
1、重新分发的源代码必须保留 BSD 版权声明;2、在没有征得书面允许的情况下,不能使
用贡献者的名字来宣传或者推广衍生软件。然而,BSD 与 GPL 主要的一个区别是 BSD 不
要求修改代码的开发人员将其所做的修改传到社区中。这样做的结果是诸如 Apple 和
Microsoft 之类的专有软件供应商也可以在它们自己的操作系统中使用 BSD 代码。
● MIT MIT 许可与 BSD 许可类似,但它不包括对宣传和推广的要求。
● Mozilla Mozilla 许可包含了 Firefox Web 浏览器源代码以及其他与 Mozilla 项目
http:www.mozilla.org相关的软件源代码的使用和重新分发。相对于前面所提到的许可,
Mozilla 许可内容更长,因为它就贡献者以及重复使用源代码的开发人员应该如何行为进行
了更详细的定义。其中包括提交修改时应该提交更改文件,同时,那些为了重新分发而向
源代码中添加了额外代码的开发人员应该知道专利问题以及其他与代码相关联的限制。
开源代码的最终结果是软件可以加快发展,同时在使用方式上也有了更大的灵活性。很多人相
信这么一个事实,如果许多人对同一个项目的源代码进行检查,那么将会产生高质量的软件。就如
开源提倡者 Eric S. Raymond 经常所引用的那样给予足够多的眼球,所有的错误都是肤浅的。
1.4 理解 Linux 发行版本是如何出现的
如今在 Internet 上充斥着大量源代码,可以对这些源代码进行编译并封装到 Linux 系统中。然而,
第 1 章
开始使用 Linux
13
对于大多数临时 Linux 用户而言,需要一种更简单的方法来组成 Linux 系统。为了满足这种需求,
一些最优秀的极客开始构建他们自己的 Linux 发行版本。
Linux 发行版本由用来创建正常工作的 Linux 系统所需的组件以及用来安装并运行这些组件的
程序所组成。从技术角度看,Linux 其实就是所谓的内核。但在使用该内核之前,还必须安装一些
诸如基本命令比如 GNU 实用工具之类的其他软件以及需要提供的相关服务比如远程登录或者
Web 服务器,有时可能还需要一个桌面界面和图形应用程序。因此,需要收集这些软件并将它们安
装到计算机的硬盘中。
Slackwarehttp:www.slackware.com是如今仍在被持续开发的历史最悠久的 Linux 发行版本之
一。它通过分发已经完成编译的软件并组成软件包这些软件组件包以一种被称为 tarballs 的形式存
在,从而使 Linux 对于那些非技术用户更加友好。用户只需使用基本的 Linux 命令就可以完成相关
操作,比如格式化磁盘、启动交换以及创建用户账户等。
不久后,许多其他的 Linux 发行版本也陆续出现。而其中一些 Linux 发行版本是为了满足特殊
需要而创建的,比如 KNOPPIX一个光盘启动的 Linux、Gentoo一个很酷的自定义 Linux以及
Mandrake日后也称为 Mandriva,它是多个桌面 Linux
发行版本的一种。但有两种主要的发行版本
逐步成为其他发行版本的基础:即 Red Hat Linux 和 Debian。
1.4.1 选择 Red Hat 发行版本
当 Red Hat 在 20 世纪 90 年代末出现之后,由于多种原因,它很快成为最受欢迎的 Linux 发行
版本:
● RPM 包管理
如果需要对计算机上的软件进行解压缩,tarballs 是非常好用的。但如果想
要更新、删除甚至查找软件,tarballs 则望尘莫及。为此,Red Hat 创建了 RPM 封装格式,
通过使用该格式,一个软件包不仅可以包含共享的文件,还可以包含包版本的相关信息,
比如谁是创建者,哪些文件是文档或是配置文件以及何时被创建。通过安装以 RPM 格式封
装的软件,可以在本地的 RPM 数据库中存储每个软件包相关的上述信息,从而便于查找安
装了什么软件以及更新或者删除软件。
●
简单的安装过程 Anaconda 安装程序使安装 Linux 变得更加简单。用户只需要完成一些
简单的问题大部分情况下接受默认值即可就可以安装 Red Hat Linux。
●
图形化管理 Red Hat 添加了一些简单的图形化工具来配置打印机、添加用户、设置时间
和日期以及完成其他基本的管理任务。这样,桌面用户就可以非常容易地使用 Linux 系统,
而不必运行命令。
多年来,对于 Linux 专业人士和爱好者来说,Red Hat Linux 都是比较受欢迎的 Linux 发行版本。
Red Hat, Inc.除了分发 Red Hat Linux 已编译且可随时运行的版本被称为二进制版本之外,还分发了
源代码。但随着 Linux 社区用户需求和大客户需求开始逐步出现分歧,Red Hat 放弃了 Red Hat Linux,
转而开始开发两个新的操作系统:Red Hat Enterprise Linux 和 Fedora。
1. 使用 Red Hat Enterprise
Linux
到了 2012 年 3 月,Red Hat 公司成为全世界第一家年收入超过十亿美元的开源软件公司。而完
成该目标的途径主要是通过围绕 Red Hat Enterprise LinuxRHEL开发了一组满足最苛刻的企业计算
环境需求的产品。
当其他 Linux 发行版本还在关注桌面系统或者小型商业计算时,RHEL 已经在为商业和政府开
第Ⅰ部分
入 门
14
发处理任务关键性应用程序所需的相关功能。它所构建的系统能够加快世界上最大的金融交易所的
交易速度,同时还能够作为群集和虚拟工具进行部署。
除了出售 RHEL 之外,Red Hat 还为 Linux 用户提供了一个有益的生态环境。如果想要使用
RHEL,客户需要购买订阅,从而可以部署任何所希望的版本。如果退出了 RHEL 系统,还可以使
用该订阅部署其他系统。
根据客户的不同需求,可以使用 RHEL 不同级别的支持。除了相关的支持之外,客户可以获取
硬件以及被认证使用 RHEL 的第三方软件。可以咨询 Red Hat 顾问和工程师,以便帮助他们组成所
需要的计算环境。同时,还可以为他们的雇员进行培训和认证考试请参阅本章后面对 RHCE 认证
的详细讨论。
Red Hat 还向 Red Hat Enterprise
Linux 添加了其他的产品作为对 Red Hat Enterprise Linux 的自然
延伸。JBoss 是一个中间件产品,主要用来将基于 Java 的应用程序部署到 Internet 或者公司内部互联
网。而 Red Hat Enterprise Virtualiztion 由虚拟主机、管理员以及允许安装、运行、管理、迁移和退出
大型虚拟计算环境的客户计算机组成。
近几年,Red Hat 将其项目组合扩展到云计算。RHEL OpenStack Platform 和 Red Hat Enterprise
Virtualization 为运行和管理虚拟机提供了完整的平台。Red Hat Cloudforms 是一个云管理平台。而
RHEL Atomic 以及 Docker 格式的 Linux 容器为云提供了对应用程序进行集装箱化操作的方法。
很多人尝试通过使用免费获得的 RHEL 源代码并对其进行重建和更名来克隆 RHEL。其中,
Orcale Linux 就是根据 RHEL 源代码构建的,但目前只提供了一个无法兼容的内核。此外,CentOS
也是一个根据 RHEL 源代码构建的社区赞助的 Linux 发行版本。目前,Red Hat 接管了对 CentOS 项
目的支持。
针对本书中的许多示例,选择了使用 Red Hat Enterprise Linux,因为如果想要从事关于 Linux 系
统方面的工作,就需要学会管理 RHEL 系统。然而,如果你刚开始学习 Linux,也可以使用 Fedora
作为一个比较好的入口点来学习使用和管理 RHEL 系统所需的相同技能。
2. 使用 Fedora
RHEL 是商业化、稳定且受支持的 Linux 发行版本。而 Fedora
却是由 Red Hat 公司所发起的免
费且先进的 Linux 发行版本。Fedora 是 Red Hat 用来创建 Linux 开发社区并鼓励那些想要免费的
Linux 用于个人使用以及快速开发的人而开发的一款
Linux 系统。
Fedora 包括 16 000 多个软件包,其中大部分使用了最新的可用开源技术。作为一名用户,可以
免费试用 Fedora 中最新的 Linux 桌面、服务器以及管理界面。而作为一名软件开发人员,则可以使
用最新的 Linux 内核和开发工具来创建和测试自己的应用程序。因为 Fedora 主要关注的是最新技术,
所以很少关注稳定性。因此如果想要一切工作正常,可能还需要完成一些额外的工作,此外,并不
是所有的软件都完全成熟。
然而,我建议针对本书的大多数示例使用 Fedora,主要理由如下:
●
可以使用 Fedora 作为 Red Hat Enterprise Linux 的一个试验场。Red Hat 在将新的应用程序移
植到 RHEL 之前,都会在 Fedora 上进行测试。通过使用 Fedora,可以学习使用为 Red Hat
Enterprise Linux 所开发的功能所需的技能。
● Fedora 比 RHEL 更便于学习 Linux,此外,它也包括 RHEL 中许多更先进且为企业准备的
工具。
● Fedora 是免费的,不仅在于可以自由使用,而且不需要支付费用。
第 1 章
开始使用 Linux
15
Fedora 在那些开发开源软件的开发人员中非常受欢迎。然而,在过去几年里,另一个 Linux 发
行版本吸引了许多初学者的注意:即 Ubuntu。
1.4.2 选择 Ubuntu 或者其他 Debian 发行版本
与 Red Hat Linux 类似,Debian GNULinux 发行版本也是一个擅长包装和管理软件的早期 Linux
发行版本。Debian 使用了 deb 包装格式和工具来管理系统中的所有软件包。此外,Debian 还因为稳
定性而名声在外。
许多 Linux 发行版本的根源都可以追溯到 Debian。根据 distrowatch 网站http:distrowatch.com
的调查,大约 130 多个现有的 Linux 发行版本可以追溯到 Debian。如今流行的、基于 Debian 的发行
版本包括 Linux Mint、elementary OS、Zorin OS、LXLE、Kali Linux 等。然而,在众多派生自 Debian
的发行版本中,取得最大成功的当属 Ubuntuhttp:www.ubuntu.com。
通过依赖稳定的 Debian 软件开发和包装技术,Ubuntu Linux 发行版本不断发展并添加了 Debian
所不具备的相关功能。在吸引新用户方面,Ubuntu 项目增加了一个简单的图形化安装程序以及易于
使用的图形化工具。此外,Ubuntu 项目还重点关注全功能的桌面系统,并仍然提供了流行的服务器
软件包。
在创建运行 Linux 的新方法方面,Ubuntu 也是一个改革者。通过使用 Ubuntu 所提供的 CD 或
者 USB 驱动器,可以在几分钟之内安装并运行 Ubuntu。通常,CD 中包括的内容是可以在 Windows
中运行的开源应用程序,比如 Web 浏览器和文字处理软件。对于某些人来说,可以非常容易地从
Linux 转换到 Windows。
如果你正在使用 Ubuntu,请不要担心。本书中所包含的大部分主题都可以像在 Fedora 或 RHEL
中那样在 Ubuntu 中正常工作。本书中增加了对 Ubuntu 的介绍内容。
1.5 利用 Linux 找到职业机会
如果想要为一个与计算机相关的研究项目或者技术公司创造一种理念,那么应该从什么地方开
始呢?首先应该有一个想法。然后寻找所需的工具来探究并最终实现自己的想法。此外,在创建过
程中,还可以寻求他人的帮助。
如今,创办一个类似于 Google 或者 Facebook 之类的公司的硬成本仅仅包括一台计算机、连接
到 Internet 以及用来保持整晚编写代码所需的足够的含咖啡因的饮料。如果你拥有改变世界的想法,
那么可以使用 Linux 以及数以千计的软件包来帮助实现自己的梦想。开源世界还包括可以帮助你的
开发人员、管理人员以及用户社区。
如果想要加入一个现有的开源项目,那么有很多的项目可以参加,这些项目通常需要寻找相关
人员来编写代码、测试软件或者编写文档。在这些项目中,你会找到使用软件的人,改进软件的人,
而这些人通常愿意分享他们的专业知识来帮助你。
但不管你是寻求开发下一个伟大的开源软件项目,还是只想获取所需的技能来争取高薪的
Linux 管理员或者开发工作,知道如何安装和维护
Linux 系统以及如何确保系统安全都是大有裨
益的。
Linux 职业的前途如何呢?来自 Linux
Foundationhttp:www.linuxfoundation.orgpublications
linux-foundationlinux-adoption-trends-end-user-report-2014的2014 年 Linux 工作报告对 1100 多位
第Ⅰ部分
入 门
16
招聘经理以及 4000 多名 Linux 专业人员进行了问卷调查。Linux Foundation 的调查结果是:
●
当务之急急需的是 Linux 人才 77%的招聘经理认为,招聘具有 Linux 专业知识的人是当
务之急。
●
职业发展 就职业发展机会来说,86%的 Linux 专业人员认为 Linux 知识增加了职业发展
机会。
●
更多的 Linux 招聘
对招聘经理的调查发现,46%的人说他们计划比上一年增加 Linux
人才的招聘数量比上一年提高 3 个百分点。
从这份调查报告中可以看出,Linux 正在持续发展,并且增加了对 Linux 专业技术的需求。那
些已经开始使用 Linux 的公司继续向前发展。它们扩大了 Linux 的使用范围,并且发现 Linux 所提
供的节约成本、安全性以及灵活性使其成为一个非常好的投资。
1.5.1 了解如何利用 Linux 挣钱
开源爱好者相信,相对于专有开发模型,开源软件开发模型可以创建更好的软件。从理论上讲,
对于那些想要开发自用软件的公司来说,可以在其他公司的贡献的基础之上作出自己的贡献,从而
得到一个更好的最终产品,同时还节约了开发费用。
与从前相比,那些想要通过出售软件挣钱的公司需要更具有创造性。虽然可以出售自己所创建
的包含了 GPL 软件的软件,但必须向前传递该软件的源代码。当然,其他人可以重新编译产品,使
用甚至转售你的产品,而不必付费。下面列举了不同公司用来处理该问题的不同方法:
●
软件订阅 Red Hat 公司在订阅的基础上出售它的 Red Hat Enterprise Linux 产品。用户每
年只需支付一定数量的费用,就可以获得运行 Linux 所需的二进制码因此用户不必自己进
行编译,此外,还可以获取有保障的支持,用来跟踪计算机中硬件和软件的工具,访问公
司知识库以及其他资源。
虽然 Red Hat 的 Fedora 项目包含了许多相同的软件,并且也是以二进制的形式提供,但却
无法保证这些软件的可用性以及软件未来的更新。对于小公司或者个人用户来说,可以冒
险使用 Fedora当然 Fedora 本身也是一个非常出色的操作系统,但对于那些需要运行任务
关键性应用程序的大公司来说,还是会为 RHEL 支付相关费用。
●
培训和认证 随着 Linux 系统在政府和大企业中的广泛采用,需要大量的专业人员来支持
这些系统。为此,Red Hat 提供了培训课程和认证考试来帮助系统管理员熟练使用 Red Hat
Enterprise Linux 系统。特别是
RHCERed Hat Certified Engineer和 RHCSARed Hat Certified
System Administrator已经变得非常流行http:www.redhat.comcertification。稍后将更详细
地介绍 RHCERHCSA。
此外,Linux Professional Institutehttp:www.lpi.org、CompTIAhttp:www.comptia.org以及
Novellhttps:training.novell.com也推出了自己的认证程序。其中 LPI 和 CompTIA 是专业计
算机行业协会。而 Novell 则主要以 SUSE 上的培训和认证为中心。
●
赏金 软件赏金是开源软件公司非常喜欢使用的一种挣钱方式。假设你正在使用 XYZ 软
件包并且马上需要使用一个新功能,那么通过向项目或者其他软件开发人员支付一笔软件
赏金,就可以将所需的改进移到队列的前头。而所支付的软件将继续拥有开源许可证,相
对于从零开始创建项目所需的费用,软件赏金只是很少的一部分。
●
捐款 很多开源项目接收来自使用了它们项目代码的个人或开源公司的捐款。令人惊讶
的是,许多开源项目支持一两个开发人员,并且完全依赖捐款来运行。
第 1 章
开始使用 Linux
17
●
盒装套装、马克杯和 T 恤
一些开源项目拥有在线商店。在该商店中,可以购买盒装的
套装但有些人仍然喜欢物理 DVD 和文档的硬盘拷贝以及各种马克杯、T 恤、鼠标垫和其
他物品。如果你非常喜欢某一个项目,看在上帝的份上,请购买一件 T 恤吧!
在此无法完全列举出所有的相关举措,因为每天都有更多富有创造性的方法被创造出来,以支
持那些创建了开源软件的人。但请记住,有许许多多的人已经成为开源软件的贡献者和维护者,因
为他们自己也需要开源软件。每个人为开源软件所做的贡献可以从他人所做的贡献中得到回报。
1.5.2 获得 Red Hat 认证
虽然本书并不会重点介绍如何获得 Linux 认证,但会讲授通过流行的 Linux 认证考试所需要掌
握的一些知识。特别是重点介绍针对 Red Hat Enterprise Linux 7 的 RHCE 和 RHCSA 考试。
如果你正在寻找一份 Linux IT 专业方面的工作,那么通过 RHCSA 或者 RHCE 认证已经成为应
聘成功的必要条件或者优先选择的条件。其中,RHCSA 考试EX200提供了基本的认证,相关的内
容包括配置磁盘和文件系统、添加用户、设置一个简单的 Web 和 FTP 服务器以及添加交换空间等。
而 RHCEEX300则对更高级的服务器配置以及安全功能的高级内容进行测试,比如 SELinux 和防
火墙等。
虽然那些讲授 RHCERHCSA 课程和特定考试的人就像我在过去的三年里所做的那样并不允
许介绍考试到底考什么,但 Red Hat 介绍了该考试是如何进行的,同时还列举了考试中可能涉及的
相关主题。可以通过下面的网址找到这些考试目标:
● RHSCA http:www.redhat.comenservicestrainingex200-red-hat-certified-system-administratorrhcsa-
exam
● RHCE
http:www.redhat.comenservicestrainingex300-red-hat-certified-engineer-rhce-exam
如考试目标所述,RHCSA 和 RHCE 考试是基于实际表现的,这也就意味着应试者被给定某些
任务,并且必须在实际的 Red Hat Enterprise Linux 系统上完成这些任务,就像在完成某些工作一样。
然后再根据所获得的这些任务的结果进行评分。
如果要参加考试,请经常核对一下这些考试目标,因为它们有时会发生变化。此外,还需要记
住的是,RHCSA 是一个独立的认证;但只有通过 RHCSA 和 RHCE 考试,才可以获得 RHCE 认证。
通常,这两门考试在同一天举行。
可以在 http:training.redhat.com 上报名参加 RHCSA 和 RHCE 培训和考试。全美国以及全球的
重要城市都提供了培训和考试服务。下一节将介绍完成这些考试所需掌握的技能。
1. RHCSA 主题
如前所述,RHCSA 考试主题包括了基本的系统管理技能。在 RHCSA 考试目标网站中已经列举
了当前针对 Red Hat Enterprise Linux 7 的考试主题为了防止考试主题发生变化,请再次检查考试目
标网站,并且在本书中可以学习这些内容:
●
了解基本工具
需要全面了解命令 Shellbash的应用知识,包括如何使用正确的命令语法
以及完成输入输出重定向 。需要知道如何登录到远程和本地系统以及如何创建、编
辑、移动、复制、链接、删除和更改文件许可和所有者。此外,还应该知道如何在手册页
和usrsharedoc 中查找信息。这些内容将在本书的第 3 章和第 4 章详细介绍。而第 5 章则讲
述如何编辑和查找文件。
第Ⅰ部分
入 门
18
●
操作运行系统
在该部分中,必须了解 Linux 启动过程、进入单用户模式、关闭、重启和
更改不同的目标以前被称为运行级别。你需要识别进程并根据需要更改 nice 值或者终止进
程。此外,还必须能够启动和终止虚拟机和网络服务,以及找到并解释日志文件。第 15 章
描述如何更改目标和运行级别以及管理系统服务。第 6 章介绍管理和更改进程的相关信息。
第 26 章描述如何管理虚拟机。日志记录的相关内容则在第 13 章介绍。
●
配置本地存储
设置磁盘分区包括创建物理卷并进行配置,以便用于 LVMLogical
Volumn Management,逻辑卷管理或者加密LUKS。此外,还可以将这些分区设置为文件
系统或者可以在启动时挂载或启用的交换空间。第 12 章将详细介绍磁盘分区和 LVM,而
LUKS 以及其他加密主题则在第 23 章中介绍。
●
创建和配置文件系统
创建和自动挂载不同类型的文件系统,包括常见的 Linux 文件系统
ext2、ext3 或者 ext4,LUKS 加密文件系统以及网络文件系统NFS 和 CIFS。使用设置组
ID 位功能和 ACLAccess
Control List,访问控制列表创建协作目录。此外,还必须能够使
用 LVM 扩展逻辑卷的大小。文件系统主题将在第 12 章介绍。而 CIFS 和 NFS 则分别在第
19 章和第 20 章介绍。
●
部署、配置和维护系统
该部分包含了一系列主题,包括配置网络、创建 cron 任务、设
置默认的运行级别以及安装 RHEL 系统。此外,必须能够配置一个简单的 HTTP 和 FT 服务
器。而对于软件包,则能够从 Red Hat 网络、远程存储库或者本地文件系统中安装程序包。
最后,还必须可以正确地安装新的内核,并在系统开始时正确选择需要启动的内核。第 13
章将描述 cron 工具。而 Web 服务器HTTP和 FTP 服务器则分别在第 17 章和第 18 章介绍。
●
管理用户和组
必须知道如何添加、删除和更改用户账户和组账户,以及什么是密码老
化并学会使用 change 命令。还必须知道如何配置一个系统,从而通过连接一个 LDAP 目录
服务器进行身份验证。第 11 章将介绍配置用户和组的相关内容。
●
管理安全性 必须基本了解如何设置一个防火墙firewalld、system-config-firewall 或者
iptables以及如何使用 SELinux。必须能设置 SSH 来完成基于密钥的身份验证。可以在第 24
章学习 SELinux 的相关内容,而防火墙则在第 25 章介绍。第 13 章将讲述基于密钥的身份
验证。
本书将介绍其中的大部分主题。对于本书中没有介绍的功能,可以参阅 Red Hat Enterprise Linux
标题下的 Red Hat 相关文档http:access.redhat.comdocumentation。特别是系统管理员指南System
Administratorss Guide中包含了许多与 RHCSA
相关主题的介绍。
2. RHCE 主题
RHCE 考试主题包含了更高级的服务器配置,以及各种用来确保 Red Hat Enterprise Linux 7 中服
务器安全的安全功能。此外,还需要检查一下 RHCE 考试目标网站,以便确定考试所需要学习主题
的最新信息。
系统配置和管理
RHCE 考试中针对系统配置和管理的需求包含了一系列主题,包括:
●
绑定 设置绑定以聚合网络链接。第
14 章将介绍绑定。
●
路由 ID 流量
为特定的网络地址设置静态路由。第 14 章将介绍如何设置自定义路由。
第 1 章
开始使用 Linux
19
●
防火墙 允许或者阻止系统中选定端口的流量,这些端口提供了诸如 Web、FTP 和 NFS
之类的服务,此外还可以根据发起人的 IP 地址允许或者阻止访问相关服务。第 25 章将介绍
防火墙的相关内容。
●
内核可调参数
学会使用etcsysctl.conf 文件和 sysctl 命令设置内核可调参数。第 14 章将
简要描述一下如何使用etcsysctl.conf 文件更改procsystem 中的 IP 转发设置。
● Kerberos 身份验证
使用 Kerberos 对 RHEL 系统中的用户进行身份验证。第 11 章将介
绍如何将一个系统的身份验证添加到一个 Kerberos 服务器中。
●
配置 iSCSI
将系统设置为一个 iSCSI 目标和发起人,并在启动时挂载一个 iSCSI 目标。
如果想了解更多信息,请参阅 Red Hat Storage Administrator Guidehttps:access.redhat.com
documentationen-USRed_Hat_Enterprise_Linux7htmlStorage_Administration_Guidech-iscsi.
html。
●
系统报告 使用诸如 sar 之类的功能来报告关于内存的系统使用情况、磁盘访问、网络流
量以及处理器利用率。第 13 章将介绍如何使用 sar 命令。
● Shell 脚本
创建一个简单的 Shell 脚本,以便以不同的方式获取输入和生成输出。第 7
章将介绍 Shell 脚本。
●
远程日志 通过配置 rsyslogd
设备来收集日志消息,并将它们分发到一个远程的日志服务
器中。此外,配置一个远程日志服务器设备,以便收集来自登录客户端的日志消息。第 13
章将讲述如何使用 rsyslogd 实现远程日志。
● SELinux
通过在执行模式中使用安全性增强的 Linux,可以确保下一节所介绍的所有服
务器配置的安全。第 24 章将介绍 SELinux。
安装和配置网络服务
针对下面所列举的每一个网络服务,都需要确保正确完成以下工作:安装服务所需的程序包;
设置 SELinux 从而允许访问服务;对服务进行设置,以便在系统启动时启动;确保主机或用户所使
用的服务的安全使用 iptables、TCP Wrappers 或者服务本身所提供的相关功能;进行相关配置以便
完成基本操作。所包含的服务如下所示:
● Web 服务器
配置一个 ApacheHTTPHTTPS服务器。必须能够设置一个虚拟主机,部
署一段 CGI 脚本,使用私有目录以及允许一个特定的 Linux 组来管理内容。第 17 章将描述
如何配置一个 Web 服务器。
● DNS 服务器
设置一个 DNS 服务器绑定包,以便充当一个可以将 DNS 查询转发到另一
台 DNS 服务器的缓存域名服务器。不必配置主从区。第 14 章将从客户端的角度来描述 DNS。
如果想要了解更多关于使用 Bind 配置 DNS 服务器的信息,请参阅 RHEL Networking
Guidehttps:access.redhat.comdocumentationen-USRed_Hat_Enterprise_Linux7html-single
Networking_Guide。
● NFS 服务器
配置一个 NFS 服务器,以便与特定的客户端系统共享特定目录,从而使这
些目录用于团队协作。第 20 章将介绍 NFS。
● Windows 文件共享服务器
设置 LinuxSamba向特定的主机和用户提供 SMB 共享。同时
为团队协作配置该共享。第 19 章将讲解如何配置 Samba。
● Mail 服务器
对后缀或者 Sendmail 进行配置,从而接收来自本地主机之外的电子邮件,
并将其转发到一个智能主机。本书将不会讲授 Mail 服务器配置的相关问题并且也不应该轻
第Ⅰ部分
入 门
20
率地进行讲授。如果想要了解更多这方面的相关信息,可以参阅 RHEL 系统管理员指南
https:access.redhat.comdocumentationen-USRed_Hat_Enterprise_Linux7html-singleSystem
_Administrators_Guideindex.html#ch-Mail_Servers。
●
安全 Shell 服务器
配置 SSH 服务sshd,从而允许远程登录到本地系统以及进行基于密
钥的身份验证。另外,还需要配置 sshd.conf 文件。第 13 章将介绍如何配置 sshd 服务。
●
网络时间服务器
配置一个网络时间协议服务器Net Time Protocol server,ntpd,从而与
其他 NTP 服务器保持时间同步。关于配置 ntpd 服务的相关信息,请参阅第 26 章。
●
数据库服务器
使用不同的方法配置并管理 MariaDB 数据库。可以从 MariaDB.org 网站
学习如何配置 MariaDBhttps:mariadb.comkbenmariadbdocumentation。
如前所述,虽然在 RHCE 考试中还包括其他任务,但是请记住,大部分的任务都是配置服务器,
然后使用任何需要的技术确保这些服务器的安全。这些技术包括防火墙规则iptables、SELinux、TCP
Wrappers 或者任何针对特定服务而内置于配置文件中的功能。
1.6 小结
Linux 是一种由来自全世界软件开发人员的社区所构建并且由其创建者 Linus Torvalds 所领导的
操作系统。它最初源自 UNIX 操作系统,但多年来,在普及程度以及功能方面已经远远超过了 UNIX。
Linux 操作系统的历史可以追溯到早期的 UNIX 系统,当时该系统免费向大学分发,并且由诸
如 BSD 之类的创始人不断提高。Free Software Foundation 开发了许多创建一个完全免费的、类似于
UNIX 的操作系统所需的组件。而 Linux 内核本身就是完成该工作所需的主要组件。
大多数 Linux 软件项目都被一组许可证所保护,而这些许可证则属于 Open Source Initiative。其
中最卓越的许可证是 GNU Public LicenseGPL。诸如 Linux Standard
Base 之类的标准以及世界级的
组织和企业比如 Canonical 公司和 Red Hat 公司使 Linux 在未来成为一款稳定且生产性操作系统。
学习关于如何使用和管理 Linux 系统的基础知识将有助于胜任与 Linux 工作相关的各个方面。
后续每一章都会提供一系列练习,可以通过这些练习检验自己所学到的知识。这也就是为什么要更
好地学习 Linux 系统,以便可以顺利地完成每一章的示例以及习题。
下一章将通过介绍如何获取和使用一个 Linux 桌面系统来学习如何开始使用 Linux。
|
|