☰
CentOS 8 镜像下载安装与 yum 源修复指南
2026/10/1 18:34:13 网站建设 项目流程

CentOS 8 这几年在圈子里算是个挺尴尬的存在:2021 年 12 月 31 日官方正式宣告这个版本生命周期结束,2022 年初那一波"CentOS 8 停更"的消息几乎刷遍了所有技术群。但奇怪的是,直到今天,我每个月仍然会被问到"CentOS 8 下载安装"这件事——内网里跑着的老业务不敢动、培训班和考场环境还在用它、不少教材和录屏教程都是照着 8 的界面录的、还有些安全实验需要固定版本的基线环境。所以这篇东西不是给"新项目选型"写的,而是给那些确确实实绕不开 CentOS 8的人写的:怎么找到还能下载的镜像、怎么校验、怎么在虚拟机或物理机上装完、装完之后那个必踩的 yum 报错怎么修。哪怕你此前只会在图形界面点下一步,跟着走也能把这套流程跑通。

1. 动手之前先想清楚:CentOS 8 的定位与镜像选择

1.1 为什么 2022 年了还有人要装 CentOS 8

先把话说在前头:如果你是要给公司新上线的生产环境选操作系统,CentOS 8 已经不是一个合理选项了,这点没必要嘴硬。官方在 2020 年底调整了路线,CentOS Linux 8 的维护期被大幅缩短,2021 年 12 月 31 日之后标准仓库就不再更新安全补丁;后续接棒的是滚动发布的 CentOS Stream,定位完全变了,它更像是一个"上游开发预览版",稳定性预期和老 CentOS 不是一回事。

但现实场景里,绕不开的情况太多了。我碰到最多的是三类:第一类是内网遗留系统,一套 2020 年部署的业务系统,中间件、JDK、数据库全是按 CentOS 8 的依赖链编译的,换系统意味着整套重新验证,成本高到没人愿意批预算,于是大家的选择就是把它封在隔离网络里继续跑;第二类是教学与考试环境,很多培训机构的实验手册、认证考试的模拟环境、高校的操作系统课程,至今仍以 CentOS 8 为基线,因为教材改版的周期比系统迭代慢得多;第三类是个人复现需求,比如你从网上找了一份 2021 年的部署文档,作者明确写了"基于 CentOS 8.5 验证",你用 CentOS 7 或 Rocky 去跑,可能会在 glibc、systemd、Python 版本上撞一堆莫名其妙的坑。

所以我写这篇的定位很明确:帮你把一个可用的 CentOS 8 环境从零搭起来,并且让它在你手里是可维护的,而不是讨论它该不该继续存在。

1.2 版本号怎么选:8.5 是当前的事实终版

CentOS 8 发布过好几个小版本:8.0.1905、8.1.1911、8.2.2004、8.3.2011、8.4.2105、8.5.2111。前几个版本早就从主镜像站下线了,现在唯一还值得装、也最容易找到完整仓库的就是8.5.2111,它是整个 CentOS Linux 8 分支的最后一个版本。

这里有个很多人没注意的细节:小版本号不只是"新一点"的区别,它直接决定了你后面配 yum 源时要用哪个路径。比如你想把源指向归档站,就必须写清楚8.5.2111这个目录名,写错了就是 404。我见过有人拿着 8.4 的源地址往 8.5 的系统里塞,然后满头问号为什么每个仓库都报错。

选版本还有一条经验:如果你的文档或教程没明确指定小版本,就统一用 8.5.2111。它是终版,归档最完整,社区里针对它的踩坑记录也最多,遇到问题一搜就有答案。

1.3 DVD 版还是 Boot 版:一张表说清楚

CentOS 8.5.2111 官方提供两个 ISO,很多人下载时随手点一个,结果装到一半发现少东西,又得重来。先把区别摊开讲:

镜像文件体积装完大概占多少适用场景
CentOS-8.5.2111-x86_64-dvd1.iso约 8.4 GB最小化约 1.5 GB,带图形约 6 GB+离线环境、需要装图形界面、需要装额外软件包组
CentOS-8.5.2111-x86_64-boot.iso约 700 MB同上,但安装过程要联网网络通畅、只想装最小化系统、带宽紧张

