news 2026/9/29 1:23:46

VMware 安装 CentOS 7.9:网络配置、yum源修复与快照克隆避坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware 安装 CentOS 7.9:网络配置、yum源修复与快照克隆避坑

前几天有个朋友找我,说他笔记本上想跑个 Linux 做实验,资料下了一堆,结果卡在最开头那一步——在 VMware 里新建虚拟机装 CentOS 7.9,开机就报一堆他看不懂的错。我让他把屏幕拍过来,发现问题根本不在系统本身,而是几个特别小的配置项:虚拟机网络模式选成了仅主机、网卡没设开机自启、镜像下到一半断过也没校验。这三个坑任意踩一个,后面都会变成"装是装上了但用不了"的状态。

这篇就把 VMware 虚拟机安装 CentOS 7.9 这整套流程从头到尾拆开讲一遍。不只给步骤,更重要的是讲清楚每一步为什么这么填、哪些参数填错了后面会很难受、装完之后还有哪些必须做的收尾动作。CentOS 7.9 这个版本在 2024 年已经进入生命周期尾声,网上不少教程的内容已经过期,照着做会踩坑,所以我会把版本现状、镜像源处理、工具选择这些容易忽略的地方一并说清。适合刚接触虚拟机的同学,也适合装了十几台机器但总在某些细节上翻车的老手对着检查一遍。

1. 为什么现在还有人执着于 CentOS 7.9 这个版本

1.1 CentOS 7.9 是哪个版本,它现在的处境是什么

先把身份说清楚,CentOS 7.9 的完整版本号是 7.9.2009,2009 代表 2020 年 9 月发布的滚动构建号。它是整个 CentOS 7 大版本的最后一个版本,之后 CentOS 项目就转向了 CentOS Stream,传统的"稳定复刻版"路线就此终结。7.9 的官方维护周期在 2024 年 6 月 30 日结束,这意味着官方不再推送安全更新,主镜像站也陆续把包挪到了 vault 归档目录。

这就带来一个很现实的问题:很多教程里那句"yum install 装个软件"现在直接跑会报 404。不是你的命令写错了,是源地址已经不提供服务。后面第 5 章会专门讲怎么把源切到归档地址,这是现在装 CentOS 7.9 绕不过去的一步。

那为什么还要用它?因为在企业内网、教学环境、老项目的验证场景里,大量现成的部署文档、安装脚本、中间件配置都是围绕 CentOS 7 写的。你换成 Rocky 或者 Alma,很多细节要对,比如 systemd 单元文件写法的细微差异、防火墙规则、SELinux 策略、甚至某些商业软件只认/etc/redhat-release里的特定字符串。装一台 7.9 做环境对齐,比在新系统上逐个排查兼容性问题要省事得多。

1.2 VMware Workstation Pro 17 现在的授权情况

顺便把一个被问烂了的问题说明白:VMware Workstation Pro 从 17 版本开始,个人使用已经免费,官方渠道下载安装后选个人用途即可,不需要再去找所谓的"密钥"。商用场景仍然需要走订阅授权,这是两回事。网上流传的各种注册码,来源不明,装上之后能不能稳定运行、有没有被动过手脚都不好说,为了省这点事给自己埋雷不值当。

下载路径上,现在的官方下载入口已经并入 Broadcom 的支持门户,站内搜索产品名就能找到。安装包体积在 600MB 上下,17.5.x 系列是比较新的小版本。装的时候有个细节:如果你的宿主机上装着旧版本的 Workstation,建议先卸载干净再装新版,卸载残留会导致新版本启动时提示网络组件异常,这个坑在第 6 章还会提到。

顺带说一下汉化的事。网上搜"虚拟机汉化包下载"的人不少,但 VMware Workstation 17 的官方安装包本身已经内置简体中文,安装时会跟随系统语言自动切换,不需要额外下载任何第三方汉化文件。来路不明的汉化包往系统目录里替换文件,风险自己掂量。

1.3 这套组合适合谁,不适合谁

说句实在话,如果你只是想学 Linux 基础命令,CentOS 7.9 完全够用,而且资料最全。但如果你打算把它当长期跑业务的环境,或者需要最新版本的内核特性、需要新的编译器版本,那还是考虑 Rocky Linux 9 或者 AlmaLinux 9 更合适,CentOS 7 的软件仓库停留在旧版本,很多新工具需要自己编译,折腾成本不低。

虚拟机软件这一侧也一样。VMware Workstation Pro 适合在 Windows 或 Linux 桌面上做单机实验,图形界面友好、快照方便、网络配置直观。如果你需要的是服务器级别的虚拟化,那方向就完全不同了,不该用桌面版软件去硬扛。选型这一步想清楚,后面能少走很多弯路。

2. 动手之前要先确认的三件事

2.1 镜像从哪来,为什么 sha256 校验不能省

