1. 为什么要在 ThinkPad X13 上折腾 CentOS 7
把一台 2020 年后出厂的 ThinkPad X13 装回 CentOS 7,听起来像是逆着时代走。CentOS 7 的最后一个维护版本停在 7.9,内核默认还是 3.10 那一代,而 X13 用的是第十代、第十一代酷睿平台,网卡、显卡、无线模块全是新硬件。很多人第一反应是"装不上"或者"装上了也没法用"。但实际需求是真实存在的:某些工业控制软件、老版本的数据库、特定的编译工具链,只认 CentOS 7 的 glibc 和 systemd 版本,换到 CentOS Stream 或者 Rocky 上跑不起来。你手上刚好有一台 X13,想把它变成一台能跑老环境的开发机或者测试机,这个场景就成立了。
我自己前前后后在三台不同配置的 X13 上装过 CentOS 7,有成功也有翻车。翻车的地方基本集中在三个点:安装介质认不到硬盘、装完没有无线网、以及休眠唤醒之后屏幕不亮。这三个问题都不是玄学,背后都有明确的原因和对应的处理办法。这篇内容就是把这几次实操的完整过程、踩过的坑、以及最后跑通的配置整理出来,给同样有需求的人一个可以直接抄的参考。
需要先说明的是,CentOS 7 已经停止维护,官方仓库的软件包不再更新。如果你只是想要一个稳定的服务器环境,Rocky Linux 或者 AlmaLinux 是更合理的选择。但如果你确实被某个老软件绑死在 CentOS 7 上,那下面的内容就是为你准备的。另外,X13 有 Intel 和 AMD 两个平台版本,我手上测试的是 Intel 版本,AMD 版本在显卡和无线网卡上会有差异,文中会单独标注。
2. 安装前的硬件与固件准备
2.1 确认你的 X13 具体型号和硬件配置
ThinkPad X13 不是一个单一型号,它至少覆盖了 Gen 1 到 Gen 4 四代产品,每一代的芯片组、网卡、无线模块都不一样。动手之前,先在现有系统里把关键硬件的型号查清楚,这决定了后面要准备哪些驱动。
在 Windows 下可以用设备管理器看,在 Linux 下用lspci和lsusb。重点确认三样东西:硬盘控制器模式、无线网卡型号、显卡型号。硬盘控制器如果是 Intel VMD 模式,CentOS 7 的安装程序默认认不到硬盘,这是最常见的翻车点。无线网卡如果是 Intel AX201 或者 AX211,CentOS 7 自带的内核模块版本太老,驱动不起来。显卡如果是 Iris Xe,安装阶段只能用基础显示模式,装完需要额外处理。
| 硬件项 | 常见型号 | CentOS 7 支持情况 | 处理方式 |
|---|---|---|---|
| 硬盘控制器 | Intel VMD / AHCI | VMD 模式不识别 | BIOS 中关闭 VMD 或切换为 AHCI |
| 无线网卡 | Intel AX201 / AX211 | 内核 3.10 不支持 | 升级内核或使用 USB 网卡过渡 |
| 显卡 | Intel Iris Xe | 仅基础显示 | 安装时用 nomodeset,装完升级内核 |
| 有线网卡 | Intel I219-V | 部分版本需额外驱动 | 优先用有线完成安装 |
| 声卡 | Realtek ALC257 | 基本可用 | 装完用 alsa 调试 |
提示:如果你不确定自己的 X13 是哪一代,开机按 F1 进 BIOS,在 Main 页面能看到机器型号和 BIOS 版本。BIOS 版本建议先升级到最新,老版本 BIOS 在 Linux 下的电源管理问题比较多。
2.2 BIOS 设置里必须改的几个选项
X13 出厂默认的 BIOS 设置是给 Windows 优化的,直接拿来装 CentOS 7 会碰到各种奇怪问题。进 BIOS 之后,下面这几项必须调整。
Secure Boot 必须关闭。CentOS 7 的安装镜像没有经过微软签名,Secure Boot 开着的话连安装盘都引导不起来。在 Security 菜单里找到 Secure Boot,设为 Disabled。
硬盘控制器模式改成 AHCI。在 Config 菜单下的 Storage 里,把 VMD Controller 关掉,或者把 SATA 模式从 RAID 改成 AHCI。这一步不做,安装程序的分区界面会是空的,看不到任何硬盘。改完之后如果原来装了 Windows,Windows 可能起不来,需要进安全模式修一次,这个要有心理准备。
引导模式确认是 UEFI。X13 只支持 UEFI 引导,没有 Legacy 选项。CentOS 7 的 ISO 是支持 UEFI 的,但制作启动盘的时候要注意用支持 UEFI 的方式写入,否则 U 盘插上去在启动菜单里根本不出现。
关闭快速启动和电源相关的特殊模式。在 Config 下的 Power 里,把 Intel SpeedStep 和 CPU Power Management 先保持默认,但要把"Modern Standby"之类的选项关掉,否则装完之后休眠会出问题。
2.3 安装介质的制作与验证
CentOS 7 的 ISO 推荐用 7.9.2009 这个最终版本,它是 CentOS 7 的最后一个大版本,包含了截止到停止维护前的所有更新。下载地址这里不贴了,官方 vault 仓库还能找到。下载完之后一定要校验 SHA256,我遇到过下载不完整导致安装到一半报错的情况。
制作 U 盘启动盘,Windows 下用 Rufus,选择 GPT 分区方案和 UEFI 目标系统。Linux 下直接用dd命令:
sudo dd if=CentOS-7-x86_64-DVD-2009.iso of=/dev/sdX bs=4M status=progress oflag=sync/dev/sdX换成你自己的 U 盘设备名,千万别写错,写错了会把你的硬盘整个覆盖掉。写完可以用sync再刷一次缓存,确保数据全部落盘。
注意:X13 的 USB 接口全是 Type-A 和 Type-C,如果你用的是 Type-C 的 U 盘或者转接头,BIOS 里要确认 USB 引导是开启的。有些 Type-C 扩展坞在引导阶段不被识别,建议直接用机身自带的 USB-A 口。
3. 安装过程中的关键步骤与参数选择
3.1 引导安装程序并处理显示问题
U 盘插好,开机按 F12 进启动菜单,选择 U 盘对应的 UEFI 条目。如果直接黑屏或者花屏,说明显卡驱动在安装阶段就出问题了。这时候在启动菜单里选中安装项,按e编辑引导参数,在linuxefi那一行的末尾加上:
nomodeset这个参数的作用是让内核不要尝试加载显卡的 KMS 驱动,改用 BIOS 提供的基础显示模式。画面会变得比较粗糙,分辨率也低,但至少能看清安装界面。装完系统之后再解决显卡驱动的问题。
如果加了nomodeset还是进不去安装界面,可以再加一个inst.text参数,用纯文本模式安装。文本模式没有图形界面,但分区、软件包选择这些核心功能都在,装出来的系统是一样的。
3.2 分区方案的设计与实操
CentOS 7 的安装程序默认用 LVM 自动分区,对于 X13 这种单盘机器,我建议手动分区,把根分区和 home 分开,方便以后重装或者扩容。下面是我在 512G 硬盘上用的方案:
| 挂载点 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
| /boot/efi | 512M | EFI System | UEFI 引导分区,必须存在 |
| /boot | 1G | ext4 | 内核和引导文件,留足空间 |
| swap | 16G | swap | 和内存等大,休眠需要 |
| / | 100G | ext4 | 系统和软件包 |
| /home | 剩余空间 | ext4 | 用户数据 |
/boot/efi必须是 EFI System 类型,否则装完引导不了。/boot给 1G 是因为 CentOS 7 升级内核比较频繁,老内核不清理的话 500M 很快就满了。swap 给 16G 是为了支持休眠,X13 一般 16G 或 32G 内存,swap 至少要和内存一样大才能休眠。
分区的时候注意,如果硬盘之前是 Windows 的 GPT 分区表,安装程序会识别到现有的 EFI 分区。你可以复用它,但要把里面的 Windows 引导文件清掉,或者干脆重新格式化整个硬盘。我一般选择后者,避免引导混乱。
3.3 软件包选择与网络配置
软件包选择界面,如果你要跑开发环境,选"Minimal Install"然后手动加需要的组,比选"GNOME Desktop"再删东西要干净。Minimal 装出来大概 1G 多,启动快,攻击面小。需要图形界面的话,装完再yum groupinstall "GNOME Desktop"也不迟。
网络配置在安装阶段就可以配好。X13 的有线网口需要转接或者扩展坞,如果没有有线,安装阶段可以先跳过网络,装完再用 USB 无线网卡过渡。安装程序里的网络配置支持静态 IP 和 DHCP,如果是做开发机,建议配静态 IP,方便 SSH 连接。
主机名建议起一个有意义的名字,比如dev-x13这种,后面配 SSH 和 hosts 的时候省事。root 密码设一个强一点的,同时创建一个普通用户并加入 wheel 组,日常操作不要直接用 root。
安装过程大概 10 到 20 分钟,取决于 U 盘速度和选择的软件包数量。装完重启之前把 U 盘拔掉,否则可能又从 U 盘引导了。
4. 装完之后的驱动补全与系统调优
4.1 无线网卡驱动的处理方案
这是 X13 装 CentOS 7 最头疼的地方。AX201 和 AX211 需要 iwlwifi 驱动的新版本,CentOS 7 自带的 3.10 内核里的 iwlwifi 太老,根本认不到这些卡。lspci能看到网卡,但ip link里没有对应的无线接口。
解决思路有两条。第一条是升级内核,用 ELRepo 的 kernel-ml 或者 kernel-lt。kernel-lt 是长期维护版,稳定性更好,推荐用这个。升级内核之后,新内核自带的 iwlwifi 就能驱动 AX201 了。具体操作:
# 导入 ELRepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # 安装长期维护内核 yum --enablerepo=elrepo-kernel install kernel-lt -y # 查看可用内核 awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg # 设置新内核为默认启动项 grub2-set-default 0 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg重启之后uname -r确认新内核生效,然后ip link应该就能看到无线接口了。再用nmcli连接无线网络:
nmcli dev wifi list nmcli dev wifi connect "你的SSID" password "你的密码"第二条路是继续用老内核,手动编译 iwlwifi 的 backport 驱动。这条路比较折腾,编译过程中依赖和头文件的问题很多,不推荐新手走。如果只是临时用一下,买个几十块的 USB 无线网卡最省事,RTL8811CU 或者 MT7601U 芯片的卡在 CentOS 7 下基本免驱。
提示:升级内核之后,之前用
nomodeset引导的问题也可能一并解决,因为新内核里的 i915 驱动对 Iris Xe 的支持好很多。升级完可以试着把nomodeset去掉,看看能不能正常进图形界面。
4.2 显卡与显示相关的调优
Iris Xe 在 CentOS 7 的老内核下只能跑基础显示模式,分辨率上不去,外接显示器也可能不亮。升级到 kernel-lt 之后,i915 驱动会加载,但固件文件可能还缺。需要安装linux-firmware的最新版本:
yum install linux-firmware -y如果外接显示器通过 Type-C 或者雷电接口连接,还需要确认 BIOS 里的 Thunderbolt 安全级别设置。设成 "No Security" 或者 "User Authorization" 才能在 Linux 下正常识别外接设备。
屏幕亮度调节在 X13 上可能需要手动加内核参数。在/etc/default/grub的GRUB_CMDLINE_LINUX里加上:
acpi_backlight=vendor然后重新生成 grub 配置。这样亮度调节的快捷键才能正常工作。
4.3 电源管理与休眠问题的修复
X13 的休眠在 CentOS 7 下默认可能不工作,合盖之后机器还在耗电,或者唤醒之后屏幕不亮。先确认休眠模式:
cat /sys/power/state如果输出里有mem和disk,说明支持 S3 和 S4。X13 默认可能用的是 s2idle 而不是 deep,需要在 grub 里加参数:
mem_sleep_default=deep加到GRUB_CMDLINE_LINUX里,重新生成配置后重启。这样合盖休眠才能真正断电。
唤醒之后屏幕不亮的问题,通常是 i915 驱动在恢复时的时序问题。可以在/etc/systemd/system/下加一个唤醒后重新加载显示的服务,或者升级到更新的 kernel-lt 版本,新版本对这个问题有修复。
注意:电源管理相关的调试比较耗时,建议先用
journalctl -b -1看上一次启动的日志,定位具体是哪个环节出的问题,不要盲目改参数。
5. 常见问题速查与排查思路
5.1 安装阶段问题排查表
| 现象 | 可能原因 | 排查方法 | 解决方式 |
|---|---|---|---|
| 启动菜单没有 U 盘 | U 盘不是 UEFI 格式 | 检查 U 盘分区表 | 用 Rufus 重新写入,选 GPT+UEFI |
| 安装界面花屏 | 显卡 KMS 问题 | 加 nomodeset 测试 | 引导参数加 nomodeset |
| 分区界面看不到硬盘 | VMD 模式开启 | BIOS 里查 Storage 设置 | 关闭 VMD 或改 AHCI |
| 安装到一半报错 | ISO 损坏或 U 盘坏 | 校验 SHA256 | 重新下载和写入 |
| 装完重启进不了系统 | 引导项没写对 | 检查 EFI 分区 | 手动添加引导项或重装 |
5.2 装完之后的典型问题
没有无线网络。前面说了,升级内核或者用 USB 网卡。如果dmesg | grep iwlwifi看到固件加载失败的报错,去/lib/firmware下确认对应的.ucode文件是否存在,不存在的话从 linux-firmware 包里找。
外接显示器不亮。先确认是 HDMI 还是 Type-C。HDMI 一般免驱,Type-C 需要 Thunderbolt 或者 DisplayPort Alt Mode 支持。BIOS 里把 Thunderbolt 安全级别调低,系统里用xrandr看能不能识别到输出。
声音没有输出。CentOS 7 默认用 PulseAudio,X13 的 ALC257 声卡可能需要手动指定输出设备。用aplay -l列出设备,然后在alsamixer里取消静音并调高音量。如果还是不行,装pavucontrol图形化工具排查。
触摸板不工作。X13 的触摸板是 I2C 接口的,老内核可能不支持。升级内核之后一般能解决。临时可以用 USB 鼠标。
指纹识别不能用。CentOS 7 下基本没有可用的指纹驱动,这个功能直接放弃,用密码或者 SSH 密钥代替。
5.3 我踩过的几个坑
第一个坑是 BIOS 升级。我一开始没升级 BIOS,装完 CentOS 7 之后休眠唤醒十次有三次失败。后来把 BIOS 升到最新版,问题少了很多。联想的 BIOS 更新在 Windows 下用官方工具做,或者用 BIOS 自带的更新功能,不要用第三方工具刷。
第二个坑是分区的时候复用了 Windows 的 EFI 分区,结果 CentOS 的引导文件把 Windows 的覆盖了,两个系统都进不去。后来重新分区,给 CentOS 单独的 EFI 分区,用 BIOS 启动菜单切换,省心很多。
第三个坑是升级内核之后忘了重新生成 grub 配置,重启还是进的老内核,白折腾半天。grub2-mkconfig这一步不能省,而且 X13 的 grub 配置文件路径是/boot/efi/EFI/centos/grub.cfg,不是/boot/grub2/grub.cfg,写错了不生效。
6. 系统跑通之后的日常维护建议
CentOS 7 停止维护之后,官方 yum 源已经不可用了。需要把源切换到 vault 仓库:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* yum clean all yum makecache这样还能继续从 vault 里装包,但不会有新的安全更新。如果这台机器要联网使用,建议只在内网环境跑,或者用防火墙严格限制出入站规则。
内核升级到 kernel-lt 之后,每次 yum 更新都可能带来新内核,老内核会保留在/boot里。定期清理不用的老内核,避免/boot被占满:
package-cleanup --oldkernels --count=2这个命令保留最近两个内核,其他的删掉。/boot给 1G 的话,一般能放四五个内核,不用太频繁清理。
备份方面,X13 的硬盘是 NVMe 的,用dd做全盘镜像不太现实。建议用rsync定期同步/home和/etc到外接硬盘或者网络存储。系统本身如果配置好了,重装一次也就半小时的事,不用做全盘备份。
最后说一个实际体验:X13 装 CentOS 7 之后,日常开发的流畅度是够的,编译代码、跑数据库、开几个终端都不卡。但图形界面下浏览器开多了会有点吃力,毕竟 Iris Xe 在老内核下的驱动性能发挥不出来。如果主要用途是命令行开发,这个方案完全可行;如果要用图形界面做重活,建议还是考虑新一点的发行版。