系统引导修复
本文档针对 系统启动失败 场景,分别说明 Ubuntu 20.04、CentOS 7.9、Rocky Linux 9.3 的引导修复流程。
操作前须知
- 准备与故障系统 同大版本 的安装 ISO / Live 介质,并从该介质启动进入救援环境。
- 修复前备份重要数据;至少备份
/etc/fstab、/etc/default/grub及/boot下关键文件。 - 下文中的磁盘名(
/dev/sda、nvme0n1等)、分区号、卷组名(centos/rl等)均为示例,必须以本机lsblk、blkid、vgs/lvs输出为准。 - 不要对已挂载的分区执行
fsck。需先卸载,或仅在救援环境未挂载该分区时检查。 - 先确认固件模式(BIOS/Legacy 或 UEFI),避免按错误模式重装引导程序。
- 优先使用与故障系统 同版本 的官方安装/救援 ISO;下载后请核对校验和(SHA256)。
常用修复 ISO 镜像及区别
引导修复一般不依赖第三方“万能救援盘”,推荐使用各发行版官方 ISO。原则:版本对齐、优先带 Rescue/Live 能力、体积够用即可。
Ubuntu 20.04
| 镜像类型 | 文件名(示例) | 区别与适用场景 | 推荐度 |
|---|---|---|---|
| Desktop(桌面 Live) | ubuntu-20.04.6-desktop-amd64.iso |
可直接 Try Ubuntu 进入图形 Live,挂载磁盘、chroot、修 GRUB 最方便 | 首选(引导修复) |
| Live Server | ubuntu-20.04.6-live-server-amd64.iso |
体积更小;安装向导中可打开 shell,适合无桌面、熟悉命令行的场景 | 可选 |
| 旧点版本(20.04.x) | 同系列更早 ISO | 一般可用,但建议用当前归档的 20.04.6,驱动与安装器更完整 | 次选 |
官方下载(Canonical):
- 目录页:https://releases.ubuntu.com/20.04.6/
- Desktop 直链:https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-desktop-amd64.iso
- Live Server 直链:https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-live-server-amd64.iso
- 校验文件:https://releases.ubuntu.com/20.04.6/SHA256SUMS
国内镜像(内容同源,速度通常更快),例如:
- 清华 TUNA:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04.6/
- 阿里云:https://mirrors.aliyun.com/ubuntu-releases/20.04.6/
说明:Desktop 与 Server 都能修引导;差别主要在是否便于进入 Live 桌面、镜像大小。WSL 包(
.wsl)不能用于裸机引导修复。部分镜像站可能限制 ISO 直链,若失败请改用官方releases.ubuntu.com。
CentOS 7.9
CentOS 7 已停止维护,官方安装镜像已迁至 CentOS Vault。引导修复请用带 Rescue a CentOS system 菜单的安装类 ISO。
| 镜像类型 | 文件名(示例) | 区别与适用场景 | 推荐度 |
|---|---|---|---|
| DVD | CentOS-7-x86_64-DVD-2009.iso |
含完整安装器与本地软件包,Rescue 菜单齐全,离线重装 grub/dracut 相关包更稳妥 |
首选(引导修复) |
| Minimal | CentOS-7-x86_64-Minimal-2009.iso |
体积约 1GB,可进 Rescue;软件包少,chroot 后 yum reinstall 往往仍需网络/本地源 |
可作轻量备选 |
| NetInstall | CentOS-7-x86_64-NetInstall-2009.iso |
体积最小,依赖网络拉包;适合有内网 yum 源的环境 | 有可靠源时可用 |
| Everything | CentOS-7-x86_64-Everything-2009.iso |
包最全、体积很大,一般不必仅为修引导下载 | 非必要 |
| 2207 硬件增强版 | CentOS-7-x86_64-DVD-2207-02.iso 等 |
官方说明:仅在 2009 版驱动/时区不足时使用 | 新硬件失败时再换 |
官方下载(CentOS Vault):
- 目录页:https://vault.centos.org/7.9.2009/isos/x86_64/
- DVD 直链:https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
- Minimal 直链:https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
- NetInstall 直链:https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-NetInstall-2009.iso
- 校验文件:https://vault.centos.org/7.9.2009/isos/x86_64/sha256sum.txt
国内镜像示例(已校验路径可用):
- 阿里云:https://mirrors.aliyun.com/centos-vault/7.9.2009/isos/x86_64/
- 清华 TUNA:https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/isos/x86_64/
说明:LiveGNOME/LiveKDE(若镜像站仍有)适合试用桌面,不是标准 Rescue 流程首选;修 GRUB/LVM 请优先 DVD/Minimal 安装盘的 Troubleshooting → Rescue。部分镜像站对公网 ISO 下载有限制时,请改用
vault.centos.org。
Rocky Linux 9.3
Rocky 9.3 已归档到 vault。引导修复使用安装 ISO 中的 Rescue a Rocky Linux system。
| 镜像类型 | 文件名(示例) | 区别与适用场景 | 推荐度 |
|---|---|---|---|
| DVD | Rocky-9.3-x86_64-dvd.iso |
约 10GB,含完整 BaseOS/AppStream,离线 dnf reinstall grub2/shim、重建 initramfs 最稳妥 |
首选(引导修复,可离线) |
| Minimal | Rocky-9.3-x86_64-minimal.iso |
约 1.6GB,含 Rescue;包较少,重装引导相关 RPM 可能需配置 dnf 源 | 体积与能力较均衡 |
| Boot(网络安装) | Rocky-9.3-x86_64-boot.iso |
约 900MB,偏网络安装/救援,拉包依赖网络或本地镜像 | 有可靠源时可用 |
官方下载(Rocky Vault):
- 目录页:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/
- 备用同内容入口:https://download.rockylinux.org/vault/rocky/9.3/isos/x86_64/
- DVD 直链:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-dvd.iso
- Minimal 直链:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-minimal.iso
- Boot 直链:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-boot.iso
- 校验文件:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/CHECKSUM
国内镜像示例(已校验路径可用):
- 阿里云(rockylinux-vault):https://mirrors.aliyun.com/rockylinux-vault/9.3/isos/x86_64/
说明:目录中带
Rocky-9-latest-*/Rocky-x86_64-*的文件在 9.3 归档目录内通常与对应的Rocky-9.3-*为同一批镜像;归档修复请优先下载文件名含9.3的 ISO,避免与当前最新 9.x 混淆。官方pub/rocky/9.3若已清空,以 vault 路径为准。部分国内站未完整同步 vault ISO 时,请直接使用dl.rockylinux.org。
校验示例(下载后建议执行)
# Ubuntu
sha256sum -c SHA256SUMS --ignore-missing
# CentOS 7.9
sha256sum -c sha256sum.txt --ignore-missing
# Rocky 9.3(CHECKSUM 文件格式以官方为准,也可用单独的 *.iso.CHECKSUM)
sha256sum -c Rocky-9.3-x86_64-minimal.iso.CHECKSUM
第一章 Ubuntu 20.04 引导修复
1.1 常见现象
- 停留在 GRUB,或报错
error: no such partition/unknown filesystem - 选中内核后 kernel panic、initramfs 报错,或找不到
vmlinuz/initrd.img - 根分区 UUID 变更导致无法挂载 root
1.2 进入救援环境并识别分区
- 使用 Ubuntu 20.04 安装 ISO 启动,选择 Try Ubuntu 进入 Live 环境。
- 打开终端,确认分区布局:
sudo lsblk -f
sudo blkid
| 用途 | 典型特征 |
|---|---|
根分区 / |
多为 ext4,容量最大或含 /etc、/usr |
独立 /boot(若有) |
多为 ext4,约 512MB–2GB |
| EFI 分区(UEFI) | vfat/FAT32,约 100–512MB,PARTLABEL 常为 EFI |
1.3 挂载并 chroot
按实际设备名替换。有独立 /boot 时,必须先挂载 /boot,再挂载 /boot/efi。
# 示例:根=/dev/sda2,独立 boot=/dev/sda3,EFI=/dev/sda1
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda3 /mnt/boot # 无独立 /boot 则跳过
sudo mount /dev/sda1 /mnt/boot/efi # BIOS/Legacy 跳过
for i in /dev /dev/pts /proc /sys /run; do
sudo mount --bind "$i" "/mnt$i"
done
# 便于 chroot 内使用网络(可选)
sudo cp -L /etc/resolv.conf /mnt/etc/resolv.conf
sudo chroot /mnt
1.4 修复 GRUB
在 chroot 内按固件模式 二选一:
# ---- BIOS(Legacy)----
grub-install /dev/sda
update-grub
# ---- UEFI ----
grub-install --target=x86_64-efi --efi-directory=/boot/efi \
--bootloader-id=ubuntu --recheck
update-grub
1.5 重建 initramfs 并核对 fstab
update-initramfs -u -k all
blkid
cat /etc/fstab
若 UUID 已变,用 blkid 结果同步修改 /etc/fstab(以及必要时 /etc/default/grub 后重新 update-grub)。
1.6 退出与验证
exit
sudo umount -R /mnt
sudo reboot
取出安装介质,从硬盘启动。仍失败时可在 GRUB 编辑内核参数临时追加 nomodeset,或回到 Live 环境对 未挂载 分区执行 sudo fsck -y <设备>。
第二章 CentOS 7.9 引导修复
2.1 常见现象
- GRUB2 报错:
file not found、unknown filesystem - 停在
dracut:找不到 root、LVM 或相关设备 - 内核升级中断 /
/boot损坏导致无法引导
2.2 进入救援环境
- 使用 CentOS 7.9 安装 ISO 启动 → Troubleshooting → Rescue a CentOS system。
- 选择将系统挂载到
/mnt/sysimage(Continue)。 - 救援环境常以只读挂载,先改为可写再 chroot:
mount -o remount,rw /mnt/sysimage
mount | grep /mnt/sysimage # 确认 /boot、/boot/efi 是否已挂上
chroot /mnt/sysimage
自动挂载失败时,在 未 chroot 的救援 shell 中手动挂载(设备名按实际修改):
vgscan
vgchange -ay
mkdir -p /mnt/sysimage
mount /dev/mapper/centos-root /mnt/sysimage
mount /dev/sda1 /mnt/sysimage/boot # 独立 /boot
# UEFI 再挂 EFI:
# mount /dev/sda2 /mnt/sysimage/boot/efi
mount -t proc proc /mnt/sysimage/proc
mount -t sysfs sys /mnt/sysimage/sys
mount --bind /dev /mnt/sysimage/dev
mount --bind /run /mnt/sysimage/run
chroot /mnt/sysimage
文件系统检查须在挂载前进行,例如:
fsck -y /dev/mapper/centos-root。
2.3 重装 / 修复 GRUB2
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
# ---- BIOS ----
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
# ---- UEFI(需已挂载 /boot/efi;重装包需要可用 yum 源/网络)----
yum reinstall -y grub2-efi-x64 shim-x64
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=centos
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
核对 /etc/default/grub 中 rd.lvm.lv=、root= 等与当前 VG/LV 名称一致,修改后重新执行对应的 grub2-mkconfig。
2.4 重建 initramfs
救援环境的 uname -r 通常不是 故障系统内核,务必显式指定版本:
rpm -q kernel
ls /boot/vmlinuz-* /boot/initramfs-*.img
# 将版本号换成 ls 看到的实际内核,例如 3.10.0-1160.el7.x86_64
KVER=3.10.0-1160.el7.x86_64
dracut -f /boot/initramfs-${KVER}.img ${KVER}
2.5 核对配置并重启
blkid
cat /etc/fstab
exit
reboot
第三章 Rocky Linux 9.3 引导修复
3.1 常见现象
- 进入
grub>命令行,或固件中丢失 Rocky 启动项 dracut无法解析 root UUID / LVM/boot或 EFI 文件缺失;SELinux 上下文异常导致无法进入多用户模式
3.2 进入救援环境
- 使用 Rocky 9.3 安装 ISO 启动 → Troubleshooting → Rescue a Rocky Linux system。
- 选择 Continue,将系统挂载到
/mnt/sysimage。 - 改为可写并 chroot:
mount -o remount,rw /mnt/sysimage
# UEFI:确认 EFI 已挂载
ls /mnt/sysimage/boot/efi/EFI 2>/dev/null || \
mount /dev/sda1 /mnt/sysimage/boot/efi # 分区号按实际修改
for i in /dev /dev/pts /proc /sys /run; do
mount --bind "$i" "/mnt/sysimage$i"
done
chroot /mnt/sysimage
默认 LVM 卷组名常见为 rl(以 vgs 为准)。需检查文件系统时,在挂载前执行 fsck。
3.3 修复 GRUB2 与 EFI 启动项
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
# ---- BIOS ----
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
# ---- UEFI ----
dnf reinstall -y grub2-efi-x64 shim-x64
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=rocky
grub2-mkconfig -o /boot/grub2/grub.cfg
# 查看 / 必要时重建固件启动项(-d 磁盘、-p EFI 分区号)
efibootmgr -v
# efibootmgr -c -d /dev/sda -p 1 -L "Rocky Linux" -l '\EFI\rocky\shimx64.efi'
3.4 重建 initramfs
同样不要依赖救援环境的 uname -r:
ls /boot/vmlinuz-*
# 重建全部已安装内核的 initramfs
dracut --force --regenerate-all
# 或只重建某一个:
# KVER=5.14.0-362.24.1.el9_3.x86_64
# dracut -f /boot/initramfs-${KVER}.img ${KVER}
若 root 在 LVM 上,确认卷组已激活,且 grub / fstab 指向一致:
vgchange -ay
grep -E 'rd.lvm|root=' /etc/default/grub
grep -E 'UUID=|/dev/mapper' /etc/fstab
3.5 SELinux 异常时的处理
仅在确认与 SELinux 相关(权限/标签类报错)时使用:
- 开机在 GRUB 内核行临时追加
enforcing=0,先进入系统。 - 执行完整重标签后重启:
touch /.autorelabel
reboot
3.6 退出与验证
exit
reboot
进入系统后建议检查:
systemctl is-system-running
efibootmgr -v 2>/dev/null || true
df -h / /boot
ls /boot/efi/EFI/rocky 2>/dev/null || true
附录:通用排查清单
| 检查项 | 说明 |
|---|---|
| 固件模式一致 | 安装/修复时的 BIOS 与 UEFI 必须与当前固件设置一致 |
| root 标识一致 | fstab、GRUB 内核参数、initramfs 中的 root 指向同一设备 |
/boot 空间 |
空间耗尽或升级中断会导致内核、initramfs 不完整 |
| 磁盘与文件系统 | 反复失败时优先对未挂载分区做 fsck,并排查坏道 |
| LVM / 加密 | 未 vgchange -ay 或未解锁 LUKS 时,救援与 chroot 都会失败 |
| 配置备份 | 修改前备份 grub.cfg、fstab、/etc/default/grub |
推荐修复顺序:确认分区与固件模式 → 挂载并 chroot → 修复 GRUB/EFI → 重建 initramfs → 核对 fstab/UUID → 重启验证。