01 动手部署一台 Linux 操作系统
准备您的工具
工具准备齐全后请一定要校验完整性!!!
- VmwareWorkStation 16:虚拟机软件(必需)。这是一款功能强大的桌面虚拟计算机软件,能够让用户在单一主机同时运行多个不同的操作系统;同时支持实时快照、虚拟网络、拖曳文件以及 PXE 等强悍功能。
- RedHatEnterpriseLinux/RHEL 8 :红帽操作系统(必需)。由开源软件及全球服务型系统开发商红帽公司出品,是一款相当稳定、出色的 Linux 操作系统。
下载地址:软件资源库 | 《Linux 就该这么学》 (linuxprobe.com)
- 虚拟机是能够让用户在一台真实物理机上同时模拟出多个操作系统的软件。一般来讲,当前主流的硬件配置足以胜任虚拟机的安装需要。
- 建议大家无论经济条件是否允许,都不应该在学习期间把 Linux 系统部署到真机上面。因为在学习过程中免不了每天要 "折磨" 我们的操作系统,由此带来的数据丢失或者系统的重装也会让人头疼,还会浪费我们的宝贵时间。
- 通过虚拟机软件安装的系统不仅可以模拟出硬件资源,把实验环境与真机文件分离以保证数据的安全,更酷的是当操作失误或配置出错导致系统异常的时候,可以快速把操作系统还原到出错前的快照状态—这大约只需要 5 ~ 10 秒(在真实的物理机上重装系统可能得至少 30 分钟)。
安装配置 VM 虚拟机
- 同时运行多个系统:VMware WorkStation 虚拟机 (简称 VM 虚拟机) 软件是一款桌面计算机虚拟软件,让用户能够在单一主机上同时运行多个不同的操作系统。
- 数据独立:每个虚拟操作系统的磁盘分区、数据配置都是独立的,不用担心会影响到自己电脑中原本的数据。
- 实用功能多:VM 还支持实时快照、虚拟网络、文件拖曳传输以及网络安装等方便实用的功能。
- 专用局域网:还可以把多台虚拟机构成一个专用局域网,使用起来很方便。


自定义虚拟机软件的安装路径。一般情况下无须修改安装路径,但如果您担心 C 盘容量不足,则可以考虑修改安装路径,将其安装到其他位置。


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


- 在近几年的讲课过程中真是遇到了很多不听话的学生,明明要求选择 "稍后安装操作系统",结果非要选择 "安装程序光盘映像文件",并把下载好的 RHEL 8 系统的镜像选中。这样一来,虚拟机会通过默认的安装策略部署最精简的 Linux 系统,而不会再向您询问安装有关的配置信息,导致最终系统与实验环境有很大的差别。
- 填写 "虚拟机名称" 字段,名称可以自行发挥。建议为 "位置" 字段选择一个大容量的硬盘分区,最少要有 20GB 以上的空闲容量。

-
设置 CPU 处理器信息。设置 "处理器数量" 和 "每个处理器的内核数量",大家可以根据自身电脑的情况进行选择。可以在网络上搜索一下自己的 CPU 处理器的型号信息,或者在 Windows 系统中打开 "任务管理器",然后访问 "性能" 选项卡,该选项卡右下侧的逻辑处理器数量就是您的 CPU 内核数量。如果上述方法都不奏效,可以暂时将处理器和内核数量都设置成 1(见图 1),后期再随时修改,不影响实验。
-
设置分配给虚拟机的内存值。如果物理机的内存小于 4GB,则建议分配给虚拟机 1GB;如果物理机的内存大于 4GB(不论是 8GB 还是更大),则建议分配给虚拟机 2GB,如图 2 所示。

-
设置网络类型
- 使用桥接网络:相当于在物理机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
- 使用网络地址转换(NAT):让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网;在物理机中对应的物理网卡是 VMnet8。
- 使用仅主机模式网络:仅让虚拟机的系统与物理主机通信,不能访问外网;在物理机中对应的物理网卡是 VMnet1。
-
设置虚拟磁盘类型:这里我们选择工作中更常使用的 SATA 接口类型,如果选择了 IDE 与 NVMe 接口类型的磁盘,则在第 6 章的实验中磁盘名称不是
/dev/sda,这容易让新手产生疑惑。

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

