本文pdf下载:第1章 动手部署一台Linux操作系统 – 云图网

本章从虚拟机软件的安装开始讲起,完整演示VM虚拟机与RHEL 8系统的安装部署全过程,并详实地记录每一步的配置步骤(想出错都难),确保大家能从0到1地拥有一台属于自己的Linux操作系统。

本章还介绍了源代码包、RPM、Yum及DNF安装方式的区别,各种常见安装命令的作用及格式,以及RHEL 7/8系统中systemd初始化进程的特性与使用方法,最后以破解root密码小实验来结束本章的内容。

1.1 准备您的工具

所谓“工欲善其事,必先利其器”,在学习本书的内容之前,首先需要有一台Linux操作系统才行。不过请放心,您不需要为了练习实验而特意再购买一台新电脑,下文会讲解如何通过虚拟机软件来模拟出一整套的硬件平台,用以满足本书中所有实验的需求。虚拟机是能够让用户在一台真实物理机上同时模拟出多个操作系统的软件。因为在学习过程中免不了每天要“折磨”我们的操作系统,由此带来的数据丢失或者系统的重装也会让人头疼,还会浪费我们的宝贵时间。而通过虚拟机软件安装的系统不仅可以模拟出硬件资源,把实验环境与真机文件分离以保证数据的安全,更酷的是当操作失误或配置出错导致系统异常的时候,可以快速把操作系统还原到出错前的快照状态—这大约只需要5~10秒(在真实的物理机上重装系统可能得至少30分钟)。

最近几年在讲课时,总会发现同学们使用的实验环境五花八门,有CentOS、Debian,还有老版本的RHEL系统等,结果每次给他们排错时都费心劳力,苦不堪言。虽然RHEL系统的相关内容基本也可以通用于其他的Linux发行版本,但初次学习时由于大家还不具备排错能力,在这样的情况下,使用的Linux系统能够保持一致是最好的。就像我们去报名学习日式寿司的制作,老师用柳刃,学生非要用菜刀,结果寿司肯定会被切得稀巴烂。聪明的学生在学习时一定要采用跟老师一样的工具和环境,这样出现问题后可以首先排除外在干扰因素,以便快速定位错误。等技术学得足够扎实了,到了生产环境中自然也就具备了随心选择工具和环境的能力。

Tips

VmwareWorkStation  16 ——虚拟机软件(必需)

这是一款功能强大的桌面虚拟计算机软件,能够让用户在单一主机同时运行多个不同的操作系统;同时支持实时快照、虚拟网络、拖曳文件以及PXE等强悍功能。

RedHatEnterpriseLinux [RHEL] 8 ——红帽操作系统(必需)

由开源软件及全球服务型系统开发商红帽公司出品,是一款相当稳定、出色的Linux操作系统。

1.2 安装配置VM虚拟机

VMware WorkStation虚拟机(简称VM虚拟机)软件是一款桌面计算机虚拟软件,让用户能够在单一主机上同时运行多个不同的操作系统。每个虚拟操作系统的磁盘分区、数据配置都是独立的,不用担心会影响到自己电脑中原本的数据。而且VM还支持实时快照、虚拟网络、文件拖曳传输以及网络安装等方便实用的功能。此外,还可以把多台虚拟机构成一个专用局域网,使用起来很方便。

总结来说,Linux系统对硬件设备的要求并不高,而虚拟机功能丰富可靠,可以帮助我们节省时间和金钱,因此推荐大家使用虚拟机来安装Linux系统。

可能会有读者有疑问:“为什么要用收费的虚拟机产品来搭建实验环境,而不是用一些免费的开源虚拟机软件呢?”本书前言中讲到,我们学习Linux系统的原因不是因为它免费,也不是因为它开源,而是因为Linux系统真的很好用,这个结论同样也适用于VMware Workstation这款产品。虽然网上总能找到这款软件的免费序列号,但刘遄老师真的很不推荐使用盗版软件。既然您手里的这本《Linux就该这么学(第2版)》都可以从本书的配套站点上免费下载,那就请大家把原本要买这本书的钱捐助给开源组织和真正用心做产品的公司,让世界美好的脚步更快一些吧。

将上面提到的Vmware Workstation 16虚拟机软件安装包下载到电脑中,用鼠标双击该软件包,运行后即可看到如图1-1所示的安装向导初始界面(大约需要5~10秒钟)。

在虚拟机软件的安装向导界面单击“下一步”按钮,如图1-2所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-1  安装向导初始界面

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-2  虚拟机的安装向导