说人话就是:DVD 版是"全量离线包",Boot 版是"在线安装器"。Boot 版在安装过程中会去拉取仓库里的包,所以它省的是下载时间,代价是安装时必须能访问网络,而且如果源已经不能用(CentOS 8 停更后很常见),Boot 版会直接卡在"正在下载软件包"那一步动不了。

我的建议是:除非你带宽特别紧张,否则一律下 DVD 版。8.4 GB 听起来吓人,但现在家用宽带下也就十几分钟的事,换来的是安装过程完全不依赖外部网络,后期换源失败也不影响系统本身的可用性。反过来,如果你在完全断网的内网里装,DVD 版就是唯一选择——Boot 版在那种环境下根本装不完。

还有一点:CentOS 8 没有单独的 Minimal ISO,这和 CentOS 7 不一样。7 时代有CentOS-7-x86_64-Minimal-xxxx.iso,8 把这个砍掉了,最小化安装是通过 DVD 版在安装界面里选"Minimal Install"软件包组来实现的,本质上是同一份镜像。所以你要是翻遍镜像站找不到 Minimal 版,不是你没找对地方,是它确实不存在。

2. 镜像下载与完整性校验

2.1 从哪里下载:归档站与国内镜像的选择

这是最容易踩坑的一步。很多人习惯性地打开搜索引擎搜"CentOS 8 下载",点进去发现页面还在,链接却全是 404,或者下载到一半断流。原因很简单:CentOS 8 停更后,主镜像站mirror.centos.org上的 8 分支目录已经被移除了,只剩 8-stream。你现在还能拿到的 8.5.2111 镜像,全都来自"归档"(vault)路径。

官方归档入口的目录结构是这样组织的:vault.centos.org/8.5.2111/isos/x86_64/,进到这一层就能看到 dvd1.iso、boot.iso 和校验文件。这个站点的好处是权威、文件完整;缺点是服务器在国外,速度看运气,我实测深夜能跑到几 MB/s,白天有时候只有几百 KB。

如果你追求下载速度,国内几家开源镜像站的归档区是更好的选择,它们都保留了 8.5.2111 的完整 ISO。这几个站点平时同步开源软件,属于正规的开源基础设施,路径规则大同小异,一般都是站点域名/centos-vault/8.5.2111/isos/x86_64/这种形式。我常用的几个方向:

  • 阿里云开源镜像站:同步及时,国内速度最稳,适合直接下载大 ISO。
  • 清华 TUNA 镜像站:文档清晰,归档目录规整,适合边下边核对文件清单。
  • 中科大 USTC 镜像站:教育网内速度极快,校园网用户优先考虑。
  • 华为云镜像站:企业网络环境下通常白名单友好。

提示:这几个站点都是公开的开源软件分发平台,只用于获取安装镜像,不要往上面传任何私有数据。

下载之前有件事值得做:先看一眼目录里是不是有一个叫CHECKSUM或者文件名带 sha256 的小文件。这东西是你后面校验镜像的凭据,很多人下完 ISO 就走了,回头发现镜像损坏,白装一遍。

2.2 校验镜像:别省这三分钟

我见过太多"装到一半报错"的案例,根源都是 ISO 下载时出了错——断点续传没接好、下载工具把文件截断了、或者更糟的,下到了被人动过手脚的镜像。校验这一步看着多余,实际上能帮你省掉后面一两个小时的排查。

在 Windows 上,如果你用 PowerShell,可以直接算:

Get-FileHash .\CentOS-8.5.2111-x86_64-dvd1.iso -Algorithm SHA256

在 Linux 或 macOS 上更简单:

sha256sum CentOS-8.5.2111-x86_64-dvd1.iso

把输出的一长串十六进制和 CHECKSUM 文件里对应那一行比一比,只要有一位不一样,就别犹豫,删了重下。别想着"可能只是个别字节的问题,装装看",镜像损坏导致的失败往往出现在文件复制阶段,那时候你已经填完分区、设完密码,心情会很糟。

这里补一个我自己的习惯:下载和校验放在同一个目录里做,校验通过后立刻把 ISO 拖到虚拟机宿主机或者 U 盘制作工具能访问的位置,避免中途被其他程序占用。另外,ISO 是只读用途,校验完可以顺手把它的只读属性打开,防止误删或者被写入工具反复改写。

2.3 装物理机的话,启动盘怎么制