CentOS 7.9 的安装镜像有两个常用版本:CentOS-7-x86_64-DVD-2009.iso大约 4.4GB,包含完整的软件包集合;CentOS-7-x86_64-Minimal-2009.iso大约 1GB,只带最基础的运行环境。选哪个取决于你要不要图形界面和常用工具链——做服务器实验选 Minimal 就够,要 GNOME 桌面或者需要装一堆开发包,用 DVD 版可以少联网几十次。

镜像现在要去归档站找,主站已经没有 7.9 的目录了。下载完成后必须做的一件事是校验哈希值,因为 4GB 的文件下载中途断线、被浏览器缓存截断、甚至镜像站同步不完整,都会导致安装到一半报"介质检查失败"。文件损坏这件事最恶心的地方在于,它往往不会在开头就暴露,而是在装到某个包的时候突然报错,让你以为是分区或者硬件问题,白白排查半天。

Windows 上用 PowerShell 校验:

Get-FileHash .\CentOS-7-x86_64-DVD-2009.iso -Algorithm SHA256

Linux 或 macOS 上更简单:

sha256sum CentOS-7-x86_64-DVD-2009.iso

拿输出的值和官方归档页给出的sha256sum.txt对照,一个字符都不能差。这一步花你三十秒,能省掉后面可能的一小时。

2.2 宿主机的硬件下限和 BIOS 里的虚拟化开关

VMware 官方给的最低配置是 64 位处理器、4GB 内存、1GB 空闲磁盘。但这是"能启动"的门槛,不是"用得舒服"的门槛。我的实际建议是:宿主机内存 16GB 起步,系统盘留出至少 60GB 空闲空间,因为每台虚拟机加上快照、交换文件,很容易吃掉 30GB 以上。

真正容易被忽略的是 BIOS 里的虚拟化开关。Intel 平台叫 Intel Virtualization Technology(VT-x),AMD 平台叫 SVM Mode,位置通常在 Advanced 或者 CPU Configuration 菜单下。如果这个开关没打开,VMware 会在启动虚拟机时直接弹窗提示"此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态",虚拟机根本起不来。部分品牌的笔记本还会额外要求关闭 Secure Boot 才能正常加载虚拟化模块。

打开方式:开机时反复按 F2、Del 或者 F10(不同品牌不一样,看开机第一屏的提示),进 BIOS 后找虚拟化相关选项,设为 Enabled,保存退出。注意有些主板在开启了虚拟化之后,还要把"可信执行"之类的选项一并处理,具体看主板文档。

2.3 和 Hyper-V、WSL2 抢资源导致的蓝屏

这个坑我踩过。宿主机是 Windows 10 或 11,装完 VMware 后新建虚拟机一开机,整个 Windows 直接蓝屏重启,错误代码指向虚拟化相关模块。原因通常是宿主机上启用了 Hyper-V、WSL2、Windows 沙盒或者内核隔离里的"内存完整性",这些功能会占用 CPU 的虚拟化扩展,和 VMware 直接冲突。

处理办法有两个方向。如果你近期不用 WSL2 和 Hyper-V,用管理员权限打开命令提示符,执行:

bcdedit /set hypervisorlaunchtype off

然后在"Windows 安全中心 → 设备安全性 → 内核隔离"里把内存完整性关掉,重启系统。重启后可以用bcdedit /enum确认 hypervisorlaunchtype 的值是 Off。

如果你确实需要同时用 WSL2 和 VMware,那就得升级到较新的 Workstation 版本,新版对 Hyper-V 共存的支持好一些,但性能上仍然会有损耗,而且网络配置会变得复杂。我的建议是实验机器上二选一,别折腾共存。

顺便说一句,重启之后如果 VMware 提示网络组件需要重新配置,让它自动修复就行,别手动去设备管理器里删网卡,容易越删越乱。

3. 新建虚拟机时那几个真正影响后续的参数

3.1 典型安装和自定义安装的差别在哪

新建向导第一步就是选"典型"还是"自定义"。典型模式会自动帮你决定硬件兼容性版本、磁盘类型这些参数,三分钟点完;自定义模式会多出十几屏,包括硬件兼容性、处理器数量、磁盘接口类型、是否预分配空间等等。

我的做法是:第一次装某类系统用自定义走一遍,把每个参数看清楚,之后再装同类系统直接用典型。因为典型模式有个隐性习惯——它默认的硬件兼容性版本跟着当前 Workstation 版本走,如果你需要把虚拟机文件拷给用旧版 Workstation 的同事,兼容性版本太高会打不开。自定义模式下可以把兼容性降到 15.x 甚至更低,保证跨版本可用。

另外提醒一下,向导里选"稍后安装操作系统"比直接挂 ISO 更稳妥。先建好空虚拟机、检查一遍硬件参数,再挂镜像启动,出问题的时候排查范围小很多。

3.2 CPU、内存、磁盘到底该分多少

这部分没有标准答案,但有几条经验规律可以照着套。