在最终用户许可协议界面选中“我接受许可协议中的条款”复选框,然后单击“下一步”按钮,如图1-3所示。

自定义虚拟机软件的安装路径。一般情况下无须修改安装路径,但如果您担心C盘容量不足,则可以考虑修改安装路径,将其安装到其他位置。然后选中“增强型键盘驱动程序”复选框,单击“下一步”按钮,如图1-4所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-3  接受许可条款

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-4  选择虚拟机软件的安装路径

根据自身情况适当选择“启动时检查产品更新”与“加入VMware客户体验提升计划”复选框,然后单击“下一步”按钮,如图1-5所示。

为了方便今后更便捷地找到虚拟机软件的图标,建议选中“桌面”与“开始菜单程序文件夹”复选框,然后单击“下一步”按钮,如图1-6所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-5  用户体验设置

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-6  创建快捷方式

一切准备就绪后,单击“安装”按钮,如图1-7所示。

进入安装过程,此时要做的就是耐心等待虚拟机软件的安装过程结束,如图1-8所示(全程大约需要3~5分钟)。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-7  准备开始安装虚拟机

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-8  等待安装完成

虚拟机软件安装完成后,再次单击“完成”按钮,结束整个安装工作,如图1-9所示。

双击桌面上生成的虚拟机快捷图标,在弹出的如图1-10所示的界面中,输入许可证密钥(如果已经购买了的话)。大多数同学此时应该是没有许可证密钥,所以我们当前选中“我希望试用VMware Worksatation 16 30天”单选按钮,然后单击“继续”按钮。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-9  安装向导完成界面

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-10  许可证验证界面

在弹出“欢迎使用VMware Workstation 16”界面后,无须任何犹豫,直接单击“完成”按钮,如图1-11所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

 图1-11  虚拟机软件的感谢界面

再次在桌面上双击快捷方式图标,此时便看到了虚拟机软件的管理界面,如图1-12所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-12  虚拟机软件的管理界面

注意,在第一次安装完虚拟机软件后,还不能立即安装Linux系统,因为还缺少重要的一步—设置硬件信息。设置硬件信息相当于为Linux系统设置一个硬件牢笼,限定它能够使用的最大硬盘和内存容量、CPU核心数量、系统镜像位置、网络模式等硬件信息。大家可以想象成是自己去组装一台电脑,只有把虚拟机内系统的硬件资源都模拟出来(组装完毕)后才能正式步入Linux系统的安装之旅。

VMware Workstation的强大之处在于不仅可以调取真实的物理设备资源,而且还可以模拟出多块硬盘或网卡设备,即便使用五六块硬盘也不用担心(详见第7章),我们弹指间就能创建出来,完全能够满足大家对学习环境的需求。因此再次强调,真的不用特意购买新电脑。


在如图1-12所示的管理界面中,单击“创建新的虚拟机”按钮,并在弹出的“新建虚拟机向导”界面中选择“自定义(高级)”单选按钮,然后单击“下一步”按钮,如图1-13所示(这样我们可以更充分地了解这台新系统)。

由于这是一个全新安装的系统,所以不必担心虚拟机的兼容性问题,这里直接在“硬件兼容性”下拉列表中选择“Workstation 16.x”,然后单击“下一步”按钮,如图1-14所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-13  新建虚拟机向导

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-14 设置硬件兼容性

进入如图1-15所示的界面,选中“稍后安装操作系统”单选按钮,然后单击“下一步”按钮。

在近几年的讲课过程中真是遇到了很多不听话的学生,明明要求选择“稍后安装操作系统”,结果非要选择“安装程序光盘映像文件”,并把下载好的RHEL 8系统的镜像选中。这样一来,虚拟机会通过默认的安装策略部署最精简的Linux系统,而不会再向您询问安装有关的配置信息,导致最终系统与实验环境有很大的差别。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-15  设置系统的安装来源

在图1-16中,将客户机操作系统的类型选择为“Linux”,版本选择为“Red Hat Enterprise Linux 8 64位”,然后单击“下一步”按钮。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-16  选择操作系统的版本

填写“虚拟机名称”字段,名称可以自行发挥。建议为“位置”字段选择一个大容量的硬盘分区,最少要有20GB以上的空闲容量。然后再单击“下一步”按钮,如图1-17所示。