大多数人是在虚拟机里折腾,但如果你要给一台旧笔记本或者测试服务器装物理机,就得先做启动盘。Windows 下我一般用 Rufus,界面直观,选择 ISO 之后它会自动识别是 UEFI 还是 Legacy BIOS 模式,分区类型提醒"GPT + UEFI"或者"MBR + BIOS"时照着选就行。有一个坑要注意:Rufus 会弹窗问你是"以 ISO 镜像模式写入"还是"以 DD 镜像模式写入",选 DD 模式,ISO 模式在 CentOS 8 上偶发引导失败,尤其是配合某些主板的时候。

Linux 下就更直接了,一条命令的事:

sudo dd if=CentOS-8.5.2111-x86_64-dvd1.iso of=/dev/sdb bs=4M status=progress oflag=sync

务必确认of=/dev/sdb里的设备名是你的 U 盘,不是你的系统盘——这条命令写错目标设备,数据就没了,没有任何后悔药。判断方法很简单:插上 U 盘前后各跑一次lsblk,多出来的那个就是它。

3. 安装过程逐步拆解

3.1 虚拟机参数规划:算清楚再动手

在 VMware Workstation 或者 VirtualBox 里建虚拟机,界面上的滑块拖一拖就完了,但有几个参数是会影响后续使用的,值得算一下。

内存:CentOS 8 的最小化安装官方建议 1 GB 起步,但实际用起来 1 GB 很紧张,光是 dnf 更新就能把你卡到怀疑人生。我一般给2 GB 打底,如果安装时要选"带 GUI 的服务器"这个软件包组,直接给4 GB,因为图形环境本身就吃掉一大块。虚拟机内存是可以后期调整的,但调整时要关机,不如一开始就给够。

CPU:2 核是最舒服的配置。1 核也能装,就是安装过程会慢到你以为是卡死了。如果你宿主机核心数富裕,给 4 核也行,但对纯系统安装来说收益不大。

磁盘:这才是需要认真算的。官方给的最小磁盘是 10 GB,但那个数字基本只够装一个裸系统,装完就得赶紧清理日志。我的建议是:

用途建议磁盘说明
纯命令行实验20 GB装完约 1.5 GB,剩余空间足够折腾
带 GUI 的桌面环境40 GB图形包组本身就要 5-6 GB,加上缓存
要装数据库/中间件60 GB 起数据目录要预留空间,别到时候扩盘

磁盘类型选单个文件、按需分配就行,不必预分配全部空间,这样虚拟机初始占用小,迁移也方便。但如果你打算做性能测试,那就改成预分配,避免运行时磁盘增长带来的抖动。

网络模式是个容易忽略的点。NAT 模式最简单,虚拟机通过宿主机上网,适合绝大多数学习和测试场景;桥接模式会让虚拟机直接拿到局域网 IP,适合你需要从别的机器访问它的场景。我建议第一次装的时候先用 NAT,等系统跑起来、确认没问题了,再按需改桥接。

3.2 引导与语言、时区设置

虚拟机挂上 ISO,开机。CentOS 8 的引导菜单会在几秒后自动进入安装器,如果你眼疾手快,可以按上下键打断自动倒计时,然后选择Test this media & install CentOS Linux 8——这个选项会先校验安装介质的完整性再进入安装。多花几分钟,但能确保不是介质问题导致的失败,我一般都会选它。

引导模式这里有个隐性坑:UEFI 和 Legacy BIOS 装出来的系统,引导分区结构完全不同。虚拟机默认一般走 UEFI,物理机看主板设置。你不需要刻意改,但要记住自己用的是哪种,因为后面排查引导问题时这是第一个要确认的信息。

进入安装界面后,第一屏是语言选择。建议直接选"简体中文",因为后面分区、网络这些界面的术语用中文看着更顺。但有个例外:如果你打算以后照着英文文档操作命令,那选英文也行,反正命令行层面是一样的,图形界面语言不影响最终系统。

时区设置容易被跳过,但建议认真选:选择"亚洲/上海",并确认右上角的时间是准的。这个设置会写进系统的硬件时钟策略里,如果时区错了,后面日志时间、证书有效期判断、定时任务全都会乱。我遇到过一次,装完系统发现 chrony 同步一直失败,查了半天是时区设成了 UTC 而机器 BIOS 时间又是本地时间,两边打架。

3.3 磁盘分区方案设计