虚拟 CPU 数量的分配原则是:不要超过宿主机物理核心数的一半。比如宿主机是 8 核 16 线程,给虚拟机分 2 到 4 个 vCPU 都合理;宿主机只有 4 核 8 线程,给 1 到 2 个就够了。给得太多反而拖慢整体性能,因为宿主系统自己也要用 CPU,虚拟机之间还会互相抢。

内存的分配相对宽松一点:留够宿主机自己能跑起来的量,剩下的可以分出去。8GB 内存的宿主机,给虚拟机 2GB 比较安全;16GB 的宿主机,给 4GB 完全没问题。这里要特别注意一点——VMware 分配给虚拟机的内存,在虚拟机开机期间是被整体占用的,不是按需分配的。所以别把宿主机内存全分出去,否则宿主机自己会开始疯狂读写页面文件,整个系统卡成幻灯片。

磁盘这一项,Minimal 安装 10GB 勉强够,但建议直接给 20GB,带 GUI 的安装给 40GB。因为虚拟机磁盘是"按需增长"的,你给 40GB 不等于立刻占用 40GB,实际占用会随着你往里写数据慢慢涨上去。给大一点几乎没成本,给少了后面扩容虽然也能做,但 LVM 扩容、分区表调整这些操作对新手不太友好。

下面这张表是我常用的分配参考,可以直接对照宿主机情况抄:

宿主机配置vCPU内存磁盘适用场景
4核8线程 / 8GB1-22GB20GBMinimal 命令行实验
8核16线程 / 16GB2-44GB40GB带 GUI 或跑中间件
12核以上 / 32GB4-88GB60GB多节点集群模拟

3.3 网络模式三选一,选错了后面全是麻烦

这一步是新手翻车率最高的地方。VMware 提供三种主要网络模式,很多人随手选了默认值,装完发现虚拟机 ping 不通外网,或者宿主机访问不到虚拟机里的服务,然后开始怀疑是系统装坏了。

模式虚拟机 IP 来源能否访问外网宿主机能否访问虚拟机典型用途
桥接物理局域网的 DHCP能能,直接用虚拟机 IP需要被局域网其他机器访问
NATVMware 虚拟 DHCP能能,通过 IP 或端口映射单机实验,最省事
仅主机VMware 虚拟 DHCP不能能纯隔离的测试环境

做单机实验,我一般选 NAT。原因很直接:它不依赖你当前所在的物理网络环境,换个 Wi-Fi、接个手机热点都不影响虚拟机上网,IP 段固定,配置静态 IP 的时候不用考虑和局域网冲突。桥接模式的好处是虚拟机在局域网里显示为一台独立设备,别的机器能直接访问它,但缺点也明显——你换个网络环境,虚拟机的 IP 就得跟着变,如果设了静态 IP 反而会导致上不了网。

仅主机模式适合做安全测试或者断网实验,虚拟机完全出不去,只能和宿主机以及别的仅主机模式虚拟机通信。这个模式的坑在于,很多人误选了它,然后花半天时间去查为什么 yum 装不了软件。

3.4 磁盘拆分与预分配这个选项别乱点

自定义向导走到磁盘那一步,会有两个选项:一是"将虚拟磁盘存储为单个文件"还是"拆分成多个文件",二是要不要"立即分配所有磁盘空间"。

拆分成多个文件的选项,勾上是更好的选择。它会把磁盘切成若干个 2GB 左右的小文件,好处是方便拷贝和迁移——单个大文件在跨文件系统复制时更容易出问题,而且某些备份工具对小文件更友好。性能上的差异在普通机械硬盘时代比较明显,现在 SSD 环境下几乎感觉不到。

"立即分配所有磁盘空间"这个选项,勾上之后会立刻在宿主机上生成一个完整大小的磁盘文件。好处是碎片少、写入性能稳定;坏处是你给 40GB,它就立刻占掉 40GB。做实验的环境没有这个必要,不勾,让它按需增长就行。

还有一个容易被忽略的设置:虚拟机的交换文件位置。默认会放在和虚拟机文件同一个目录,如果你的系统盘空间紧张,可以在虚拟机设置的"选项 → 高级"里把交换文件指定到别的盘符。这个小设置能让你的 C 盘多活很久。

4. CentOS 7.9 安装向导逐屏拆解

4.1 引导菜单和介质检测那一步

虚拟机开机后会进入引导菜单,几个选项分别是:Install CentOS 7(直接安装)、Test this media & install CentOS 7(先检测介质再安装)、Troubleshooting(故障排查)。如果你前面没做哈希校验,建议选第二项,让安装程序自己把整个 ISO 扫一遍。它会在屏幕上滚动显示检测进度和每个文件的校验结果,全部 PASS 才会进入安装。

这一步对老机器或者 USB 启动场景特别有价值。虚拟机上用 ISO 文件启动,理论上不太容易出错,但如果 ISO 文件本身下载时损坏了,介质检测就是最后一道防线。检测完了如果有一堆 FAIL,别犹豫,重新下镜像。