设置“处理器数量”和“每个处理器的内核数量”,大家可以根据自身电脑的情况进行选择。可以在网络上搜索一下自己的CPU处理器的型号信息,或者在Windows系统中打开“任务管理器”,然后访问“性能”选项卡,该选项卡右下侧的逻辑处理器数量就是您的CPU内核数量。如果上述方法都不奏效,可以暂时将处理器和内核数量都设置成1(见图1-18),后期再随时修改,不影响实验。搞定后单击“下一步”按钮。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-17  命名虚拟机及设置安装路径

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-18 设置CPU处理器信息

设置分配给虚拟机的内存值。如果物理机的内存小于4GB,则建议分配给虚拟机1GB;如果物理机的内存大于4GB(不论是8GB还是更大),则建议分配给虚拟机2GB,如图1-19所示。为虚拟机分配过多的内存不会对实验结果有直接影响,而且超过2GB就可能存在浪费现象了。

VMware Workstation这款虚拟机软件为用户提供了3种可选的网络模式,分别为“使用桥接网络”“使用网络地址转换(NAT)”与“使用仅主机模式网络”。

使用桥接网络:相当于在物理机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。

使用网络地址转换(NAT):让VM虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网;在物理机中对应的物理网卡是VMnet8。

使用仅主机模式网络:仅让虚拟机的系统与物理主机通信,不能访问外网;在物理机中对应的物理网卡是VMnet1。

由于当前不需要将虚拟机内的系统连接到互联网,所以这里将网络连接的类型设置为“使用仅主机模式网络”,然后单击“下一步”按钮,如图1-20所示。

图1-21所示为选择SCSI控制器的类型,这里使用“LSI Logic(推荐)”值,然后单击“下一步”按钮。

接下来设置虚拟磁盘类型,简单来说就是设置稍后新安装系统的硬盘接口类型。这里我们选择工作中更常使用的SATA接口类型,然后单击“下一步”按钮,如图1-22所示。此处请尽量与老师保持一致,如果选择了IDE与NVMe接口类型的磁盘,则在第6章的实验中磁盘名称不是/dev/sda,这容易让新手产生疑惑。

由于这是一台全新安装的操作系统,不存在已有数据需要恢复的问题,所以直接选择“创建新虚拟磁盘”单选按钮,然后单击“下一步”按钮,如图1-23所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-19 设置内存分配量

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-20 设置网络类型

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-21 设置I/O控制器类型

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-22 设置虚拟磁盘类型

将虚拟机系统的“最大磁盘大小”设置为20.0GB(默认值),这是限定系统能够使用的最大磁盘容量,并不是立即占满这部分空间。如果想让磁盘拥有更好的性能,这里可以选中“立即分配所有磁盘空间”复选框。另外,如果同学们后续要经常移动这台虚拟机的话,可以选中“将虚拟磁盘拆分成多个文件”单选按钮;如果不确定今后是否要经常移动的话,不妨也将虚拟磁盘进行拆分,这对实际操作无任何影响。然后单击“下一步”按钮,如图1-24所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-23 创建新虚拟磁盘

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-24 设置最大磁盘容量

设置磁盘文件的名称,这里完全没有必要修改,因此直接单击“下一步”按钮,如图1-25所示。

当虚拟机的硬件信息在基本设置妥当后,VM安装向导程序会向让我们进行确认。由于还有几处信息需要修改,所以这里单击“自定义硬件”按钮,如图1-26所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-25 设置磁盘文件名称

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-26 配置信息总览

单击“CD/DVD(SATA)”选项,在右侧“使用ISO映像文件”下拉列表中找到并选中此前已经下载好的RHEL 8系统文件(即iso结尾的文件),不要解压,直接选中即可,如图1-27所示。

Tips

本书不包含实体光盘,系统镜像(映像)文件指的是通过本书前言中的网址下载的系统软件包。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-27 选中RHEL 8系统映像文件路径

顺手把USB控制器、声卡、打印机设备统统移除掉。移掉声卡后可以避免在输入错误后发出提示声音,确保自己在今后的实验中思绪不被打扰。然后单击“确认”按钮,如图1-28所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-28 最终的虚拟机配置情况

当看到如图1-29所示的界面时,说明虚拟机已经被配置成功。稍微休息一下,接下来准备步入属于您的Linux系统之旅吧。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-29  虚拟机配置成功的界面

1.3 安装您的Linux系统

安装RHEL 8或CentOS 8系统时,您的电脑的CPU需要支持VT(Virtualization Technology,虚拟化技术)。这是一种能够让单台计算机分割出多个独立资源区,并让每个资源区按照需要模拟出系统的一项技术,其本质就是通过中间层实现计算机资源的管理和再分配,让系统资源的利用率最大化。