这是整个安装过程里最需要动脑子的部分。CentOS 8 的安装器默认走 LVM + XFS,很多人直接点"自动配置分区"就过了。自动分区能用,但它给你的布局是"通用解",不一定适合你的用途。我把常见的几种思路摊开说。

方案一:全自动,最省事。安装器会自动划分/boot、/和 swap,全部基于 LVM。适合纯实验、随时可以推倒重来的场景。缺点是/和/home不分离,哪天日志写爆了,整个系统一起遭殃。

方案二:手工分/boot、swap、/,适合大多数场景。这是我给测试机的标准配方:

挂载点大小文件系统理由
/boot1 GBxfs放内核和 initramfs,1 GB 足够容纳多个内核版本
swap按内存算swap见下面的计算规则
/剩余全部xfs系统与数据都在这里,实验环境够用

方案三:/、/var、/home分离,适合要长期跑服务的机器。把/var单独分出来,是因为日志、数据库、容器镜像默认都往这里写,单独一个分区能防止它写满拖垮根分区。/home单独分,方便重装系统时保留用户数据。这方案多占一点管理成本,但出问题时好处理得多。

swap 给多大,这是被问得最多的问题。Red Hat 官方文档给的建议表是这样的:内存 2 GB 以下,swap 给内存的 2 倍;内存 2 GB 到 8 GB,swap 等于内存大小;内存 8 GB 到 64 GB,swap 给 4 GB;内存 64 GB 以上,给 4 GB 起步再看需求。不过说实话,现在这个规则更多是历史惯性:早年内存贵,swap 承担了很大一部分"内存扩展"的角色;现在内存便宜了,swap 主要是防 OOM 的缓冲垫。所以我给虚拟机的做法是:内存 4 GB 以上时,swap 固定给 4 GB,够用,也不浪费磁盘。

分区方案定了之后,有个必看的操作:必须把"存储配置"从"自动"改成"自定义",进去手动创建分区,否则你上面算的全白搭。另外,如果这是全新磁盘,安装器会提示你要不要"回收空间",选"是,丢弃所有数据"即可——前提是你确认这块盘没有别的东西。

注意:分区页面里有个"分区方案"下拉框,区分 LVM、标准分区、Btrfs。除非你有明确理由,统一用 LVM,它支持后期在线扩容,物理机上加块盘就能扩,比标准分区灵活太多。

3.4 网络、主机名与软件选择

CentOS 8 的安装器把网络配置放进了主界面,不用等到装完再配,这点比 7 方便。默认情况下网卡是关闭的,你得手动点进去,把右上角的开关打开。

主机名建议这时候就设好,格式上用用途-序号.域名这种能一眼看懂的方式,比如test-web01.local。我见过太多环境里主机名还是localhost.localdomain,后面做集群或者写监控规则时,一堆机器分不清谁是谁,只能挨个连上去看 IP。现在花十秒改掉,以后省很多事。

IPv4 设置里,如果你网络里有 DHCP 就保持自动;如果是固定 IP 的实验环境,就手工填 IP、掩码、网关和 DNS。DNS 这一项别漏,CentOS 8 的安装器如果没配 DNS,装完之后你会发现 ping IP 能通、ping 域名不通,又是一轮排查。我一般会填两个:一个内网 DNS,一个公共的备用。

接着是"软件选择"页面,这决定了你装完之后系统里有什么:

  • 最小安装(Minimal Install):只有基础命令行工具,没有图形界面,没有额外服务。占空间最小,攻击面最小,是我最推荐的选择,因为装什么随时可以用 dnf 补。
  • 带 GUI 的服务器(Server with GUI):装了 GNOME 桌面,适合需要图形工具的场景,代价是体积大、资源占用高。
  • 基础设施服务器(Infrastructure Server):预装了 DNS、DHCP、文件共享等基础服务组件,适合要搭内网服务的场景。
  • 工作站(Workstation):面向桌面用户,预装办公和开发工具。

这里有个细节值得提醒:如果你的机器装了之后发现连ifconfig都没有,不是坏了,是最小安装没带 net-tools。用ip addr代替,或者装完补一个dnf install net-tools。这个坑每年都有人踩,因为很多老教程还在写ifconfig。

3.5 用户、密码与安装收尾

"用户设置"页面里有两件事:设 root 密码、创建普通用户。两个都做,别只做一半。