Troubleshooting 里的选项平时用不到,但你可能会遇到"开虚拟机直接进 GRUB 命令行"或者"屏幕黑掉"的情况,这时候可以回来看这个菜单里的"Rescue a CentOS system"和启动参数调整。

4.2 软件选择:怎么选才能少装一堆没用的包

进入图形安装界面后第一件事是选语言。这里推荐选英文,原因不是崇洋媚外,而是中文界面下的报错信息和日志搜索起来很麻烦——你拿中文错误信息去搜,能搜到的资料比英文少一个数量级。安装完系统之后照样可以装中文语言包和输入法。

语言选完之后,主界面上有两个必须点进去的项:SOFTWARE SELECTION 和 INSTALLATION DESTINATION。左侧那个 SOFTWARE SELECTION 决定了系统装完之后自带什么软件,右边那些选项容易让人挑花眼。

  • Minimal Install:只有最基本的命令行环境,装完约占 1GB 空间。做服务器实验首选,干净、启动快、攻击面小。
  • Infrastructure Server:在最小安装基础上加了 DNS、DHCP、文件服务等基础设施组件。
  • Server with GUI:带 GNOME 桌面的服务器版本,方便不熟悉命令行的同学上手。
  • GNOME Desktop:完整桌面环境,体积最大。
  • Development and Creative Workstation:带开发工具链,写代码、编译项目方便。

我的习惯是:纯粹学命令和做服务实验,选 Minimal,需要什么再单独装;要给不熟悉命令行的同事用,选 Server with GUI。千万不要为了"保险"选带桌面的完整版,装完之后一堆用不上的服务在后台跑,反而增加排查干扰。

右侧还有一个勾选项叫"Add-Ons for Selected Environment",里面能加上开发工具、系统管理工具、安全工具等。Minimal 环境下建议顺手勾上"Development Tools",可以省掉后面装 gcc、make 这些编译工具时的依赖排查。

4.3 安装位置和手动分区怎么切

点了 INSTALLATION DESTINATION 之后,会看到宿主机分配给你的那块虚拟磁盘。默认是"自动配置分区",安装程序会按 LVM 方案把磁盘切成 /boot、swap 和根分区。对新手来说自动分区能用,但有个问题——默认的根分区在 LVM 上,容量是按磁盘比例的,后面想扩容或者重建分区会多绕几步。

我的做法是选"我要配置分区",手动切三个分区:

挂载点建议容量文件系统说明
/boot1GBxfs存内核和引导文件,1GB 足够
swap内存的 1-2 倍swap内存 4GB 以下按 2 倍,以上按等量
/剩余全部xfs根分区,装系统软件

分区方案选"标准分区"还是"LVM",这是个选择。LVM 的好处是后面可以动态扩容,比如你发现磁盘不够用了,在 VMware 里扩大虚拟磁盘后,用 lvextend 直接扩根分区,不用重装。标准分区则更直观,出问题了用救援模式挂载和修复都更简单。做实验环境我一般选 LVM,因为扩容这个场景早晚会遇到。

CentOS 7 的默认文件系统是 xfs,不要改成 ext4,除非你有明确的兼容性需求——xfs 在大文件和高并发场景下表现更好,而且手册和资料绝大部分都是按 xfs 写的。

手动分区的时候注意一个细节:分完区要确认"分区方案"下拉框里显示的是你实际建的分区,而不是自动生成的。有时候界面上会同时保留自动方案和你手建的方案,安装的时候点错就是另一套分区了。

4.4 网络与主机名,安装阶段就把它打开

这一步非常多的人会跳过,后果就是装完系统后发现 ping 不通任何东西。CentOS 7 的安装程序里,网络默认是关闭的,而且网卡的"开机自启"选项默认也不勾。也就是说,即使你在安装时手动打开网络,装完之后重启,网卡还是不会自动起来。

正确的做法是:在安装界面点 NETWORK & HOST NAME,进去后看到 ens33 这个网卡(具体名字可能是 ens33、ens160 等,取决于虚拟机硬件版本),把右上角的开关拨到 ON,然后在下面的主机名框里填一个有意义的名字,比如node01。填完之后点 Apply 保存。

这一步做对了,装完系统至少能立刻上网。但更彻底的方案是在这里顺手配置静态 IP,省得装完系统再改配置文件。配置静态 IP 需要三个信息:IP 地址、子网掩码或前缀、网关地址。NAT 模式下,网关通常是虚拟网络里x.x.x.2这个地址,具体的网段可以在 VMware 的"编辑 → 虚拟网络编辑器"里,选中 VMnet8 查看。

不过我个人更推荐装完系统再用命令行配静态 IP,因为安装界面里的网络配置器对新手不太友好,字段含义容易搞混。先让它 DHCP 拿个地址,装完系统再改配置文件,出错了好排查。

