故障:

  CentOS开机提示Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown-block

 

故障背景:

在没有关闭应用和系统的前提下,直接点了虚拟机关闭电源选项,再开机就报如上错误

原因分析:

根据提示信息分析,可能因为意外关机导致系统内核信息混乱。

解决方法:

(1)如果开机有多个内核选项,这是最简单的方法开机启动时按Esc,然后选择下面的其他版本的内核启动即可。(成功进入系统后,你可以选择改变开机默认选择的内核)。

(2)如果开机没有多内核选项可选:那就需要修复内核(查看快照发现只有一年前的,基本不可用)

 

下面为vm exsi 修复centos虚拟机内核操作

1.下载故障虚拟机对应的centos镜像

在报错界面有内核版本:3.10.0-1160.25.1.el7.x86_64,可以根据内核反推centos版本

我这边由于这个应用有好几台主机,所以登陆了其他机器查看centos版本

[root@evevm1 docker]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

下载镜像渠道可以参考:https://blog.csdn.net/a350904150/article/details/129833998

最先查看的是官网,发现旧版本已经不提供了,顿时心凉了一半

 

好在后来在阿里云上找到了资源,我只用来修复内核,下载最小版本即可

 

2.上传镜像文件,配置虚拟机加载镜像

 (1)在vsphere 控制口找到虚拟机所在的存储磁盘,上传镜像文件

(2)设置故障虚拟机配置为开机加载dvd镜像

 镜像文件选择刚刚上传的镜像

 

 

3.进入Linux rescue模式

(1)设置虚拟机bios引导优先级为cdrom,并开机

如果是内核损坏,这步可以省略,因为bios发现硬盘加载不了会自动加载cdrom

(2)打开Remote Console 

 (3)开机

 (4)进入bios,切换到boot,并把cdrom调至第一位,后按F10保存退出

 (5)选择troubleshooting

(6)选择rescue a centos system

 (7)选1进入修复模式

 

 

 4.开始修复

chroot /mnt/sysimage 的意思是把真实的系统文件切换成根目录(就是进入真实的系统环境),因为rescure模式把真实系统文件挂载到了 /mnt/sysimage目录

这里不需要切换

(1)挂载光驱cdrom到/mnt/cdrom路径下

mkdir -p /mnt/cdrom
mount -t iso9660 /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
ls

 

(2)内核修复

修复内核所需的文件在挂载光盘的Packages目录下面

cd Packages
ls |grep kernel-
rpm -ivh ./kernel-3.10.0-862.el7.x86_64 --root=/mnt/sysimage/ --force

 (5)退出恢复模式,关闭系统

exit

(6)按步骤一重新设置bios引导顺序,开机即可

 

参考文档:https://blog.csdn.net/e_wsq/article/details/87075346

他后来有修复grub程序步骤,我执行提示 command not found,所以没有修复grub程序

不过后来重启系统,卡了半天还是正常开机了,所以一般来说不用修复grub程序

我猜测他那个为老版本命令,新版变成了 grub2-install 

如果要修复一定要指定/boot的盘符,即/dev/sda1

 

 

5.关于内核操作

有时候升级几次后内核文件占用较大,需要腾空间。操作如下:

第一步、打开终端提升权限:

su #提升权限

第二步、查询当前使用内核

uname -a #查询当前使用的系统

第三步、查询系统中所有内核

rpm -qa | grep kernel

或者可以用这个命令查看:cat /boot/grub2/grub.cfg | grep menuentry

查看当前默认内核:grub2-editenv list

设置默认启动内核:grub2-set-default 'CentOS Linux (3.10.0-1160.92.1.el7.x86_64) 7 (Core)'

第四步、删除你不需要的内核

yum remove 你要删除的内核 #把老版本的内核remove,千万不要把正在使用的内核删掉

第五步、更新grub引导菜单

grub2-mkconfig -o /boot/grub2/grub.cfg #重新编译引导

第六步、重启系统

init 6 #重启使用“reboot”也可以

参考文档:https://blog.csdn.net/lushanglou/article/details/131640964

 

posted on 2023-12-06 14:52  06  阅读(1289)  评论(0编辑  收藏  举报