其实有个简单的方法来判断CPU是否支持VT—只要您的电脑不是五六年前购买的,或者只要价格不低于3000元,那么就肯定支持VT。大多数情况下,CPU对VT的支持默认都是开启的,只有当系统安装失败时才需要在物理机的BIOS中手动开启(一般是在物理机开机时多次按下F2或F12键进入BIOS设置界面),如图1-30所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统图1-30 物理电脑BIOS开启虚拟化

在虚拟机管理界面中单击“开启此虚拟机”按钮后数秒就看到RHEL 8系统安装界面了,如图1-31所示。在界面中,Test this media & install Red Hat Enterprise Linux 8.0.0和Troubleshooting的作用分别是校验光盘完整性后再安装以及启动救援模式。此时通过键盘的方向键选择Install Red Hat Enterprise Linux 8.0.0选项直接安装Linux系统。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-31  RHEL 8系统安装界面

接下来按回车键后开始加载安装镜像,所需时间大约在20~30秒,请耐心等待,如图1-32所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-32 安装向导的初始化界面

选择系统的安装语言后单击Continue按钮,如图1-33所示。

请读者不用担心英语的问题,因为在Linux系统中用的Linux命令具有特定的功能和意义,而非英语单词本身的意思。比如free的英文意思是“自由”“免费”,而free命令在Linux系统中的作用是查看内存使用量情况。因此即便是英语水平很高,只要没有任何Linux基础知识,在看到这些Linux命令后也需要重新学习。再者,把系统设置成英文后还可以锻炼一下英语阅读能力,不知不觉地就把Linux系统和英文一起学了,岂不是更好?!如果您执意选择中文安装语言,也可以在图1-33中进行选择。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-33 选择系统的安装语言

INSTALLATION SUMMARY(安装概要)界面是Linux系统安装所需信息的集合之处,如图1-34所示。该界面包含如下内容:Keyboard、Language Support、Time & Date、Installation Source、Software Selection、Installation Destination、KDUMP、Network & Host Name、SECURITY POLICY、System Purpose。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-34 安装概要界面

同学们稳住,不要慌,这里选项虽然多,但并不是全都需要我们手动配置一遍。其中的Keyboard和Language Support分别指的是键盘类型和语言支持,这两项默认都是英文的,不用修改(除非想换成中文界面)。

我们首先单击Time & Date按钮,设置系统的时区和时间。在地图上单击中国境内即可显示出上海的当前时间,确认后单击左上角的Done按钮。

图1-34中的Installation Source指的是系统是从哪里获取的。这里默认是我们的光盘镜像文件,所以不用修改。RHEL 8系统的软件模式(SOFTWARE SELECTION)界面可以根据用户的需求来调整系统的基本环境。例如,如果想把Linux系统用作基础服务器、文件服务器、Web服务器或工作站等,那么在系统安装过程中就会额外安装上一些基础软件包,以帮助用户尽快上手。这里首先单击Software Selection按钮,进入配置界面,如图1-35所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-35 设置系统模式

RHEL 8系统提供6种软件基本环境,依次为Server with GUI(带图形化的服务器)、Server(服务器)、Minimal Install(最小化安装)、Workstation(工作站)、Custom Operating System(自定义操作系统)和Virtualization Host(虚拟化主机)。只要检查当前模式是默认的Server with GUI即可,右侧额外的软件包不要选择,可以在后续学习过程中慢慢安装,这样才有乐趣。单击左上角的Done按钮。

返回到安装概要界面后,右侧第一个Installation Destination指的是想把系统安装到哪个硬盘。此时仅仅是让我们进行确认,不需要进行任何修改,单击左上角的Done按钮,如图1-36所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-36 设置系统安装设备

接下来进入KDUMP服务的配置界面。KDUMP服务用于收集系统内核崩溃数据,但是考虑到短时间内我们并不打算调试系统内核参数,所以这里建议取消选中Enable kdump复选框,这可以节省约160MB物理内存。随后单击左上角的Done按钮,如图1-37所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-37 关闭kdump服务

接下来进入NETWORK & HOST NAME配置界面。首先单击右上角的开关按钮,设置成ON(开启)状态。然后在左下角将Host Name(主机名称)修改为linuxprobe.com并单击右侧的Apply按钮进行确认,这样可以保证后续的命令提示符前缀一致,以免产生学习上的歧义。最后单击左上角的Done按钮,如图1-38所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-38 配置网络信息

