很多朋友问我说,想学Linux但怕把电脑搞坏,或者云服务器还要花钱、配置又不高,到底有没有一个既能随便折腾又安全的办法?我的答案几乎每次都一样:在自己电脑上用 VMware 虚拟机装一个 CentOS。这套组合我用了很多年,踩了不少坑,也攒了不少心得。今天这篇就完整写下来,从 VMware 版本、镜像下载,到新建虚拟机、手动分区,再讲网络配置、常见问题,全部走一遍,尽量做到你照着操作就能顺利装上一台能用的 CentOS。
这篇文章适合谁?刚接触 Linux 的在校生、准备考认证或者找工作练手的开发者,还有想在家里搭个测试环境又不想折腾实体机的朋友,都可以直接参考。我会把为什么这么做、不这样做会遇到什么问题也一并讲清楚,而不是单纯给你列步骤。毕竟装完不是终点,能正常联网、能装软件、能排查故障,那才叫真正装好了。
1. 安装前的思路与准备工作
1.1 为什么推荐“VMware + CentOS”这套组合
先说思路。虚拟机的好处其实一句话就能讲明白:它把操作系统变成了你电脑里的一个“普通软件”。你在这台虚拟机里随便删文件、改配置、装乱七八糟的软件包,宿主机都不受影响,最多就是把虚拟机搞崩了,删除重来十几分钟的事。这种试错成本非常低,特别适合学习。
选择 CentOS 而不是 Ubuntu、Debian 或者 openSUSE,主要是两个原因。第一,CentOS 和 Red Hat Enterprise Linux(RHEL)出自同一套代码体系,你在 CentOS 上学到的命令、配置文件路径、软件包管理方式,和你以后去真实企业服务器上操作几乎完全一样。很多公司的线上环境用的就是这一类发行版,面试时问你“systemd 怎么管理服务”“firewalld 怎么开端口”,都是 CentOS 系的常规操作。第二,CentOS 的资料特别全,你随便搜一个问题,答案基本都能直接照搬,对新手非常友好。
有人会问,CentOS 8 都停止维护了,CentOS Stream 又是滚动版本,为什么还要装 CentOS 7?这里我解释一下。CentOS 7 的官方维护周期在 2024 年年中就结束了,严格来说它已经不是一台“面向生产环境”的新系统。但作为学习虚拟机,它依旧是极好的选择:占用资源少、运行稳定、教程存量巨大。而且 CentOS 7.9 这个最终版本经过多年修补,bug 基本出干净了,比很多新版系统更不容易“莫名其妙出问题”。如果你以后打算接触较新的服务器环境,完全可以在装好这台 7.9 之后,再去接触 Rocky Linux 或 AlmaLinux,操作方法几乎可以无缝迁移。
1.2 宿主机配置评估与资源规划
虚拟机装系统前,先看看你电脑的配置能不能扛得住。VMware 本身是一层虚拟化层,会额外占用一部分 CPU 和内存,所以宿主机至少要保证 8GB 内存,16GB 会更从容。CentOS 7 本身很轻,安装时选“最小安装”,512MB 内存都能跑起来,但如果带 GNOME 桌面,建议分给虚拟机 2GB 以上内存,否则桌面会明显卡顿。
我的建议配置是:CPU 给 2 核,内存给 2GB,磁盘给 30GB。这个组合跑 CentOS 7 桌面版毫无压力,同时宿主机还留出了足够资源干别的事。这里有个常见误区:虚拟机配置不是越高越好。你分给虚拟机 8 核 16GB,装出来的系统确实“豪华”,但你的宿主机其他应用全都被拖垮了。而且你练习时根本用不到那么多资源,资源分配的本质是平衡,不是堆料。
磁盘方面,安装时建议采用 LVM 分区方案,后续扩容会非常方便。网络方面,默认的 NAT 模式适合绝大多数场景,它有独立的虚拟子网,虚拟机可以通过宿主机共享上网,宿主机又能通过虚拟网卡访问虚拟机,外部网络默认进不来,安全性和便利性兼得。桥接模式则适合需要让虚拟机像一台独立主机一样和局域网内其他设备通信的场景,新手建议先用 NAT,等熟悉了网络配置再切桥接。
1.3 VMware Workstation 版本选择与许可说明
VMware Workstation 有 Workstation Pro 和 Workstation Player 两个产品线,Player 是免费的精简版,只能“运行”已建好的虚拟机,创建虚拟机的功能非常弱。Pro 才是完整功能版,这几年 VMware 被博通收购后,Workstation Pro 已经对个人用户免费,直接去官网注册一个个人账号就能拿到正版许可。这个变化很多人不知道,还在网上搜各种注册机,其实大可不必。官方免费许可就够用,而且更安全,不存在后门或者激活失效的问题。
装好 VMware 以后,建议第一时间把虚拟网络编辑器看一眼,路径在菜单栏“编辑”下面的“虚拟网络编辑器”里。默认会生成 VMnet1(仅主机模式)和 VMnet8(NAT 模式),我们后面建虚拟机时用到的是 VMnet8。你可以看到它的子网网段、DHCP 分配范围,这些信息在后面排查网络问题时非常重要。很多人刚装完虚拟机,ping 不通网关,一查发现是 VMware 的 NAT 服务没启动,虚拟网络编辑器里就能看到,这也是我为什么让你提前看一眼的原因。
1.4 当前时间同步与系统更新建议
装完 CentOS 后,第一步建议先做时间同步,命令是:
yum install -y ntpdate ntpdate ntp.aliyun.com虚拟机系统时间如果不准,后面用 git 提交代码、用 cron 定时任务、看日志排查问题,全都会被误导。时间同步这件事很小,但直接影响之后的每一项开发工作。做完同步后,你可以顺手把时区设为上海,CentOS 7 里执行:
timedatectl set-timezone Asia/Shanghai另外一个容易被我忽略但很重要的问题是系统更新。刚装好的系统软件仓库缓存是空的,先跑一次:
yum clean all && yum makecache把仓库元数据缓存好,后面安装软件会快很多,也能避免一些“找不到软件包”的诡异报错。更新本身我不建议你一上来就全量 yum update,学习环境不是生产服务器,系统内核如果一下子升级,虚拟机里的 VMware Tools 可能就和新内核不匹配了,容易出现共享文件夹失效、窗口分辨率异常之类的麻烦。
2. CentOS 镜像选择与下载
2.1 CentOS 7.9 版本定位与下载渠道
CentOS 7 的最终小版本就是 7.9,没有 7.10 了,所以认准“CentOS-7-x86_64-Minimal-2009”或“CentOS-7-x86_64-DVD-2009”这两个文件名就行。2009 是版本发布时间的意思,不是年份 2009,而是 2020 年 9 月发布的版本号。网上有些老教程会让你去官网下载,但 CentOS 官网现在主推 CentOS Stream,老版本 7 的镜像链接已经藏得很深,直接访问容易找不到入口。国内用户直接用镜像站下载是最省心的。
我常用的是阿里云开源镜像站和清华 TUNA 镜像站,在浏览器输入 mirrors.aliyun.com,进入 centos 目录,找到 7/isos/x86_64/ 这样的路径就能看到镜像文件。下载时注意看文件名里的架构标识,绝大多数 PC 都是 x86_64,也就是 64 位,不要下载成 ARM 或 aarch64 的版本。镜像站一般还提供 sha256sum.txt 校验文件,下载完顺手校验一下,防止文件损坏。
2.2 DVD 版与 Minimal 版怎么选
CentOS 7 的镜像里,最常见的是 DVD 版和 Minimal 版,两者的差别不是安装包大小那么简单。
- DVD 版:约 4GB,自带一个完整的软件仓库,包含 GNOME 桌面、办公软件、开发工具等大量软件包。装完系统后,即使暂时没有网络,也可以通过本地仓库安装很多常用软件。适合需要图形界面、或者网络环境不稳定的用户。
- Minimal 版:约 800MB,只包含操作系统核心组件,没有图形界面,需要什么装什么。安装完成后只有一个纯命令行终端。适合想深入学习 Linux、以后走运维或后端方向的用户,也适合硬件配置比较旧的机器。
我的建议是,如果你是第一次接触 Linux,先用 DVD 版安装,安装过程中选“GNOME 桌面”,这样有图形界面,心理压力小很多。等你在命令行环境里熟悉了一个月,再尝试用 Minimal 版纯命令安装,这样学习曲线最平滑。我见过很多人一开始就装 Minimal,结果面对黑底白字的界面一脸懵,连命令敲错了都不知道错在哪里,很快就放弃了,其实没必要这么“硬核”。
2.3 镜像校验与常见下载问题
下载完成后,Windows 用户可以用 PowerShell 计算 SHA256 校验值和官方校验文件比对,命令是:
Get-FileHash .\CentOS-7-x86_64-DVD-2009.iso -Algorithm SHA256如果校验值不一致,说明镜像文件下载不完整或者被篡改,安装过程中大概率会报错,建议重新下载。校验这一步看起来多花两分钟,实际上能帮你省下后面装一半突然失败、又不知道是镜像问题还是操作问题的排查时间。
下载时经常遇到的一个问题是浏览器断点续传失败,大文件下到 90% 断了又得从头开始。建议直接使用下载工具或浏览器自带的断点续传,没必要用专门的下载器,但一定要确认文件大小和镜像站标注的一致。我遇到过因为下载软件多线程合并文件损坏导致安装时 GRUB 引导失败的情况,这种问题肉眼很难看出来,最后通过校验文件才发现是镜像的问题。
3. 创建虚拟机与系统安装完整步骤
3.1 新建虚拟机向导的关键选项
打开 VMware Workstation,点击“创建新的虚拟机”,我建议选择“自定义(高级)”,不要选“典型”。典型安装虽然省事,但默认配置里磁盘格式、硬件兼容性、虚拟化引擎这些选项都是自动的,不一定适合你后面的需求。自定义模式能让你清楚知道自己每一步做了什么,以后出了问题也知道去哪里排查。
向导里有个地方要特别注意:在“安装程序光盘映像文件”这一步,我们选择“稍后安装操作系统”,不要直接选择 iso 文件。为什么呢?因为直接选择 iso,VMware 会走简易安装流程,帮你自动分区、自动建用户,确实快,但生成的系统默认用户名和磁盘分区不一定是你想要的,而且定制化很差。选“稍后安装操作系统”,我们就能完全手动控制安装过程。
操作系统类型这里选择“Linux”,版本下拉菜单里选择“CentOS 7 64 位”。没有这个选项的情况也有,如果是老版本 VMware,可能只显示到“CentOS 6”,这时候你可以选择“Red Hat Enterprise Linux 7 64 位”替代,它们是同源的,兼容性没问题。处理器配置页面,建议设一个处理器、每颗处理器 2 核,注意不要设成 2 个处理器各 1 核,某些老系统对这种多路配置支持不好。
内存大小默认是 1GB,我们改到 2048MB。网络类型默认“使用网络地址转换(NAT)”,这是正确的,保留即可。I/O 控制器类型保持默认的 LSI Logic,磁盘类型选 NVMe 或 SCSI 都可以,个人建议选 NVMe,更接近现代硬件的实际环境,后面对性能有一定帮助。磁盘大小我建议 30GB,并且勾选“将虚拟磁盘存储为单个文件”,单个文件在拷贝虚拟机目录时更简单,性能也略好于拆分文件。
3.2 BIOS 与 UEFI 引导模式的选择
自定义向导里有一项容易被忽略:“固件类型”。默认是 BIOS,新版 VMware 17 也支持 UEFI。对 CentOS 7 而言,BIOS 引导的方式最稳妥,因为它的兼容性和教程数量都最大。如果你以后想研究 UEFI 安全启动、TPM 之类的课题,那可以单独建一台 UEFI 的虚拟机,但学习日常操作用 BIOS 就够了。
这里有个小坑:有些人建虚拟机时没注意固件类型,默认 BIOS 装好了 CentOS,后来又希望改成 UEFI,觉得 UEFI 启动速度更快。结果直接改虚拟机固件,系统就进不去了,报错找不到引导。原因是两种引导方式的引导记录格式不一样,系统安装时写进去的引导方式和固件类型是对应的。所以我建议你在建机这一步就想清楚,不要中途改。
创建完虚拟机后,在虚拟机设置里把光驱指向你下载好的 iso 文件。路径是“编辑虚拟机设置 -> CD/DVD (SATA) -> 使用 ISO 映像文件”,勾选“启动时连接”。这一步做完,就可以点击“开启此虚拟机”开始安装了。
3.3 图形化安装界面逐步操作
虚拟机启动后,屏幕上会先出现一个黑色的菜单,有 “Install CentOS 7” 和 “Test this media & install CentOS 7” 两个选项,正常选第一项回车即可。第二项是校验安装介质,前面的镜像我们已经在 Windows 端校验过 SHA256,这里可以跳过,能节省几分钟。
接下来进入图形化安装界面,首先会让你选语言。这里选中文还是英文都没有问题,不会影响系统底层配置。选中文的好处是菜单看得懂,选英文的好处是以后遇到报错信息能快速关联,毕竟真实服务器上的报错几乎都是英文。我个人建议新手选中文,先顺利装完再说,等你需要纯英文环境时自然可以切换。
系统进入安装摘要页面后,有几个地方必须手动设置。第一是“软件选择”,这里决定你装完系统是什么形态。如果之前用的是 DVD 镜像,这里可以勾选“GNOME 桌面”,顺手在右侧补充勾选“开发工具”;如果用的 Minimial 镜像,这里只有“最小安装”一个选项,也不会有图形界面。第二是“安装位置”,点进去后选择硬盘,然后在“其他存储选项”里确认是“自动配置分区”还是“我要配置分区”,我建议选后者,手动配置能让你理解 Linux 分区逻辑。
3.4 手动分区到底怎么分
分区是很多新手觉得复杂的地方,其实思路并不难。进入“手动分区”后,先在下拉菜单里选择“LVM”,再点“点击这里自动创建它们”,让系统自动生成一套 LVM 布局。大多数人不知道的是,LVM 是 Logical Volume Manager(逻辑卷管理)的缩写,它给磁盘加了一层“弹性伸缩”的抽象层,普通分区建完后大小不能改,而 LVM 逻辑卷可以随时扩缩容。CentOS 7 默认支持 LVM,建议你从一开始就养成用 LVM 的习惯。
如果你选择完全手动分区,我会这么分:
- /boot 分区:1GB,标准分区,xfs 格式。这个分区放的是内核和引导文件,不用太大。
- swap 分区:2GB,标准分区。内存 2GB 的情况下,swap 设 2GB 足够,不用听网上说的“swap 必须是内存两倍”,今天的服务器内存都很大,swap 过大反而浪费磁盘。
- / 根分区:剩余全部空间,LVM 卷,xfs 格式。所有系统文件、软件、用户数据默认都在这里。
分区的核心思想就是 /boot 单独放,swap 给一个固定大小,剩下的都丢给根分区,简单干净。你以后如果练习服务部署、装数据库,不用担心“某个目录空间不够”,因为都在根分区下面。那种把 /home 单独分出来的做法也有它的道理,但对学习环境来说,根分区一把梭最省心。
完成分区方案后,点击“完成”会弹出“接受更改”的确认框,确认无误后点“接受更改”。然后回到摘要页面,找到“网络和主机名”,把以太网开关拨到打开的位置,确保安装完成时网卡就是启用状态,这一步能省去后面手动开启网卡的麻烦。接下来设置 root 密码,密码建议有一定复杂度,这是你系统的超级管理员权限,太简单容易被暴力破解。如果你还想要一个普通用户,可以在“创建用户”里配置,并勾选“将此用户设为管理员”。
全部设置完成后,点“开始安装”,CentOS 会开始写入系统文件。这时候可以等几分钟,装完后点“重启”,重启时记得把虚拟机的光驱断开连接,或者把启动顺序调整成硬盘优先,否则可能又会从 iso 启动。
3.5 首次启动与许可确认
重启后,系统会进入一个初始设置页面,需要你完成“许可证信息”确认。如果你之前创建了普通用户,这一步通常是直接跳到登录界面,如果没创建,系统会提示你设置一个管理员用户或直接登录 root。图形界面下输入用户名密码就能进入桌面,命令行界面就是登录提示符。
首次登录系统后,我建议你做的第一件事不是炫耀桌面,也不是急着装软件,而是打一条命令确认网络是否真的通了:
ping -c 4 www.baidu.com能收到回复,说明网络通了,虚拟机可以正常上网。如果 ping 不通,不要慌,后面第 6 章有专门的排查方法,绝大多数情况都是 VMware 的虚拟网卡服务没启动或者网卡没拿到 IP。
4. 安装完成后的基础配置
4.1 网络配置详解:DHCP 与静态 IP
CentOS 7 安装时如果开了网络,默认是 DHCP 自动获取 IP。对学习环境来说,DHCP 省事,但有一个问题:虚拟机重启后 IP 地址可能变化,你如果通过 SSH 远程连这台虚拟机,IP 一变就连不上了。所以我的建议是配置静态 IP,让虚拟机固定在一个地址上。
CentOS 7 的网络配置文件在 /etc/sysconfig/network-scripts/ 目录下,文件名类似 ifcfg-ens33,ens33 是网卡名。修改前先备份,然后用 vi 编辑:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak vi /etc/sysconfig/network-scripts/ifcfg-ens33把 BOOTPROTO 改成 static,然后在文件末尾添加 IPADDR、NETMASK、GATEWAY、DNS1 这几项。IP 地址怎么选?你要先看 VMware 虚拟网络编辑器里 VMnet8 的子网网段,通常是 192.168.x.0,网关通常是 192.168.x.2,DNS 可以用 223.5.5.5 或 8.8.8.8。把虚拟机 IP 设为和网段内不冲突的地址,比如 192.168.x.128。
改完配置后重启网络服务:
systemctl restart network再验证一下。这套流程在面试和实际工作中都很常考,建议你亲手操作几遍,不要只在图形界面的“设置里点一下网络”就完事。图形界面改的也是同一个配置,但命令行改法能让你明白它背后到底做了什么。
4.2 配置 yum 源并安装常用软件
CentOS 7 默认的 yum 源是官方源,国内访问速度不稳定,我通常直接换国内镜像源。替换前先把系统自带的源做个备份:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak然后从阿里云镜像源下载新的 repo 文件放到 /etc/yum.repos.d/ 下,命令是:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo下载完以后执行 yum clean all && yum makecache。这一步做完,你再用 yum install 安装软件,速度会有明显提升。CentOS 7 用的是经典的 yum,CentOS 8 以上默认是 dnf,但命令的用法基本相似,你学 yum 的经验不会白费。
常用软件方面,我建议把这些一次装齐,后面用起来会顺手很多:
yum install -y vim wget net-tools unzip zip lrzsz gcc make- net-tools 提供 ifconfig、netstat 等命令,CentOS 7 默认没装。
- lrzsz 提供 rz/sz 命令,用于文件从 Windows 直接传到 Linux。
- gcc 和 make 是编译工具,后面源码安装软件时必备。
4.3 关闭防火墙与 SELinux 的取舍
CentOS 7 默认开启了 firewalld 防火墙和 SELinux,这两个东西对安全很重要,但对新手学习环境来说,它们经常是“问题制造机”。你在虚拟机上搭了一个 Web 服务,宿主机无论如何访问不了,一排查,十有八九是防火墙没放行端口。
我的建议是学习阶段先把防火墙关掉:
systemctl stop firewalld systemctl disable firewallddisable 是让防火墙开机不启动,stop 是立即停止。等以后你真正理解了端口、服务、安全策略的概念,再把它开回来也不迟。SELinux 同理,它是 Linux 内核里的安全增强模块,机制比较复杂,新手在没搞懂情况下常常遇到“权限明明对了还是拒绝访问”的问题。临时关闭用:
setenforce 0永久关闭需要修改 /etc/selinux/config 文件,把 SELINUX=enforcing 改成 SELINUX=disabled。注意修改这个文件后要重启才完全生效。
这里必须提醒一句:在真实的生产服务器上,不要轻易关闭防火墙和 SELinux。我这里让你关,是为了降低学习环境的排障门槛,等你以后管真机了,安全基线还是要做扎实的。
4.4 安装 open-vm-tools 提升虚拟机体验
VMware 虚拟机装完 Linux 后,如果不装 VMware Tools,你很快会发现几个问题:虚拟机窗口分辨率不能自适应,不能和宿主机共享剪贴板,鼠标切换也不顺畅。VMware Tools 就是解决这些问题的工具,但我们不需要用 VMware 菜单里的那个“安装 VMware Tools”,直接用开源版本 open-vm-tools 更方便,它已经包含在 CentOS 官方软件源里。
安装命令:
yum install -y open-vm-tools open-vm-tools-desktop装完后重启虚拟机,桌面版的 open-vm-tools-desktop 会自动处理分辨率适配和剪贴板共享。如果你需要和宿主机共享文件夹,用 VMware 界面里的“虚拟机设置 -> 选项 -> 共享文件夹”,选中文件夹,再在虚拟机里挂载。共享文件夹功能在新版 open-vm-tools 里支持度已经很好了,但偶尔会有挂载不上的情况,后面第 6 章我会写排查方法。
5. 日常操作与常用命令速查
5.1 文件管理、用户权限与进程资源命令
装好系统的下一步,就是拿它当日常练习环境用。这里我整理了一份我在实际教学中高频使用的命令清单,适合刚接触命令行的朋友,每天敲几遍,一周基本就能形成肌肉记忆。
文件目录类:
ls -l # 查看当前目录详细信息 cd /etc # 切换目录 pwd # 显示当前所在路径 mkdir -p a/b # 递归创建多层目录 cp -r dir1 dir2 # 复制目录 rm -rf dir # 删除目录(谨慎使用) find / -name "nginx.conf" # 全盘查找文件 grep -r "error" /var/log/ # 在目录中递归搜索关键词用户权限类:
useradd zhangsan # 新建用户 passwd zhangsan # 设置密码 usermod -aG wheel zhangsan # 把用户加入管理员组 su - zhangsan # 切换用户 sudo 命令 # 用管理员权限执行命令 chmod 755 file # 修改文件权限 chown root:root file # 修改文件属主属组进程资源类:
ps -ef | grep nginx # 查看进程 top # 实时查看资源占用 free -h # 查看内存 df -h # 查看磁盘空间 du -sh /var/log # 查看目录占用大小 systemctl status sshd # 查看服务状态 ss -lntp # 查看端口监听情况这些命令的规律性很强,比如 systemctl 服务管理、journalctl 日志查看,都是 CentOS 7 的核心操作体系,面试和实操都绕不开。
5.2 软件安装与压缩解压常见坑
CentOS 7 下安装软件最常用的是 yum,它可以从配置好的 yum 源里自动下载依赖并安装:
yum search 关键词 # 搜索软件包 yum install -y 包名 # 安装 yum remove 包名 # 卸载 yum list installed # 查看已安装包如果需要安装本地 rpm 包,使用 rpm -ivh 包名.rpm。但 rpm 不会自动解决依赖,所以如果安装时报缺少依赖,优先考虑用 yum 安装或者先手动装依赖。
解压文件踩坑最典型的是 zip 中文乱码。Windows 上压缩的 zip 文件内文件名编码是 GBK/CP936,而 Linux 默认按 UTF-8 解压,就出现乱码。解决办法是安装 unzip 并指定编码:
yum install -y unzip unzip -O CP936 文件名.zip还有一种情况是 tar.gz 包解压后文件权限不对,可以用解压时保留权限:
tar -zxvf 文件名.tar.gz tar -xvf 文件名.tar.xz5.3 快照、克隆与备份思路
学习过程中一定要养成打快照的习惯。快照相当于给虚拟机的当前状态拍了一张照片,系统搞坏了随时可以回退。在 VMware 界面里,菜单栏“虚拟机 -> 快照 -> 拍摄快照”,或者用快捷键。我会在系统刚装好、网络配好、软件装齐这三个节点各拍一个快照,后面不管怎么折腾,都有干净的底子可以恢复。
克隆则适合一次配置好环境后复制出多台机器,比如你想练集群、练多机通信。克隆前建议先把虚拟机关机,然后“虚拟机 -> 管理 -> 克隆”。克隆出来的机器网卡 MAC 地址会和原机不同,但 CentOS 7 的网卡配置里还保留着旧的 HWADDR 记录,需要编辑 ifcfg 文件更新或者直接删除 HWADDR 那一行,否则克隆机的网卡可能起不来。
6. 常见问题与排查技巧实录
6.1 虚拟机安装过程中蓝屏或失败
说起蓝屏,我自己早期就碰到过几次,而且特别容易发生在 Windows 宿主机上。蓝屏的原因非常复杂,但绝大多数和“虚拟化”设置有关。VMware Workstation 在运行虚拟机时,会尝试使用 CPU 的硬件虚拟化特性,如果你的 BIOS/UEFI 里没开启 VT-x/AMD-V,或者开启了但和 Windows 的 Hyper-V 冲突,就会出现蓝屏或虚拟机启动失败。
排查思路是:先确认 BIOS/UEFI 里 Intel Virtualization Technology 或 AMD SVM 是否开启,然后打开 Windows 的“启用或关闭 Windows 功能”,看 Hyper-V、Windows 虚拟机监控程序平台、Windows 沙盒这几个功能是否被勾选,它们在 VMware 同时使用时可能冲突。注意关闭这些功能后需要重启电脑才生效,重启后再打开 VMware 试试。
还有一种蓝屏情况发生在安装界面刚开始加载时,屏幕上显示“Intel VT-x is not available”之类的提示。这就是 CPU 虚拟化功能没开启或者 VMware 设置里没开启“虚拟化 Intel VT-x/EPT”选项,可以在虚拟机设置 -> 处理器 -> 勾选“虚拟化 Intel VT-x/EPT”或“虚拟化 AMD-V/RVI V”。
6.2 CentOS ping 不通网关或外网
“ping 不通网关”是我收到过最多的求助问题。先说排查路径,记住从近到远:先看虚拟机的网卡 IP 有没有配置好,再看 VMware 的虚拟网卡服务有没有运行,再看路由网关是否可达,最后看 DNS 能不能解析域名。
在 CentOS 里依次执行:
ip addr # 看网卡有没有 IP ip route # 看默认网关 ping -c 4 192.168.x.1 # ping 虚拟网卡网关 ping -c 4 223.5.5.5 # ping 外网 IP,能通说明网络层没问题 ping -c 4 www.baidu.com # 解析域名,能通说明 DNS 正常哪一步不通就重点查哪一步。如果是网关不通,检查宿主机 Windows 服务列表里的 VMware NAT Service 和 VMware DHCP Service 是否正在运行,这两个服务偶发会挂掉,手动启动即可。如果是外网 IP 不通但网关通,大概率是 NAT 服务路由出了问题,重启 VMware NAT 服务,或者在虚拟网络编辑器里点“还原默认设置”,但注意这会把自定义配置也还原掉。
6.3 虚拟机黑屏、卡死与没有配置选项的处理
VMware 装好系统后,有时候屏幕上显示黑屏,鼠标转圈,桌面起不来。这种情况最常见的原因是系统内核和 VMware 显卡驱动不匹配,特别是你在安装时选了带桌面的版本,而 open-vm-tools-desktop 没有装或者版本不对。解决方法是按 Ctrl+Alt+F2 切换到文本终端,登录后重新安装 open-vm-tools-desktop,然后重启。
还有种黑屏是 VMware 窗口提示“No configuration found”或者工具栏没有“虚拟机”菜单,这通常是许可证或安装不完整导致的问题。处理方法是关闭 VMware,以管理员身份重新运行安装程序选择修复安装,或者去官网下载最新版覆盖安装。很多网上的“精简版”VMware 阉割了组件,就会出现这种奇怪毛病,我建议都去官网下载完整版。
6.4 磁盘扩容与 LVM 扩展实操
虚拟机磁盘空间不够是迟早的事,好在 LVM 分区方案让扩容不那么痛苦,我的步骤分成两层。第一层是 VMware 层面,先把虚拟机关机,在“虚拟机设置 -> 硬盘 -> 磁盘大小”里把 30GB 改成 50GB,然后开启虚拟机。
第二层是系统内部操作,用 fdisk 创建新分区,然后扩展 LVM 逻辑卷。常用命令流程是:
fdisk /dev/sda # 输入 n 创建新分区 # 输入 w 保存退出 partprobe # 让内核重新读取分区表 pvcreate /dev/sda3 # 把新分区做成物理卷 vgextend centos /dev/sda3 # 扩展现有卷组,卷组名用 vgdisplay 查看 lvextend -L +20G /dev/centos/root # 把新空间分配到 root 逻辑卷 xfs_growfs /dev/centos/root # 让 xfs 文件系统感知新大小这套流程看着不复杂,但每一步执行完都用 df -h 确认一下,不要一口气连敲。如果你安装时选的是“标准分区”而非 LVM,扩容会麻烦很多,这也是我一直强调用 LVM 的原因。
6.5 SSH 连接失败与远程端口修改
很多人装好虚拟机后喜欢用 Xshell 或 SecureCRT 从宿主机远程连接 CentOS,省得在虚拟机窗口里打字。连接失败的原因通常是两个:SSH 服务没启动,或者防火墙拦截了 22 端口。
SSH 服务操作:
systemctl start sshd systemctl enable sshd如果前面已经按我的建议关了防火墙,那 22 端口就畅通了。但如果你要改成自定义端口,比如 2222,需要修改 /etc/ssh/sshd_config,把 Port 改成 2222,然后重启 sshd 服务。注意如果你没关防火墙,还要用下面的命令放行新端口:
firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --reload改完端口后用 ssh -p 2222 用户名@虚拟机IP 连接。这里有个坑是,如果你还开着 SELinux,它默认只放行 22 端口给 SSH,光改 sshd_config 不够,还要执行 semanage port -a -t ssh_port_t -p tcp 2222,不然连不上。
6.6 共享文件夹、剪贴板和文件乱码的细节
open-vm-tools 装好后,共享文件夹默认不会自动出现,需要在 VMware 虚拟机设置里启用共享文件夹功能,然后在 CentOS 里挂载:
mkdir -p /mnt/hgfs vmhgfs-fuse .host:/ /mnt/hgfs如果想开机自动挂载,可以把 vmhgfs-fuse .host:/ /mnt/hgfs 写入 /etc/fstab 文件。共享文件夹不能用怎么办?先确认你的内核版本和 open-vm-tools 版本匹配,升级系统内核后经常会导致 vmhgfs 内核模块需要重新编译,这时候需要重新安装 open-vm-tools。
宿主机和虚拟机之间的文件传输,除了共享文件夹,还可以用 lrzsz 提供的 rz/sz 命令,Windows 端打开 Xshell 直接拖拽文件到窗口就能上传,非常方便。如果你在用 tar 打包文件到 Windows 解压后发现文件名乱码,这是两端编码习惯不同导致的,打包前用 zip 时指定 UTF-8 或者解压时用 -O 参数即可。
7. 一些个人实操心得与后续扩展建议
说了这么多,最后分享几个我自己用下来的体会。
第一,学习 Linux 不要贪“新”。很多人虚拟机装 CentOS 8 或者 Stream,觉得版本新就是好,但新版本往往伴随新的坑和更少的资料。CentOS 7.9 虽然是老版本,但它的稳定性和资料完备程度是学习阶段最稀缺的。只要你把 7.9 的命令和思路学透了,以后切换任何新发行版,成本都很低。
第二,一定要做快照。我见过太多人辛苦配好环境,结果为了练一个命令把系统搞挂了,又没做快照,最后只能重装。重装一次至少要半小时,有快照的话一分钟就回来了。我的习惯是“安装完成并配置好基础环境后拍一个快照,安装完大数据组件或中间件后再拍一个”,这样每个阶段都有干净的退路。
第三,命令行操作时,凡是涉及删除和覆盖的命令,先停下来想三秒。rm -rf / 这种我就不说了,关键是很多人习惯用 root 权限操作,一条命令敲错就可能毁掉半天工作。建议日常登录使用普通用户,需要用管理员权限时再用 sudo,这也是在生产环境里最安全的习惯。
第四,要给这台虚拟机安排一个长期任务,比如跑一个 Nginx 服务、搭一个 MySQL 数据库,或者做一个小型 Git 仓库。只停留在“我会敲命令”是不够的,让虚拟机持续提供某个服务,你才会真正理解系统运维里日志、定时任务、进程管理到底意味着什么。
后续如果你想继续深入,可以尝试多台虚拟机组一个小网络,比如用克隆快速复制出三台服务器,手动配置静态 IP,把 ssh 免密登录、NTP 时间同步、hosts 解析这些都练一遍。等这些都能熟练完成了,你对 CentOS 的理解就已经超过大多数靠“复制粘贴”装系统的人了。
这台虚拟机以后就是你的练功房,大胆折腾吧,装坏了就恢复快照,没有什么是重来一次解决不了的。