问题现象描述
在执行系统清理时,我删除了/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 | 选定的磁盘不存在 |