- 当虚拟机的硬件信息在基本设置妥当后,VM 安装向导程序会向让我们进行确认。由于还有几处信息需要修改,所以这里单击 "自定义硬件" 按钮,如图 1。
- 顺手把 USB 控制器、声卡、打印机设备统统移除掉。移掉声卡后可以避免在输入错误后发出提示声音,确保自己在今后的实验中思绪不被打扰。然后单击 "确认" 按钮,如图 3 所示。
安装您的 Linux 系统

在界面中,Test this media & install Red Hat Enterprise Linux 8.0.0 和 Troubleshooting 的作用分别是校验光盘完整性后再安装以及启动救援模式。此时通过键盘的方向键选择 Install Red Hat Enterprise Linux 8.0.0 选项直接安装 Linux 系统。

Keyboard和Language Support分别指的是键盘类型和语言支持,这两项默认都是英文的,不用修改(除非想换成中文界面)。- 我们首先单击
Time & Date按钮,设置系统的时区和时间。在地图上单击中国境内即可显示出上海的当前时间,确认后单击左上角的Done按钮。 - RHEL 8 系统的软件模式(SOFTWARE SELECTION)界面可以根据用户的需求来调整系统的基本环境。例如,如果想把 Linux 系统用作基础服务器、文件服务器、Web 服务器或工作站等,那么在系统安装过程中就会额外安装上一些基础软件包,以帮助用户尽快上手。
- RHEL 8 系统提供 6 种软件基本环境,依次为
Server with GUI(带图形化的服务器)、Server(服务器)、Minimal Install(最小化安装)、Workstation(工作站)、Custom Operating System(自定义操作系统)和Virtualization Host(虚拟化主机)。只要检查当前模式是默认的Server with GUI即可,右侧额外的软件包不要选择,可以在后续学习过程中慢慢安装,这样才有乐趣。

- 返回到安装概要界面后,右侧第一个
Installation Destination指的是想把系统安装到哪个硬盘。此时仅仅是让我们进行确认,不需要进行任何修改。 - Linux 系统根据 FHS(Filesystem Hierarchy Standard,文件系统层次标准)为不同的目录定义了相应的不同功能,这部分内容会在第 6 章详细介绍。
KDUMP服务的配置界面。KDUMP 服务用于收集系统内核崩溃数据,但是考虑到短时间内我们并不打算调试系统内核参数,所以这里建议取消选中Enable kdump复选框,这可以节省约 160MB 物理内存。NETWORK & HOST NAME配置界面。首先单击右上角的开关按钮,设置成ON(开启)状态。然后在左下角将Host Name(主机名称)修改为linuxprobe.com并单击右侧的Apply按钮进行确认,这样可以保证后续的命令提示符前缀一致,以免产生学习上的歧义。

- 系统开始安装。返回到安装概要界面,剩下的
SECURITY POLICY与System Purpose暂时不需要配置。单击界面右下侧的Begin Installation按钮开始正式安装操作系统,如图 1 所示。整个安装过程大约持续 20 ~ 30 分钟。 - 设置管理员密码。在系统安装过程中,单击
Root Password按钮,设置管理员的密码,如图 2 所示。这个操作非常重要,密码马上会在登录系统时用到。这里需要多说一句,当在虚拟机中做实验的时候,密码无所谓强弱,但在生产环境中一定要让 root 管理员的密码足够复杂,否则系统将面临严重的安全问题。 - 创建普通用户。单击
User Creation按钮,为 RHEL 8 系统创建一个本地的普通用户。该账户的名字叫linuxprobe,密码统一设置为redhat,这个账户将会在第 5 章使用到。

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