root 密码建议设得复杂一点,但更重要的是自己能记住,别搞那种复制粘贴一次性的强密码,回头进不去单用户模式都费劲。安装器会提示"密码太简单",如果只是本地实验机,你在确认提示后可以继续;如果是任何有网络暴露风险的机器,老老实实按它的要求来。

普通用户的创建,我强烈建议做。原因有两个:一是日常操作不该用 root,很多命令以 root 跑会直接把文件属主写成 root,后面用普通用户跑服务就会报权限错误;二是 CentOS 8 默认允许 root 密码登录 SSH 吗?实际上默认配置里PermitRootLogin是允许的,但出于习惯我建议你建好普通用户,加进 wheel 组,方便用 sudo。

等所有带感叹号的配置项都变回正常颜色,右下角那个"开始安装"按钮就能点了。点下去之后会进入复制文件的阶段,进度条大概走几十秒到几分钟,取决于 DVD 还是 Boot。安装完成后不要急着拔 ISO,先点"重启系统",等它提示你移除安装介质再拔,否则可能又引导回安装器,白等一轮。

4. 装完必做:源修复与基础环境配置

4.1 为什么一执行 dnf 就报错

系统装完,你兴冲冲地敲下第一条dnf update,大概率会看到这么一串:

Failed to download metadata for repo 'appstream' Error: Failed to download metadata for repo 'appstream': Cannot download repomd.xml

这几乎是 CentOS 8 装完之后的"标准剧情",新手容易以为是网络问题,反复检查 ping、DNS、网关,折腾半天。根因不在你的网络,而在仓库地址已经不存在了。

前面说过,mirror.centos.org上的 8 分支目录在停更后被移除了,但系统出厂时自带的/etc/yum.repos.d/里那些.repo文件,baseurl和mirrorlist还指向老地址。于是 dnf 去请求一个已经不存在的路径,自然全是 404。

这里还有个细节值得知道:CentOS 8 不同小版本的 repo 文件名是不一样的。8.0 到 8.2 用的是CentOS-AppStream.repo、CentOS-Base.repo这类名字;从 8.3 开始改成了CentOS-Linux-AppStream.repo、CentOS-Linux-BaseOS.repo、CentOS-Linux-Extras.repo。这个差异直接决定了你后面批量替换的时候用哪个通配符,写错了就改了个寂寞。

4.2 方案一:把仓库指向归档地址

最稳妥的做法,是把仓库整体指向归档站。官方给的标准操作是两步:先把mirrorlist全部注释掉,再把baseurl从原来的镜像地址换成归档地址。在 8.5 上,命令可以写成这样:

# 备份原始配置,出问题可以回退 sudo mkdir -p /etc/yum.repos.d/backup sudo cp /etc/yum.repos.d/CentOS-Linux-*.repo /etc/yum.repos.d/backup/ # 注释掉 mirrorlist sudo sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*.repo # 把 baseurl 指向归档站 sudo sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*.repo # 重建缓存 sudo dnf clean all sudo dnf makecache

最后那条dnf makecache是关键,它会把新仓库的元数据重新拉一遍。如果这一步能顺利跑完,你会看到几个仓库的元数据被成功下载,那就说明修好了。

这里有几个实测细节:第一,归档站是国外地址,速度不快,makecache可能要等一两分钟,别以为卡死了;第二,sed里的^#baseurl这个锚点很重要,不加的话可能连已经被注释的其他行一起改动;第三,如果你不确定通配符该用哪个,先ls /etc/yum.repos.d/看一眼实际文件名,比猜靠谱。

4.3 方案二:换成国内归档源,速度更快

如果你觉得归档站太慢,可以换成国内镜像站的归档目录。思路和上面一样,只是把 baseurl 里的域名换掉。以阿里云的归档路径为例,写完大概是这个形式:

[baseos] name=CentOS Linux $releasever - BaseOS baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

这里有个必须注意的点:8.5.2111这个路径是写死的,不要用$releasever代替。因为$releasever在你的系统里解析出来就是8,而归档站上的目录名是8.5.2111,两者对不上,结果还是 404。这是很多人在换源时最容易犯的错误,网上不少教程互相抄,把这个坑一直传下去。