另外注意 KDUMP 那一项,默认是开启的。它的作用是在系统崩溃时把内存内容转存到磁盘用于分析,会额外预留一部分内存。做实验环境建议关掉,能省下几百 MB 内存,而且用不上这个功能。SECURITY POLICY 那一项保持默认就好,除非你们公司有统一的合规基线要求。

4.5 root 密码和普通用户,密码复杂度这个坑

分区和网络配完,点开始安装,安装过程中会提示你设置 root 密码和创建普通用户。这里有个细节:如果你设置的 root 密码过于简单,比如纯数字或者字典词,界面上的"完成"按钮点了会弹出提示,你需要再点一次"完成"才能强制通过。这不是 bug,是安装程序在做弱密码提醒。

做本地实验环境,密码简单点无所谓,反正是隔离的。但有一点要注意:如果你打算给这台虚拟机开 SSH 并且暴露到局域网,弱密码就是明确的安全隐患,收集扫描的机器人几分钟就能试出来。这种情况请老老实实用强密码,或者干脆禁用 root 的 SSH 登录,只允许普通用户登录后 su。

普通用户的创建是可选的,但我建议建一个。日常操作都用普通用户加 sudo,需要 root 的时候再切,这是好习惯。建用户的时候注意勾上"将此用户设为管理员",否则你的用户不在 wheel 组里,sudo 会用不了,还得手工去改 /etc/sudoers。

5. 首次开机后的收尾动作清单

5.1 网卡开机自启,以及静态 IP 怎么配

系统装完重启,用 root 或你创建的普通用户登录,第一件事是敲ip addr看有没有 IP。如果 ens33 那一项下面只有inet6的地址,或者干脆什么都没有,说明网卡没起来。

CentOS 7 的网卡配置文件在/etc/sysconfig/network-scripts/目录下,文件名是ifcfg-ens33这种格式。用 vi 打开它,关键是三个字段:

BOOTPROTO=static ONBOOT=yes

ONBOOT=yes是解决开机不自启的关键,BOOTPROTO改成 static 表示用静态 IP,然后补上地址信息:

IPADDR=192.168.100.10 PREFIX=24 GATEWAY=192.168.100.2 DNS1=223.5.5.5 DNS2=114.114.114.114

这里的 IP 段要和 VMware 里 VMnet8 的网段对应。去"编辑 → 虚拟网络编辑器"看 VMnet8 的子网地址,通常是192.168.x.0,网关是192.168.x.2。你要配的 IP 就取同网段下一个没被 DHCP 池占用的地址。VMware 的 DHCP 默认从.128开始分配,所以.10到.100这段通常都是安全的。

改完之后重启网络服务:

systemctl restart network

再用ip addr确认地址生效,然后ping 223.5.5.5测外网连通性,ping www.baidu.com测 DNS 解析。两个都通,网络这块就算完成了。

注意:如果systemctl restart network卡住很久最后报错,通常是配置文件里写错了一个字符,或者网关地址和实际网段对不上。用journalctl -xe看具体报错,别硬重启。

5.2 CentOS 7 停止维护之后,yum 源该怎么处理

前面提过,CentOS 7 在 2024 年 6 月底结束维护,官方主站的 7.9 目录已经下架。所以现在装完系统执行yum update,大概率会看到一堆Cannot find a valid baseurl或者 404 错误。这不是网络问题,是源地址失效了。

解决办法是把/etc/yum.repos.d/目录下那些 repo 文件里的镜像地址指向归档目录。批量处理的命令大致是这样,执行前建议先备份整个目录:

cd /etc/yum.repos.d/ mkdir -p /tmp/repo-bak && cp *.repo /tmp/repo-bak/ sed -i s/mirror.centos.org/vault.centos.org/g *.repo sed -i s/^#.*baseurl=http/baseurl=http/g *.repo sed -i s/^mirrorlist=http/#mirrorlist=http/g *.repo yum clean all && yum makecache

这几条命令做的事情分别是:把域名从主站换成归档站、把被注释掉的 baseurl 释放出来、把失效的 mirrorlist 注释掉。最后清缓存重建索引。

国内环境下,用阿里云或者清华的归档镜像速度会快很多,路径是mirrors.aliyun.com/centos-vault/7.9.2009/这种形式,把 repo 文件里的地址整体替换掉即可。各家镜像站的目录结构略有差异,替换前先去网页上确认一下实际路径,别直接照抄。

5.3 SSH、防火墙和 SELinux 的处置策略

Minimal 安装默认已经带了 openssh-server,装完系统就能用 SSH 连。检查一下服务状态:

systemctl status sshd

如果没起来,systemctl enable --now sshd打开并设为开机自启。然后用宿主机的终端工具连一下虚拟机 IP,能连上说明网络和服务都正常。

防火墙这块,CentOS 7 默认用 firewalld,默认区域已经放行了 SSH,所以内网连 SSH 不会有问题。但如果你要跑 Web 服务、数据库,需要额外放行端口:

firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload

做纯本地实验环境,很多人会图省事直接把 firewalld 关掉:

systemctl stop firewalld && systemctl disable firewalld