返回到安装概要界面,剩下的SECURITY POLICY与System Purpose暂时不需要配置。单击界面右下侧的Begin Installation按钮开始正式安装操作系统,如图1-39所示。整个安装过程大约持续20~30分钟。第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-39 系统开始安装

在系统安装过程中,单击Root Password按钮,设置管理员的密码,如图1-40所示。这个操作非常重要,密码马上会在登录系统时用到。这里需要多说一句,当在虚拟机中做实验的时候,密码无所谓强弱,但在生产环境中一定要让root管理员的密码足够复杂,否则系统将面临严重的安全问题。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-40 设置管理员密码

继续单击User Creation按钮,为RHEL 8系统创建一个本地的普通用户。该账户的名字叫linuxprobe,密码统一设置为redhat。确认后单击Done按钮,如图1-41所示。

安装过程大约持续20~30分钟。一切完成后单击右下角的Reboot按钮重启系统,让之前配置的参数都能立即生效,如图1-42所示。

重启系统后将看到初始化界面。此时还剩最后两个选项需要我们进行确认,即License Information和Subscription Manager,如图1-43所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-41 创建普通用户

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-42 安装完毕后等待重启

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-43 安装后的收尾工作

我们先说一下Subscription Manager。它指的是红帽产品订阅服务,是红帽公司的一项收费服务,我们暂时不需要,所以也就不用单击了。直接单击License Information按钮进入红帽产品许可信息界面,如图1-44所示。该界面中的内容大意是版权说明、双方责任、法律风险等。没什么好犹豫的,直接选中“I accept the license agreement”复选框,然后单击左上角的Done按钮即可。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-44 接受红帽许可协议

返回到初始化界面,单击FINISH CONFIGURATION按钮进行确认后,系统将会进行最后一轮的重启。在大约2分钟的等待时间过后,便能够看到如图1-45所示的登录界面了。为了保证在学习到第5章前不受权限的牵绊,请同学们务必单击用户下方的“Not listed?”,手动输入管理员账号(root)以及所设置的密码,如图1-46和图1-47所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-45 选择用其他用户登录

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-46 输入管理员账号

单击Sign In按钮,顺利进入到系统中,终于看到了欢迎界面。此时会有一系列的非必要性询问,例如语言、键盘、输入来源等信息,一路单击Next按钮即可。最终将会看到RHEL 8系统显示的欢迎信息,如图1-48所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-47 输入管理员密码

单击Sign In按钮,顺利进入到系统中,终于看到了欢迎界面。此时会有一系列的非必要性询问,例如语言、键盘、输入来源等信息,一路单击Next按钮即可。最终将会看到RHEL 8系统显示的欢迎信息,如图1-48所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-48 正式开始使用系统

单击“Start Using Red Hat Enterprise Linux”按钮便能进入到系统桌面了。至此,便完成了RHEL 8系统的全部安装和部署工作。

准备开始学习Linux系统吧。

1.4 安装软件的方法

在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件,只能采取编译源码包的方式。所以,早期安装软件是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供自身的源代码,还需要运维人员编译代码后自行解决软件之间的依赖关系。因此要安装好一个服务程序,运维人员不仅需要具备丰富的知识、高超的技能,还要有良好的耐心,这其中的艰辛将会在本书第20章让大家亲自感受一下。

总而言之,早期的Linux系统在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等软件操作时难度都非常大。RPM机制则正是为了解决这些问题而设计的。

RPM有点像Windows系统中的控制面板,会建立统一的数据库,详细记录软件信息并能够自动分析依赖关系。表1-1所示为一些常用的RPM软件包命令,此时还不需要记住它们,大致混个“脸熟”就足够了。

表1-1                                                 常用的RPM软件包命令

命令 作用
rpm -ivh filename.rpm 安装软件
rpm -Uvh filename.rpm 升级软件
rpm -e filename.rpm 卸载软件
rpm -qpi filename.rpm 查询软件描述信息
rpm -qpl filename.rpm 列出软件文件信息
rpm -qf filename 查询文件属于哪个RPM

但是,尽管RPM能够帮助用户查询软件之间的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件依然很繁琐。Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum软件仓库的技术拓扑如图1-49所示。

第1章 动手部署一台Linux操作系统第1章 动手部署一台Linux操作系统

图1-49  Yum软件仓库的技术拓扑图