换源之后同样要dnf clean all && dnf makecache。判断换源成功有个很直观的办法:随便装个小包试试,比如sudo dnf install -y tree,如果几秒钟就装好了,说明国内源生效了;如果卡了很久还报错,回去检查 baseurl 拼写和路径。

提示:换源属于修改系统配置,改之前务必备份.repo文件;如果你在一个受管环境里操作,先确认这么做不违反内部规范。

4.4 装完顺手要做的几件事

系统能联网、源能用之后,有几件事我建议一次性做完,后面省心。

第一,更新时间。CentOS 8 的 GNOME 把时间同步藏得比较深,最小化安装也没有图形界面,用命令行最直接:

sudo dnf install -y chrony sudo systemctl enable --now chronyd timedatectl status

时间不准会导致很多诡异问题:HTTPS 证书校验失败、Kerberos 认证失败、日志时间线对不上、集群节点互相认为对方"过期"。这是那种平时感觉不到、出问题时又极难定位的东西,装完就配好最省事。

第二,确认 SELinux 和防火墙的状态。CentOS 8 默认 SELinux 是 enforcing、firewalld 是开着的。不要一上来就setenforce 0或者systemctl stop firewalld,那是把安全机制直接关掉,属于典型的"解决不了问题就解决提出问题的人"。正确做法是去看日志、加规则:

getenforce sudo firewall-cmd --state sudo firewall-cmd --list-all

如果某个服务端口不通,用firewall-cmd --add-port=8080/tcp --permanent加规则再--reload,比直接关防火墙好得多。

第三,装几个常用小工具。最小化安装的环境比较"素",我通常一次补齐:

sudo dnf install -y vim wget curl net-tools bash-completion lsof tree

这几个东西加起来没多少体积,但能在你排查问题时省掉"这个命令怎么没有"的来回。

第四,检查 SSH 配置。如果你打算远程登录,确认sshd在跑,并且根据自己的安全要求决定要不要禁用 root 登录。修改/etc/ssh/sshd_config之后记得sudo systemctl restart sshd,而且改之前保持当前会话不要断,另开一个窗口测试新配置能连上再关旧的,否则改错了就把自己锁在外面了。

5. 常见问题与排查技巧实录

5.1 安装阶段的问题速查

安装环节的问题大多有明确特征,我整理了一张对照表,遇到时可以直接按图索骥:

现象大概率原因处理办法
引导菜单都不出现,直接进原系统虚拟机没挂 ISO,或启动顺序不对检查虚拟机 CD/DVD 设置,确认"启动时连接"已勾选
报 "No bootable device"启动盘没做好或 U 盘不被识别换 USB 口重试,Rufus 改用 DD 模式重做
安装到一半报介质错误ISO 下载损坏用 sha256sum 重新校验,不合格就重下
卡在"正在下载软件包"用的是 Boot 版且源不可用换 DVD 版重装,或用 Boot 版时手工指定可用源
"No space left on device"磁盘给少了重装并加大磁盘,或先只选最小化安装
分区页面找不到磁盘虚拟磁盘未创建或控制器类型不对检查虚拟磁盘配置,SCSI/NVMe 控制器换一下试试
图形界面装到一半花屏/黑屏虚拟机显存不足或 3D 加速冲突关闭 3D 加速,显存调到 128 MB 以上

这张表里,我踩得最多的是第二个。当年做启动盘,Rufus 默认推荐 ISO 模式,我照做,结果机器就是不认;换成 DD 模式,一次就过。后来我才知道,ISO 模式和 DD 模式在引导文件布局上有差异,某些主板固件对前者兼容性差。

5.2 停下来就动不了:安装卡死的处理思路

安装中途卡住,是另一个高频问题。判断"卡住"和"只是慢"有个简单办法:看硬盘灯和虚拟机状态栏的 I/O 指示。如果硬盘在闪、网络在跑,那是在干活,等着就行;如果十几分钟一点动静没有,那才是真卡了。

真卡住时,我的处理顺序是这样的:

第一步,切换到另一个 TTY 看日志。CentOS 安装器支持Ctrl+Alt+F1到F6切换虚拟终端,其中有一屏是滚动的安装日志。你会看到最后停在哪一步,比如是卡在解压某个包,还是卡在探测硬件。这比对着"正在安装"的进度条干瞪眼强太多。

第二步,回忆刚才改了什么。绝大多数卡死都和最近一次操作有关:刚勾了某个软件包组、刚改了分区、刚插了 USB 设备。把这些还原到上一步再试,往往就过了。

