initramfs损坏的方式很多,例如,Centos 7 Linux操作系统打补丁或者安装有不过的设备驱动程序后,发现Centos 7成为不可引导的。
我们这里模拟initramfs损坏,可以直接删除或者改为空文件。
然后重启虚拟机,会遇到如下报错
GRUB2在加载内核程序
vmlinuz-3.10.0-1062.el7.x86_64之后,也会提取initramfs映像中的内容,涉及到文件系统和硬件驱动。我们通过dracut 工具来管理和重建initramfs。
查看当前initramfs内容
# initramfs | more
解决方法:
重启系统,进入救援内核镜像
用root用户登录系统,查看一下initramfs是否存在,发现文件大小为0,肯定有问题。
用当前的kernel版本,重建新的initramfs镜像
# dracut -f /boot/initramfs-3.10.0-1062.el7.x86_64.img $(uname -r)
执行完之后,可以看到
initramfs-3.10.0-1062.el7.x86_64.img重建成功。
检查当前kernel版本重建的initramfs镜像
# lsinitrd -k $(uname -r)
重启虚拟机,可以正常进入系统。到这里initramfs恢复完成。