Yum软件仓库中的RPM软件包可以是由红帽官方发布的,也可以是由第三方发布的,当然也可以是自己编写的。本书随书提供的系统镜像(需在本书配套站点中下载)内已经包含了大量可用的RPM红帽软件包,既用于安装系统,也用于配置软件仓库,后面会详细说明。表1-2所示为一些常见的Yum命令,当前只需对它们有一个简单印象即可。

表1-2                                                      常见的Yum命令

命令 作用
yum repolist all 列出所有仓库
yum list all 列出仓库中所有软件包
yum info 软件包名称 查看软件包信息
yum install 软件包名称 安装软件包
yum reinstall 软件包名称 重新安装软件包
yum update 软件包名称 升级软件包
yum remove 软件包名称 移除软件包
yum clean all 清除所有仓库缓存
yum check-update 检查可更新的软件包
yum grouplist 查看系统中已经安装的软件包组
yum groupinstall 软件包组 安装指定的软件包组
yum groupremove 软件包组 移除指定的软件包组
yum groupinfo 软件包组 查询指定的软件包组信息

原本以为故事到此就要结束了,可是人们发现Yum虽然解决了软件的依赖关系问题,但仍然还是存在分析不准确、内存占用量大、不能多人同时安装软件等硬伤。终于,在2015年随着Fedora 22系统的发布,红帽又给了我们一个新的选择—DNF。DNF实际上就是解决了上述问题的Yum软件仓库的提升版,行业内称之为Yum v4版本。

作为Yum软件仓库v3版本的接替者,DNF特别友好地继承了原有的命令格式,且使用习惯上也保持了一致。大家不用担心不会操作,我们来看一个例子。以前,安装软件用的命令是“yum install软件包名称”,那么现在则是“dnf install软件包名称”(也就是说,将yum替换成dnf即可)。

当然RHEL 8系统也照顾到了老用户的习惯问题,同时兼容并保留了yum和dnf两个命令,大家在实际操作中随意选择就好。甚至这两个命令的提示信息都基本一样,感知不到什么区别。

1.5 系统初始化进程

Linux系统的开机过程是这样的,即先从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统启动后的第一个正式服务,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。同学们可以将初始化进程粗犷地理解成从我们按下开机键到看见系统桌面的这个过程。初始化进程完成了一大半工作。

红帽RHEL 7/8系统替换掉了熟悉的初始化进程服务System V init,正式采用全新的systemd初始化进程服务。原本以为这对大家的日常使用影响不大,但许多服务管理命令都被替换了,因此如果您之前学习的是RHEL 5或RHEL 6系统,可能真有点不习惯。

Linux系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(unit),systemd用目标(target)代替了System V init中运行级别的概念,这两者的区别如表1-3所示。

表1-3                                   systemd与System V init的区别以及作用

System V init运行级别 systemd目标名称 systemd 目标作用
0 poweroff.target 关机
1 rescue.target 单用户模式
2 multi-user.target 多用户的文本界面
3 multi-user.target 多用户的文本界面
4 multi-user.target 多用户的文本界面
5 graphical.target 多用户的图形界面
6 reboot.target 重启
emergency emergency.target 救援模式

如果想要将系统默认的运行目标修改为“多用户的文本界面”模式,可直接用ln命令把多用户模式目标文件链接到/etc/systemd/system/目录:

[root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

如果有读者之前学习过RHEL 5/6系统,或者已经习惯使用service、chkconfig等命令来管理系统服务,那么现在就比较郁闷了,因为在RHEL 7/8系统中是使用systemctl命令来管理服务的。表1-4和表1-5所示为新老版本系统的对比,您可以先大致了解一下,后续章节中会经常用到它们。

表1-4                                   服务的启动、重启、停止、重载、查看状态等常用命令

老系统命令 新系统命令 作用
service foo start systemctl start httpd 启动服务
service foo restart systemctl restart httpd 重启服务
service foo stop systemctl stop httpd 停止服务
service foo reload systemctl reload httpd 重新加载配置文件(不终止服务)
service foo status systemctl status httpd 查看服务状态

表1-5                                   服务开机启动、不启动、查看各级别下服务启动状态等常用命令

老系统命令 新系统命令 作用
chkconfig foo on systemctl enable httpd 开机自动启动
chkconfig foo off systemctl disable httpd 开机不自动启动
chkconfig foo systemctl is-enabled httpd 查看特定服务是否为开机自启动
chkconfig –list systemctl list-unit-files –type=httpd 查看各个级别下服务的启动与禁用情况

图1-53  重置Linux系统的管理员密码