第三步,换配置重来。把内存翻倍、CPU 加核、磁盘类型换成 SATA 而不是 NVMe,这些改动看起来和卡死无关,但虚拟化环境下的兼容性问题有时候就是靠这种"玄学换法"解决的。我遇到过一次,虚拟机用 NVMe 控制器装 CentOS 8,每次都在分区后卡死,换成 SATA 就一帆风顺,至今没搞清具体是哪个环节的兼容性问题。

注意:卡死之后不要直接关虚拟机电源,那样可能把虚拟磁盘写坏。优先在虚拟机菜单里选"发送关机信号"或者强制重启,装到一半重来问题不大。

5.3 装完之后 dnf 各种报错的排查路径

装完后最烦的就是 dnf 报错,因为表现五花八门。我总结了一条排查路径,按顺序走基本能定位:

先看是哪个仓库报错。报错信息里会写repo 'appstream'或者repo 'baseos',这直接告诉你是哪个.repo文件有问题。

再确认网络。ping一下仓库域名,curl -I一个具体路径,确认不是 DNS 或路由问题。这里有个经验:别只用 ping 判断网络通不通,ping 通不代表 HTTP 能通,中间可能有代理、防火墙拦了 80/443。

然后检查配置文件。用cat打开对应的.repo文件,逐行看baseurl和mirrorlist。常见的错误有三种:地址写错(比如路径里少了/os/)、$releasever变量解析不对(8.5 的归档路径必须写死为 8.5.2111)、enabled被误改成 0。

最后重建缓存。改完配置务必执行dnf clean all再dnf makecache。只改配置不清理缓存,dnf 可能还在用旧的元数据,你会以为改动没生效。

按这个顺序走下来,我遇到的 dnf 问题九成都能解决。剩下那一成通常是GPG 校验失败,报错里会提到gpgcheck。这种情况要么是密钥没导入,要么是仓库签名对不上,可以用rpm --import导入对应的公钥文件,或者临时把gpgcheck设为 0 定位问题(但确认能用之后一定要改回 1,别一直关着)。

5.4 几个只有实际踩过才知道的细节

最后分享几个零散的实操经验,都是文档里不会写、但真能省时间的东西。

关于快照。如果你用 VMware,装完系统、还没开始折腾配置之前,先打一个快照。后面配源、装软件、改配置,一不小心搞崩了,秒回滚,不用重装。我基本是"系统装好打一个""源配好打一个""基础软件装好打一个",三个快照下来,任何时候都有退路。

关于时间同步。虚拟机挂起再恢复之后,系统时间和宿主机可能差出一大截,尤其是你跨天用的时候。养成习惯:遇到证书报错、认证失败,先date看一眼时间,十次里有三次就是它。

关于 root 登录 SSH。CentOS 8 默认其实允许 root 密码登录,但很多内部规范要求禁用。改的时候记住那条铁律:保持当前会话不动,另开会话验证。我见过有人直接在唯一的 SSH 会话里重启 sshd,配置写错,会话断了,机器又进不去,只能走控制台。

关于内存给多少。上面说 2 GB 打底,但如果你的虚拟机宿主机内存也不宽裕,别硬撑。宁可给 2 GB 加 4 GB swap,也别给 1 GB 硬跑,因为 dnf 在解压元数据时是内存消耗大户,内存不足时它可能直接被 OOM killer 干掉,报错信息还特别隐晦。

关于系统盘瘦身。装完后dnf clean all清一下缓存,/var/cache/dnf目录能腾出不少空间;日志方面检查一下/var/log的增长,长期跑的测试机建议配一下 logrotate,别让日志悄悄把根分区写满——根分区写满是那种"所有服务突然全挂"的典型元凶。

说到底,CentOS 8 现在更像是一个"特定历史阶段的基础设施",把它装起来、用起来、维护住,靠的不是追求最新,而是把这套流程里的每个坑都提前知道。我第一次装的时候,光是那个 yum 报错就折腾了一晚上,后来才明白根因是仓库地址下线这种和"操作水平"完全无关的原因。现在回头看,这套流程里真正需要动脑子的地方其实就两个:磁盘怎么分、源怎么配,其余全是照做就行。把这俩想明白,剩下的都是体力活。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询