某一天,开发同事突然告诉我服务器上自己的虚拟机连不上了,我登陆到服务器CAS管理界面,重启虚拟机后发现报错了
问题:Kernel panic - not syncing: Attempted to kill init
原因:这个问题的主要原因是系统的/lib64/libc-2.12.so和
/lib64/libc.so.6
文件丢失或者软链接错误
解决办法:
一、修改启动模式,更改为光盘启动(各种环境大同小异)
二、用光盘启动救援模式,进入shell命令行:执行: chroot /mnt/sysinage 报错
三、拷贝/lib64/libc-2.12.so和
/lib64/libc.so.6
文件
四、执行: chroot /mnt/sysinage 不会报错,证明已经修复
过程如下:
一、修改启动模式,更改为光盘启动(各种环境大同小异),我的服务器装的是CAS管理平台,配置如下(如果是其他的请自行百度)
1、挂载光盘
2、设置为启动引导后,重启虚拟机
二、用光盘启动救援模式,进入shell命令行:执行: chroot /mnt/sysinage 报错
1、选择Rescue install system 后回车
2、选择语言:English(默认)
3、选择键盘类型:us(默认)
4、Setup Networking:NO(设置网络根据情况而定,一般来说网络没问题就不用设置了)
5、Rescue:Continue(继续)
-
>选择Continue,则救援模式程序会自动查找系统中已有的文件系统,并把他们挂载到/mnt/sysimage目录下。
-
>选择Read-Only,则会以只读的方式挂载已有的文件系统。
-
>手动挂载则Skip。
-
>Advanced ,高级选项就不作说明了。
6、原系统挂载路径/mnt/sysimage,如果想获得原系统root环境,执行行命令:chroot /mnt/sysimage 即可
7、一直OK,到选择shell命令行,OK
8、因为/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 问题,执行chroot /mnt/sysinage会报错
三、拷贝/lib64/libc-2.12.so和
/lib64/libc.so.6
文件
cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so
cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6
注:如果拷贝失败:用强制拷贝cp -rf 命令
四、执行: chroot /mnt/sysinage 不会报错,证明已经修复
重新启动虚拟机,启动成功