HCRM博客

CentOS GRUB Rescue模式一键恢复丢失内核

CentOS grub rescue下找回丢失的内核

开机只剩黑底白字的 grub rescue>,提示符像断头台一样悬在那里,内核文件凭空蒸发,连 grub.cfg 都找不到——别急着重装,数据还在盘里躺着,只是引导迷路了。下面这套流程,从判盘、挂载、重装内核到修复引导,全程用系统自带工具,不借第三方 LiveCD,十分钟内让机器重新滚回登录界面。

CentOS GRUB Rescue模式一键恢复丢失内核-图1

先搞清:为什么内核会“丢”

CentOS 升级半截断电、yum 清理旧版本时手滑、多系统共存把 /boot 分区格了,都会让 vmlinuz 与 initramfs 消失。grub2 模块还在,可配置文件读不到镜像路径,于是直接跌进 rescue 壳。说白了,文件没碎,只是路径断链。

第一步:在 grub rescue 里找到分区表

rescue> 后面先输入 ls,回车会列出 (hd0,msdos1) (hd0,msdos2) 这类设备。CentOS 默认 /boot 挂在第一块磁盘第一分区,也就是 (hd0,msdos1)。不确定就挨个试:

ls (hd0,msdos1)/

看到 grub2 文件夹,说明这里曾是 /boot;再深入 ls (hd0,msdos1)/grub2,若找不到 grub.cfg,基本判定内核镜像被删。

CentOS GRUB Rescue模式一键恢复丢失内核-图2

第二步:临时手动引导,先让系统跑起来

grub rescue 下四条命令就能临时启动:

set root=(hd0,msdos1)

linux /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro

initrd /initramfs-3.10.0-1160.el7.x86_64.img

boot

CentOS GRUB Rescue模式一键恢复丢失内核-图3

如果 /boot 里连 vmlinuz 都没有,上面这条就走不通,需要直接跳到“第三步”从备份里拖文件;若文件仍在,只是 grub.cfg 丢失,系统能临时进 root,接下来就在线重装内核。

第三步:系统跑起来后,立刻重装内核包

登录 root,先确认当前内核 RPM 是否完整:

rpm -q kernel

若返回为空或带 missing,直接 yum 重装:

yum reinstall kernel-3.10.0-1160.el7.x86_64 --disablerepo=* --enablerepo=base

这一步会把 vmlinuz、initramfs、System.map 重新写回 /boot,并自动跑 dracut 重建内存盘。网络不通就挂载本地 ISO 做源,CentOS 7 在 /dev/sr0 里自带 Packages,createrepo 后指向 file:///mnt/cdrom 即可。

第四步:重建 grub.cfg,别让噩梦循环

内核文件归位后,还要让 grub2 重新索引:

grub2-mkconfig -o /boot/grub2/grub.cfg

UEFI 机器路径稍有差异:

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

接着把配置写进 MBR 或 EFI 分区:

传统 BIOS:grub2-install /dev/sda

UEFI:grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=centos --recheck

无报错出现 Done 字样,重启即可。

第五步:/boot 被格空,连备份都没有怎么办

若 vmlinuz 与 initramfs 全灭,yum 缓存也清掉,别慌,/lib/modules 里还躺着模块目录,用 dracut 可以现场搓一个内存盘:

dracut --force /boot/initramfs-$(uname -r).img $(uname -r)

内核二进制只能去同版本机器拷,scp 回来放 /boot,改好权限 644,再按第四步重建引导。没第二台机器就挂载官方 DVD,在 Packages 目录手动 rpm2cpio 解出 vmlinuz-cp /boot 即可。

第六步:顺手把 /boot 做成独立分区并加只读快照

很多事故是因为 /boot 与根分区混用,被 log 撑爆。装系统时单独分 1 G 给 /boot,日常用 LVM 快照:

lvcreate -s -n boot-snap -L 500M /dev/centos/boot

升级内核前打快照,失败回滚 lvconvert --merge,秒级复原。

常见坑排雷

1. 手敲路径把 vmlinuz 拼错,tab 补全能救命。

2. BIOS 与 UEFI 混装,grub2-install 选错 target 导致重启又掉 rescue。

3. 重装内核后忘记改 /etc/default/grub 里的 GRUB_DEFAULT,系统还是起旧版本。

4. 用了第三方精简版系统,把 dracut 配置砍半,initramfs 里缺 xfs 驱动,启动卡 root mount,记得在 /etc/dracut.conf 加 add_drivers+="xfs" 再 dracut --force。

一条命令自检是否彻底修好

重启后执行 journalctl -b | grep -i 'failed\|error',无输出说明引导链干净;再 rpm -V kernel,校验全点 . 即文件完整。至此,CentOS grub rescue 下找回丢失的内核全流程收工,系统原地复活,数据零损失。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41974.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~