误删Linux系统/boot目录导致无法启动的修复方案


阅读 2 次

问题现象描述

在执行系统清理时,我删除了/boot目录下除2.6.32-27版本外的所有内核文件。重启后系统报错:

GRUB loading, please wait ... ERROR 15

为什么/boot如此重要

/boot目录存放着Linux系统启动所需的关键文件:

  • 内核镜像(vmlinuz-*)
  • 初始化内存盘(initrd-*)
  • GRUB引导加载器配置文件
  • System.map符号表

紧急修复方案

需要使用Live CD/USB进入救援模式:


# 挂载原系统分区
mkdir /mnt/sysroot
mount /dev/sda1 /mnt/sysroot
mount --bind /dev /mnt/sysroot/dev
mount --bind /proc /mnt/sysroot/proc
mount --bind /sys /mnt/sysroot/sys

# 切换根目录
chroot /mnt/sysroot

重建GRUB配置

在chroot环境中执行:


# 对于Debian/Ubuntu
apt-get install --reinstall grub-pc linux-image-generic
update-grub

# 对于CentOS/RHEL
yum reinstall grub2-common kernel
grub2-mkconfig -o /boot/grub2/grub.cfg

内核文件恢复技巧

如果连当前内核文件也被删除,需要从软件源重新安装:


# 查询可用内核版本
apt-cache search linux-image | grep generic

# 安装特定版本内核
apt-get install linux-image-4.15.0-112-generic

预防措施

建议配置自动清理旧内核的脚本:


#!/bin/bash
# 保留最近2个内核版本
apt-get autoremove --purge
dpkg -l | grep linux-image | awk '{print $2}' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge

GRUB常见错误代码

错误代码 含义
Error 15 文件未找到
Error 17 无法挂载分区
Error 21 选定的磁盘不存在