这么干在隔离的 NAT 网络里没什么问题,但心里要清楚这是降低了防护等级。如果这台虚拟机要暴露在局域网上,别关,老老实实按需放行端口。

SELinux 是个更微妙的选项。默认状态是 enforcing,也就是启用状态。它经常在你配置 Web 目录、挂载共享文件夹、跑自定义服务的时候跳出来拦住你,报一堆权限拒绝。很多教程的第一句话就是"先关掉 SELinux",我不太推荐这种一刀切做法,因为关掉之后你会失去一层保护,而问题只是被掩盖了,等你哪天在别的机器上重开 SELinux,同样的坑还得再踩一遍。

我的建议是:遇到 SELinux 报错,先看audit.log里具体的拒绝项,用semanage或者chcon针对性地调整策略;如果实在调不通又是纯实验环境,改成 permissive 模式观察,也就是记录但不拦截,比直接 disabled 更容易定位问题。

# 临时切换到 permissive setenforce 0 # 永久修改需要编辑 /etc/selinux/config,把 SELINUX=enforcing 改成 permissive 或 disabled

注意,从 enforcing 改成 disabled 需要重启才生效,而 permissive 用 setenforce 立刻生效。

5.4 open-vm-tools 和官方 VMware Tools 该装哪个

装上工具之后,虚拟机才能支持屏幕分辨率自适应、宿主机和虚拟机之间复制粘贴文本、拖拽文件、时间同步这些功能。没有它,虚拟机就是一个"瞎眼"的窗口,分辨率锁死在 800x600,鼠标在宿主机和虚拟机之间切换还要按 Ctrl+Alt。

现在有两条路线。第一条是装open-vm-tools,这是开源实现,直接走 yum:

# 命令行环境 yum install -y open-vm-tools systemctl enable --now vmtoolsd
# 带图形界面的环境 yum install -y open-vm-tools open-vm-tools-desktop systemctl enable --now vmtoolsd

第二条是挂载 VMware 自带的工具镜像,走图形安装向导。这条路常见的问题就是那个让人抓狂的报错:"继续运行脚本未能在虚拟机中成功运行。如果您在此虚拟机中配置……"。这个提示的原因通常有三类:缺少 perl 解释器、缺少 gcc 和 make 编译工具、内核头文件版本和当前运行内核不匹配。

对 CentOS 7.9 来说,我的建议是直接用 open-vm-tools。它在官方源里,依赖自动解决,升级内核之后不用重新编译模块。官方版 VMware Tools 的优势主要在某些特殊硬件和商业场景,普通实验用不上。

装完之后重启一次虚拟机,然后试试宿主机和虚拟机之间的复制粘贴,以及拖动窗口时分辨率是否自适应,这两个功能正常就说明工具装对了。

5.5 第一件该做的事是拍快照

系统刚装好、网络刚配通、工具刚装完,这个状态是后面所有实验的起点。在动任何配置之前,先拍一个快照。

VMware 菜单里的"虚拟机 → 快照 → 拍摄快照",名字填base-clean或者初始干净系统,描述里写清楚当前状态,比如"CentOS 7.9 Minimal,静态 IP 192.168.100.10,已装 open-vm-tools"。这个描述很重要,因为快照存多了之后,你根本记不住哪个是哪个。

有了这个快照,后面你实验玩崩了、配置改乱了、装软件把依赖搞冲突了,一键回滚,两分钟回到干净状态。这比装第二台虚拟机省事得多,也比试图手工卸载软件可靠得多。我见过太多人舍不得花两分钟拍快照,最后花两小时重装系统。

6. 高频故障的排查链路

6.1 虚拟机 ping 不通外网,按这个顺序查

这是最高频的问题,别一上来就重启虚拟机,按顺序排查效率最高。

第一步,ip addr看网卡有没有拿到 IP。没拿到,检查ONBOOT是不是 yes、systemctl restart network有没有报错。

第二步,如果有 IP 但 ping 网关不通,检查 IP 和网关是不是同一个网段。子网掩码写错一位,地址就跑到别的网段去了。

第三步,网关通但 ping 外网 IP 不通。这时候去宿主机上检查 VMware 的两个服务有没有跑起来:VMware NAT Service和VMware DHCP Service。在 Windows 的服务管理器里找,或者在宿主机命令行用 net stop/start 系列命令。这两个服务挂了,NAT 模式下虚拟机就出不去。

第四步,外网 IP 通但域名解析失败。这是 DNS 配置问题,检查/etc/resolv.conf里的 nameserver 地址,或者网卡配置里的DNS1字段。用nslookup www.baidu.com测一下具体是哪个环节断的。

第五步,全都通但某个特定网站访问不了。这就不是虚拟机的问题了,检查宿主机的网络策略。

这五步走下来,百分之九十的网络问题都能定位。关键是别跳步,很多人跳过第一步直接去改 IP,结果问题在 DNS 上,白折腾。

6.2 VMnet1 或 VMnet8 出现黄色感叹号