- 返回到初始化界面,单击
FINISH CONFIGURATION按钮进行确认后,系统将会进行最后一轮的重启。 - 在大约 2 分钟的等待时间过后,便能够看到登录界面了。
- 为了保证在学习到第 5 章前不受权限的牵绊,请同学们务必单击用户下方的
Not listed?,手动输入管理员账号(root)以及所设置的密码。
安装软件的方法
在 RPM(红帽软件包管理器)公布之前,要想在 Linux 系统中安装软件,只能采取编译源码包的方式。所以,早期安装软件是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供自身的源代码,还需要运维人员编译代码后自行解决软件之间的依赖关系。因此要安装好一个服务程序,运维人员不仅需要具备丰富的知识、高超的技能,还要有良好的耐心。
常用的 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 |
常见的 Yum 命令
-
尽管 RPM 能够帮助用户查询软件之间的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件依然很繁琐。
-
Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum 软件仓库的技术拓扑图如下图所示。

-
Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是由第三方发布的,当然也可以是自己编写的。
| 命令 | 作用 |
|---|---|
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 软件包组 |
查询指定的软件包组信息 |
系统初始化进程
Linux 系统的启动过程
- 内核的引导。
- 运行 init。
- 系统初始化。
- 建立终端。
- 用户登录系统。
- SysV: init, CentOS 5 之前。配置文件:
/etc/inittab。 - Upstart: init, CentOS 6。配置文件:
/etc/inittab,/etc/init/*.conf。 - Systemd: systemd, CentOS 7。配置文件:
/usr/lib/systemd/system、/etc/systemd/system。
初始化进程服务
- 红帽 RHEL 7/8 系统替换掉了熟悉的初始化进程服务 System V init,正式采用全新的 systemd 初始化进程服务。
- Linux 系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(unit),systemd 用目标(target)代替了 System V init 中运行级别的概念。
systemd 与 System V init
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/ 目录。
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
管理系统服务等常用命令
服务的启动、重启、停止、重载、查看状态等常用命令:
| 老系统命令 | 新系统命令 | 作用 |
|---|---|---|
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 |
查看服务状态 |
服务开机启动等常用命令
服务开机启动、不启动、查看各级别下服务启动状态等常用命令:
| 老系统命令 | 新系统命令 | 作用 |
|---|---|---|
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 |
查看各个级别下服务的启动与禁用情况 |
重置 root 密码
假设您刚刚接手了一台 Linux 系统,要先确定是否为 RHEL 8 系统。如果是,然后再进行下面的操作。
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.0 (Ootpa)

- Linux 系统的引导界面。重启 Linux 系统主机并出现引导界面时,按下键盘上的
e键进入内核编辑界面,如图 1 所示。 - 内核信息的编辑界面。在
linux参数这行的最后面追加rd.break参数,然后按下Ctrl + X组合键运行修改过的内核程序,如图 2 所示。 - 大约 30 秒过后,系统会进入紧急救援模式,如图 3 所示。

然后依次输入以下命令:
mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
再连续按下两次 Ctrl + D 组合键盘来退出并重启。等待系统再次重启完毕后便可以使用新密码登录 Linux 系统。这一系列命令的执行效果如上图所示。
总结
为了保证系统和软件包的安全与完整性,避免因为外部因素导致安装失败—磨刀不误砍柴工。
在配置界面中若直接选择了 RHEL 8 系统镜像文件,则 VMware Workstation 虚拟机会使用内置的安装向导自动进行安装,最终安装出来的系统跟我们后续进行实验所需的系统环境会不一样。
遇到此类报错,最大的可能原因是 BIOS 中没有开启 VT 功能,手动开启后重启即可。
RPM 已经被 CentOS、Fedora、openSUSE 等众多 Linux 系统采用,它真的很好用!
RPM 是通过将源代码与安装规则打包在一起,降低了单个软件的安装难度。而 Yum 与 DNF 软件仓库则是将大量常用的 RPM 软件包打包到一起,解决了软件包之间的依赖关系,这进一步降低了软件的整体安装难度。
执行命令 systemctl status 服务名 可以查看服务的运行状态。