最近又有朋友问我VMware里怎么装CentOS 8,说按着网上老教程一步步走,却在"安装源"那一步卡住,报错提示找不到软件仓库或无法联网。其实这个问题的根源很明确:CentOS 8在2021年底就停止维护了,官方仓库下线,你拿老教程里提供的旧镜像,配的又是已经失效的官方yum源,系统自然装不进去也装不完全。这篇博客就把整套流程重新捋一遍——从VMware创建虚拟机、到CentOS 8系统安装、再到换成国内vault镜像源让yum恢复工作,最后把VMware Tools和静态网络配好,一次讲透。不管你是刚摸Linux的初学者,还是需要快速搭虚拟环境的开发、运维,照着这套步骤走,基本不会再被"安装源报错"这类问题卡住。
1. 动工之前,先把这几个概念弄清楚再上手
1.1 CentOS 8停止维护到底意味着什么
很多人没有意识到,CentOS 8不是"还能用"的普通老版本,而是已经EOL(End of Life)的系统。红帽官方在2021年12月31日就停止了对CentOS 8的维护,这意味着两个直接后果:
第一,官方软件仓库mirror.centos.org里,CentOS 8的目录已经被移除或移入vault目录,原来的yum源地址全部失效。系统装好后,如果你直接执行yum install任何软件,几乎100%会收到"无法从镜像列表获取元数据"或"Could not resolve host: mirrorlist.centos.org"的错误。这不是你网络的问题,是仓库真的没了。
第二,系统本身的更新包、安全补丁不再发布,所以它就是一台"固定版本"的机器。很多生产环境还在用CentOS 8,主要是因为业务依赖它验证过的环境。我们安装CentOS 8也是一样的思路——图稳定、图兼容,不是图新功能。
理解了这两点,你就能明白为什么网上那些旧教程不能直接照搬:它们教你的yum源配置、epel配置,全是针对还在生命周期内的系统写的,对CentOS 8已经不成立。所以后续章节里,配置镜像源的部分才是整个安装流程的真正关键点,系统安装本身反而相对机械。
1.2 镜像源是什么,为什么必须换
镜像源,简单说就是"软件仓库的备份站"。各大高校和云厂商会把CentOS、Ubuntu这类Linux发行版的仓库内容同步到自己的服务器上,形成一个和官方仓库几乎一模一样的副本。你访问国内镜像站,速度和稳定性往往比访问国外官方源要好得多,尤其在虚拟机场景下,能明显缩短软件安装时间。
对于CentOS 8这种已经停服的版本,镜像站提供的通常是"vault"目录。vault这个词可以理解为"归档库",专门存放那些已经停止维护的版本。比如清华TUNA镜像站有/centos-vault/目录,阿里云有/centos-vault/目录,中科大也有/centos-vault/目录。我们需要做的,就是让yum去这些归档库里找软件包。
换源的逻辑其实不复杂,核心就是修改/etc/yum.repos.d/目录下的repo文件,把baseurl指向可用的镜像站vault地址,再把mirrorlist配置删掉或者注释掉。把这个套路搞清楚,以后不管装什么版本的系统、遇到什么换源问题,你都能自己解决。
1.3 提前备好这三样东西
动手之前,先确认你手上有这三样:
- VMware Workstation Pro。目前版本已经出到17,官方对个人学习用途免费开放,直接去VMware官网下载正式版本就可以,不需要找什么特殊授权。注册一个账号走个人许可流程,零成本。
- CentOS 8的ISO镜像。注意,CentOS 8的DVD镜像在国内镜像站基本都已经下架了,因为太老。最稳的方法是去镜像站的
centos-vault/8.5.2111/isos/x86_64/目录下载CentOS-8.5.2111-x86_64-dvd1.iso,文件名里带dvd1的就是完整安装镜像。8.5.2111是CentOS 8的最终小版本,建议直接下这个。如果你手头是8.0到8.4之间的老镜像,也能用,不过装完后的补丁差异会有,后面配源时统一按8.5.2111处理最省事。 - 一个能联网的环境。后面配置yum源时,需要从镜像站拉取软件包元数据,所以虚拟机必须能访问外网。
2. VM环境搭建:创建一台像样的CentOS 8虚拟机
2.1 VMware Workstation的配置策略
很多新手一上来就双击VMware图标、点"新建虚拟机"、一路下一步,这样也能装,但建出来的虚拟机配置往往不合理。我的习惯是打开VMware后,先看一眼"编辑"菜单下的"偏好设置",确认一下默认虚拟机位置是不是在空间充足的磁盘上。CentOS 8安装后至少要占5到8GB,如果之后还要装数据库、容器环境,二三十GB很正常,C盘预留不足很容易翻车。
另外建议在安装之前先把虚拟机的网络模式想清楚,不要等装完系统再回去折腾网卡。对于绝大多数学习、测试场景,NAT模式是最省心的方案,虚拟机通过宿主机共享IP上网,不需要额外配置就能联网。如果你需要让局域网其他机器直接访问虚拟机里的服务,那才考虑桥接模式。这部分后面细说。
2.2 新建虚拟机时这些参数要认真给
点击"新建虚拟机",选择"自定义(高级)"比"典型"更可控。硬件兼容性按默认走,之后这几项是关键:
- 安装来源:选择"稍后安装操作系统",把ISO挂载放到系统装好后再挂。这一步是为了避免VMware的简易安装自动生成一些我们不想要的分区策略。
- 客户机操作系统:Linux,版本下拉菜单里选"CentOS 8 64位"。如果版本列表里没有CentOS 8,选"Red Hat Enterprise Linux 8 64位"也可以,因为CentOS本来就是RHEL的克隆,VMware对两者的驱动兼容性是一致的。
- 处理器:建议2核心起步。单核心装系统会明显偏卡,虽然也能装,但配yum源、编译软件的时候等待时间会翻倍。
- 内存:至少分配2048MB。如果打算装带图形界面的版本,建议直接4096MB,否则GNOME桌面会卡得让人怀疑人生。这里的一个建议是不要低于此值,内存太小会触发CentOS安装器OOM,或者明明装好了系统,进桌面后又各种无响应。
- 磁盘:创建虚拟磁盘大小给30GB。CentOS 8最小安装也就占五六个G,但后续软件包、容器镜像、日志都会占空间,30GB是比较安全的下限。磁盘类型默认NVMe或SCSI都可以,性能差异在虚拟环境下影响不大。
- 自定义硬件里,把"新CD/DVD"设置为"使用ISO镜像文件",选中刚才下载的CentOS 8 ISO。
2.3 网络模式:NAT还是桥接,别选错
VMware的三种网络模式里,NAT和桥接是最常用的,Host-only基本只在隔离测试时用。
NAT模式下,虚拟机和宿主机组成一个独立的私有网段,虚拟机对外访问时通过宿主机转发。优点是虚拟机IP固定在一个内部网段,不受外部网络变化影响,宿主机带着笔记本到处换WiFi都不影响虚拟机上网,非常适合学习环境。CentOS 8默认安装时会把NAT网卡识别为ens160或者类似命名,DHCP自动获取IP,开箱即用。
桥接模式下,虚拟机会直接出现在物理局域网中,和宿主机处于同一网段,别人可以直接访问虚拟机IP。副作用是,一旦宿主机切换网络,虚拟机的IP可能变化或失效,需要重新配置。
我的建议很直接:个人学习、搭测试环境,一律用NAT;如果你在部署一个真正对外提供服务的虚拟服务器,再考虑桥接并配合静态IP。后面配置网络的部分也是基于NAT模式讲的。
3. 从ISO启动到系统安装完成,全程实操
3.1 安装引导界面操作细节
启动虚拟机后,会看到CentOS 8的引导菜单。这里有几个选项:Install CentOS 8、Test this media & install CentOS 8,以及Troubleshooting。按方向键选第一项回车就行,"Test this media"检查光盘完整性比较耗时,只要ISO是你从正规镜像站下载的,基本可以跳过这个校验,具体看个人习惯。
进入安装界面后,语言选择建议选"English",不要选中文。倒不是说中文不行,而是CentOS 8的安装日志、报错信息、命令行输出全是以英文为主的,后期你在网上搜问题,需要把中文路径对应回英文才能查资料,徒增成本。系统装好后想汉化随时可以装语言包。
选完语言进入"INSTALLATION SUMMARY"主菜单,这里要做的配置一般是:Software选择软件组、System里的Installation Destination做磁盘分区,然后点右下角"Begin Installation"。网络和主机名那一项,NAT模式下一般已经是连接状态,可以先放着,也可以顺便设个hostname。
3.2 软件选择:图形界面还是最小安装,关键看用途
在Software Selection里,CentOS 8会让你选软件组。常见的两个方向:
- Server with GUI:带GNOME图形桌面,适合新手刚开始熟悉Linux、或者你要在里面跑浏览器/图形化工具的场景。缺点是内存占用高,系统占用磁盘空间也更大。
- Minimal Install:纯命令行环境,适合做服务器、跑服务、学操作。占用小、干净,也更贴近生产环境。
如果你只是搭个环境跑跑命令,我强烈建议选Minimal Install。很多老教程默认让你装GUI,结果后续查问题、写配置全在图形界面里操作,反而把最基本的命令行基本功丢了。而且Minimal模式对系统资源要求低,虚拟机的性能体验更好。当然,如果你确实需要图形界面,选Server with GUI也没问题,两者后续转换也不是不能做,只是麻烦而已。
3.3 磁盘分区和密码设置注意事项
在Installation Destination里,保持默认"Automatic"选项,直接按Done即可。对于虚拟机里的CentOS 8,自动分区会生成/boot、/root和swap等标准布局,已经够用。手动分区不是不行,但对大多数场景没太大必要,尤其是对Linux还不太熟的时候,手动分区很容易分配不合理,比如给swap分配过大把根分区饿死,或者忘了给/boot单独分区导致后续系统升级出问题。
点击Begin Installation后,系统会进入配置用户和root密码的界面。Root密码务必设置一个你能记得住的强密码,这个是你进入系统的最终通行证。如果你勾选了"Lock root account",那还要创建一个自定义用户,并用sudo来执行管理员命令。这里有一个常见坑:密码强度校验默认是开启的,你设一个特别简单的密码它会拒绝,所以直接给root设一个包含大小写字母和数字的密码,省得折腾。
安装完成后点击Reboot,注意把虚拟机的CD/DVD设置改回"使用物理驱动器"或移除ISO挂载,否则重启后引导菜单又会去读ISO,出现重复安装的问题。
3.4 装完第一次登录要做的三件事
重启进入系统后,用root登录(或者在自定义用户下执行sudo -i切换root)。第一次登录,我习惯按顺序做三件事:
第一,确认版本信息。执行cat /etc/redhat-release,确认是8.5还是别的版本,后面配源时要用到。
第二,确认网络连通。执行ip addr查看网卡有没有拿到IP,再执行ping -c 3 baidu.com,看看外网通不通。如果这步都通不过,后面配源肯定白搭,先排查网卡和DNS。
第三,检查/etc/yum.repos.d/目录下有哪些repo文件。CentOS 8默认会生成CentOS-Base.repo、CentOS-AppStream.repo、CentOS-Extras.repo等几个文件,这些就是系统安装软件的"货源清单",后面我们改的就是它们。
4. 重头戏:把yum源换成国内vault镜像源
4.1 为什么配完系统,yum还是报错
系统装好以后,如果你直接执行yum update,大概率会看到类似这样的报错:
Errors during downloading metadata for repository 'AppStream': - Status code: 404 for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock原因前面已经提过:CentOS 8停服后,官方源上的元数据文件已经被清理,yum先去访问mirrorlist获取镜像列表,发现根本解析不到或者返回404。所以你第一步要做的,就是彻底放弃对官方源的依赖。
需要特别提醒的是,网上有不少教程会让你用sed命令把mirror.centos.org替换成vault.centos.org,这个做法在2022年之前是可行的,但现在官方vault的访问速度和稳定性也不如国内镜像站,而且一直用官方vault还有可能遇到证书过期、仓库缺失的情况。既然你网络环境已经能正常访问国内资源,直接切到国内镜像站的centos-vault目录是最稳妥的选择。
4.2 手动备份并重写repo文件,一次配好
下面我用阿里云镜像站的centos-vault目录来演示,清华和中科大的操作是一样的,只是域名不同。给出完整可执行的步骤:
先在命令行执行:
mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/备份老配置是必做步骤,别偷懒。接下来新建一个repo文件,名字随意,比如叫CentOS-Vault-aliyun.repo:
vi /etc/yum.repos.d/CentOS-Vault-aliyun.repo写入下面内容,注意8.5.2111要和你的系统版本对应:
[baseos] name=CentOS-8-BaseOS baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/ gpgcheck=1 enabled=1 gpgkey=https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/RPM-GPG-KEY-CentOS-8 [appstream] name=CentOS-8-AppStream baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/ gpgcheck=1 enabled=1 gpgkey=https://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/RPM-GPG-KEY-CentOS-8 [extras] name=CentOS-8-Extras baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/extras/x86_64/os/ gpgcheck=1 enabled=1 gpgkey=https://mirrors.aliyun.com/centos-vault/8.5.2111/extras/x86_64/os/RPM-GPG-KEY-CentOS-8保存退出后,先把缓存清掉,再重建缓存:
yum clean all yum makecache如果一切正常,你会看到yum从mirrors.aliyun.com拉取元数据,最后提示"Metadata cache created"。执行yum repolist能列出三个仓库以及软件包数量,到这一步镜像源就算配成功了。
如果不想用阿里云,清华源只要把baseurl改成https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8.5.2111/...,中科大的地址是https://mirrors.ustc.edu.cn/centos-vault/8.5.2111/...,其他文件路径结构完全一样。
4.3 EPEL仓库,需要时顺手加上
如果你后续要装一些不在CentOS基础仓库里的软件,比如nginx、redis、htop这些,大概率还要配EPEL仓库。EPEL的全称是Extra Packages for Enterprise Linux,是Fedora社区为RHEL系维护的扩展仓库。
EPEL针对CentOS 8也有对应的vault版本。依然以阿里云为例,追加一个repo文件:
vi /etc/yum.repos.d/epel-aliyun.repo内容如下:
[epel] name=EPEL-8 baseurl=https://mirrors.aliyun.com/epel-8/Everything/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8然后再执行yum clean all && yum makecache即可。EPEL仓库不需要带vault,因为阿里云的epel-8目录是持续维护的,虽然CentOS 8停服,但EPEL 8的源还有一段时间生命周期。
4.4 换源后的验证手段
光看yum makecache成功还不够,建议再做一个真实环境的验证操作。随便安装一个小软件,比如yum install -y vim,如果在安装过程中能正常下载RPM包,且没有报404、校验失败之类的错误,那说明整个链路:yum -> 镜像站 -> RPM下载 -> GPG校验,都是通的。
另外我自己有个习惯,换完源以后执行一次yum update -y。因为从安装ISO到现在,系统里可能有部分软件包版本较旧,update一次能把能找到的更新全部装上,虽然需要一点时间,但换来的是系统内软件版本更一致,后续编译、安装依赖软件时踩坑的概率低很多。注意这一步网络下载量会比较大,耐心等它跑完即可。
5. 让虚拟机更像"真机":VMware Tools与网络配置
5.1 优先使用open-vm-tools,而不是VMware Tools
很多教程会让你点VMware菜单栏的"虚拟机 -> 安装VMware Tools",然后挂载ISO进去运行vmware-install.pl脚本。但在CentOS 8这种新版系统上,这套老流程经常出问题,最常见的报错就是"继续运行脚本未能在虚拟机中成功运行",然后虚拟机屏幕分辨率被锁死,鼠标进出不流畅,麻烦不断。
我现在的做法非常简单:直接安装发行版自带的open-vm-tools。VMware早就把虚拟化增强工具做成开源版,集成到各大Linux发行版仓库里了,CentOS 8仓库里就有。在刚配好的源基础上,一条命令就搞定:
yum install -y open-vm-tools装完之后把服务设为开机自启:
systemctl enable --now vmtoolsd这套工具能提供VMware对虚拟机的时钟同步、剪贴板共享、鼠标无缝进出窗口、屏幕分辨率自适应等功能,和VMware自带的VMware Tools功能几乎一致,还不用经历挂载ISO和编译脚本的痛苦,强烈推荐。如果之后你的虚拟机要跑生产工作负载,open-vm-tools也是更受官方认可的方式。
5.2 用nmcli配置静态IP
NAT模式下,CentOS 8默认用DHCP获取IP,这满足大多数学习场景。但如果你想给虚拟机一个固定的IP,比如要给局域网里的其他设备访问,或者你要在虚拟机里起一些服务端口,那么静态IP配置就是刚需。
CentOS 8的网络管理默认走NetworkManager,命令行的配置工具是nmcli。先执行:
nmcli connection show会看到类似ens160的网卡连接名。接下来把DHCP改成手动分配IP:
nmcli connection modify ens160 \ ipv4.addresses 192.168.xxx.xxx/24 \ ipv4.gateway 192.168.xxx.1 \ ipv4.dns "223.5.5.5 119.29.29.29" \ ipv4.method manualIP地址段要和你VMware NAT网段的实际网关对应。可以打开VMware的"编辑 -> 虚拟网络编辑器",选中VMnet8,查看子网IP和网关地址,一般是192.168.x.0和192.168.x.1。然后重启网络连接:
nmcli connection down ens160 nmcli connection up ens160执行ip addr验证IP是否生效。用ping测一下网关,再ping一下公网,确认静态IP配好后网络没有断。这里我踩过一个坑,就是DNS只配置了一个阿里的223.5.5.5,有时候解析出问题,后来加了腾讯的119.29.29.29作为备用,解析稳多了。
5.3 系统装完,先打一个干净快照
安装配置到这里,整个环境已经处于"健康的初始状态",这时候我强烈建议在VMware里做一个快照。快照的意义在于,给你一个新装的、带可用源、带常用工具的虚拟机存一个还原点,之后你再怎么折腾,比如乱改配置、装坏软件、把系统搞到起不来,都能一键回到这个状态。
具体操作:在VMware主机窗口顶部点击"虚拟机 -> 快照 -> 拍摄快照",起个名,比如"CentOS8-base-configured",加上描述即可。注意快照在系统运行的时候也可以打,但更推荐在系统关机状态下拍摄,这样快照文件更干净。
以后如果要克隆多台虚拟机,也可以直接基于这个快照克隆,省去重复安装和配源的时间。可以说这个习惯帮我省下了无数次的重复劳动。
6. 常见问题速查与避坑笔记
6.1 安装阶段常见报错一览表
以下是我在实际安装和帮别人排查时,最常遇到的几个问题及处理方案,整理成表格方便对照:
| 问题现象 | 根本原因 | 解决办法 |
|---|---|---|
| 安装引导时卡在"test this media"或检测过慢 | ISO未做介质验证,系统逐文件检查 | 跳过检测,直接选择Install CentOS 8 |
| 安装时"安装源"提示找不到或无法访问 | 老教程给的安装源指向官方已下线地址 | 安装时选本地ISO源,不额外指定网络源 |
| 首次yum update报404 | 官方CentOS 8源已失效 | 按照第4章替换为国内vault源 |
| yum makecache报"模块化存储金库缺失的模块和流" | AppStream元数据与模块流不完整 | 确认repo配置中AppStream地址正确,删除本地缓存后重新makecache |
| 安装VMware Tools时提示脚本运行失败 | VMware tools脚本与新版系统库不兼容 | 改用yum install -y open-vm-tools |
| 虚拟机网络不通,ip addr没有IP | NAT网络未正确分配DHCP,或网卡未启动 | 检查VMnet8网段设置,用nmcli device connect ens160重新激活连接 |
6.2 配完源之后不要忘记的小事
还有一个很多人会忽略的问题:CentOS 8的AppStream模块仓库,有些软件包在vault里保留了旧版本,但部分模块元数据有缺失,安装某些软件时可能出现依赖冲突。遇到这种情况,我的经验是先检查baseurl是否正确,8.5.2111这个版本号是否和系统版本完全一致,不要用8这种通配符,因为vault归档目录是严格按版本号组织的。
另外如果你发现某个软件在vault源里根本没有,别硬装。考虑换个思路,用通用二进制、源码编译或者容器方式跑,会比跟yum源死磕更高效。
6.3 我的几条实操心得
-VMware里安装Linux系统,ISO镜像尽量从国内镜像站下载,不要拿一些老旧的下载站或网盘里的镜像,镜像损坏或者被改过会带来各种莫名其妙的问题。
- 配置yum源时不要图省事只改一个源文件,BaseOS、AppStream、Extras三个仓库都要有对应配置,缺一个后面总有某个软件装不上。
- 每次改动yum源配置后,养成
yum clean all && yum makecache的习惯,不然yum缓存里的旧元数据会覆盖新配置的效果。 - 虚拟机环境里,时间同步问题很容易被忽略,装了open-vm-tools后,时间问题基本能自动解决,不建议再在系统里额外启用NTP服务,两者有时会冲突。
说到底,VMware装CentOS 8这件事,最核心的拦路虎不是虚拟化配置,而是源的问题。只要把镜像源这一步走通,后面的操作基本都是常规操作。我实际操作下来,最舒服的路径是:下载8.5.2111的DVD ISO、建一台NAT网络模式的虚拟机、做Minimal安装、重启后立刻配阿里云vault源、装open-vm-tools、打快照收工。这套流程我前前后后帮别人跑了十几遍,至今没有翻车记录。如果你也是拿它来搭学习环境或者临时测试机,完全可以直接照着抄作业。