宿主机设备管理器里看到VMware Virtual Ethernet Adapter for VMnet1或者 VMnet8 带个黄色感叹号,网卡显示"该设备无法启动",这种情况通常是虚拟网卡驱动出问题了。

最常见的诱因是系统更新、安全软件清理、或者装过别的虚拟化软件(比如 VirtualBox、Docker Desktop 自带的网络组件)之后造成的冲突。处理办法按由轻到重来试:

第一招,打开 VMware 的"编辑 → 虚拟网络编辑器",点左下角的"还原默认设置"。这个操作会把所有虚拟网络适配器删除重建,能解决大部分驱动状态异常。执行前注意,你手工配置过的虚拟网络(比如自定义的网段、端口映射)会被重置,需要重新配。

第二招,如果还原默认设置之后还是感叹号,去设备管理器里右键那个网卡,卸载设备,勾上"删除此设备的驱动程序软件",然后重启。重启后打开 VMware 的虚拟网络编辑器,它会自动重新安装驱动。

第三招,如果反复出现,考虑用官方提供的清理工具把 VMware 彻底卸载一遍再重装。残留的驱动和注册表项是这类问题的根源,普通卸载清不干净。

6.3 那几个让人看不懂的报错,逐个说

报错提示实际原因处理方式
继续运行脚本未能在虚拟机中成功运行缺 perl、gcc、make 或内核头文件版本不匹配改用 open-vm-tools,或补齐依赖再装
无法在更新服务器上找到组件,请联系技术支持工具更新检查走网络失败虚拟机设置里把工具更新改为手动
此虚拟机似乎正在使用中上次异常退出留下 .lck 锁文件关闭 VMware 后删除 .lck 目录再开
我已移动该虚拟机 / 我已复制该虚拟机虚拟机文件路径变化后的确认提示原地启动选"移动",拷贝到别处选"复制"
未找到操作系统引导顺序里硬盘排在光驱后面但光驱是空的检查虚拟机设置里的启动顺序

关于"我已移动该虚拟机"这个选项,很多人随手点错。选"我已经移动该虚拟机",VMware 会保留原来的 MAC 地址和 UUID;选"我已经复制该虚拟机",它会生成一套新的标识。如果你是把虚拟机文件拷到另一台机器上同时保留原机器那台,必须选"复制",否则两台机器 MAC 一样,网络会出问题。

6.4 主机怎么访问虚拟机里的 Web 服务

NAT 模式下,宿主机和虚拟机之间是能互相访问的,虚拟机可以直接 ping 宿主机 IP,宿主机也能直接访问虚拟机的 IP。所以最简单的做法是:在宿主机的浏览器里直接输虚拟机的 IP 加端口,比如http://192.168.100.10:8080。

但有一类场景需要注意:宿主机外面的设备想访问虚拟机的服务,NAT 模式下就做不到,因为虚拟机 IP 是私有的。这时候有两个选择,一是改成桥接模式让虚拟机直接暴露在局域网,二是做端口映射。

端口映射的配置在"虚拟网络编辑器"里,选中 VMnet8,点"NAT 设置",里面有个"端口转发"的按钮。添加一条规则:主机端口 8080,虚拟机 IP 填虚拟机的实际地址,虚拟机端口填服务监听的端口。配好之后,宿主机所在局域网的其他机器访问宿主机IP:8080,就会被转发到虚拟机上。

顺便说一句,虚拟机里跑的服务默认可能只监听 127.0.0.1,从外部访问会连不上。检查一下服务的监听地址,改成0.0.0.0,再用ss -tlnp确认监听状态。

7. 把一台机器变成可复用模板

7.1 克隆之前必须清理的四样东西

一台配好的虚拟机直接克隆,会克隆出一堆重复标识,导致网络冲突、日志混乱。克隆前要清理这几个地方:

第一是/etc/machine-id。这是 systemd 用来标识机器的唯一 ID,重复会导致某些服务行为异常。清空它然后重新生成:

rm -f /etc/machine-id systemd-machine-id-setup

第二是网卡配置里的 UUID 和 MAC 地址。ifcfg-ens33里如果有UUID=和HWADDR=这两行,删掉。重装之后系统会自动分配新的。

第三是 SSH 主机密钥。如果两台机器密钥一样,安全上是个隐患:

rm -f /etc/ssh/ssh_host_*

删掉之后下次启动 sshd 会自动重新生成。

第四是命令历史和日志。history -c清掉当前会话历史,/root/.bash_history和用户的对应文件也删掉,/var/log下的日志看情况清理。这一步主要是保持模板干净,别把自己填过的密码、临时改过的命令带出去。

清完之后关机,再拍个快照,然后从这个状态开始克隆。

7.2 完整克隆和链接克隆怎么选

VMware 提供两种克隆方式。完整克隆会生成一套完全独立的虚拟机文件,占用和原虚拟机几乎一样大的磁盘空间,但独立性强,删掉原虚拟机不影响它。链接克隆只在磁盘上记录和原虚拟机的差异部分,占用空间小得多,但它依赖原虚拟机的磁盘文件,原虚拟机被删或者被改,链接克隆就废了。

我的用法是:需要长期保留、独立使用的,用完整克隆;一次性的测试场景,用链接克隆。比如搭三节点集群,直接把模板完整克隆三份,改改主机名和 IP 就完事,省去三次重复的系统安装。

克隆出来的机器一定要改三样:主机名(hostnamectl set-hostname node02)、IP 地址、以及上面说的那些唯一标识。改完重启网络,确保每台机器 IP 不冲突。

7.3 快照的管理和磁盘占用的关系

快照不是免费的。每拍一个快照,VMware 就会记录下当前磁盘和内存的状态,后续所有的写入都会记录到增量文件里。快照层次越深,读磁盘时的开销越大,性能下降越明显。而且快照文件本身也是要占空间的,一个用了半年的虚拟机,快照文件有时候比原始磁盘还大。

我的习惯是:快照不超过三层。通常是"初始干净系统"一层,"装好基础环境"一层,"当前实验前"一层。实验结束确认没问题,就把中间那层删掉合并。VMware 的"快照管理器"里能看到每个快照占用的空间,定期清理一下。

还有一个常见误区是拿快照当备份用。快照不是备份,它和原磁盘文件在同一个目录下,磁盘坏了两个一起丢。真正的备份是把虚拟机整个目录拷到外部存储,或者用单独的备份工具做。

7.4 删除虚拟机时把目录一起清干净

在 VMware 里右键虚拟机,"管理 → 从磁盘中删除",会把虚拟机的所有文件删掉。但有个前提:你得确认这个虚拟机的文件目录没有被其他虚拟机引用,比如链接克隆的父磁盘就躺在原虚拟机目录里,删了原虚拟机,那些链接克隆全废。

如果你只是想从列表里移除但保留文件,用"移除"而不是"删除"。移除之后文件还在,以后可以重新打开。

手工删除目录的时候,注意.lck这个后缀的文件夹——如果虚拟机的进程还在跑,直接删目录会失败或者留下损坏的文件。正确顺序是先在 VMware 里关机,确认进程退出,再删目录。如果遇到过关机之后仍然提示文件被占用,重启宿主机是最省事的办法。

另外,如果卸载 VMware Workstation 之后发现网络适配器还留在设备管理器里,或者重新装的时候报组件冲突,用官方的清理工具跑一遍。这个工具会清掉注册表项和残留驱动,比手动删干净得多。

我在实际操作中的体会是,虚拟机这个东西的复杂度全在配置细节上,系统安装本身反而是最简单的部分。真正拉开差距的是网络模式的判断、快照策略的设计、克隆前的清理这些"看起来是小事"的环节,它们决定了你的实验环境是三天两头出问题,还是能稳定用上一年。另外强烈建议第一次装完整套流程之后,把这台机器的设置项截图存一份——下次再装,对着自己的截图走,比翻别人的教程快十倍。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 1:23:36

分立三极管过压保护电路设计与SPICE仿真

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 1:23:10

1.8V/2.8V/3.3V/5V电平转换与电源转换选型实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 1:22:54

打造e621/e926客户端:API调用、限流与收藏同步实战

简介:一款基于谷歌Flutter框架、使用Dart语言编写的移动客户端工程源码,用于浏览和交互e621与e926两个在线图站,适合移动端开发者、Flutter进阶学员以及希望自建图站客户端的爱好者。项目功能覆盖较全,包括帖子和图池的浏览搜索、…

作者头像 李华
网站建设 2026/9/29 1:22:42

物联网无线收发芯片选型指南:Sub-1G与2.4G深度对比

1. 从一颗芯片说起:物联网无线收发芯片到底在解决什么问题搞物联网硬件的人,绕不开一个核心问题:设备怎么把数据传出去。有线方案在工业现场还能凑合用,但一旦涉及移动设备、户外部署、老旧建筑改造,布线就成了噩梦。无…

作者头像 李华
网站建设 2026/9/29 1:22:37

模型优化器实战指南:从SGD到AdamW的学习率调度与调参技巧

1. 模型优化器到底在优化什么第一次看到“Model-Optimizer”这个词,很多人会下意识觉得它又是一个调参工具,或者某个深度学习框架里附带的小模块。但真正在训练一线待过的人都知道,模型优化器远不止是“调学习率”那么简单。它更像是整个训练…

作者头像 李华
网站建设 2026/9/29 1:21:50

Python自动化:PSCAD波形图批量生成Word报告全流程

搞电力系统仿真的朋友应该都有过这种体验:PSCAD里把模型搭好、仿真跑完,波形一个个调出来看,觉得结果没问题了,接下来才是最折磨人的一步——把波形图整理进Word报告。手动截图、裁剪、统一尺寸、调整对齐,再配上图注和…

作者头像 李华