报错问题,centos系统误删libc

作者:亚搏app官网    发布时间:2019-12-28 02:58    浏览:176 次

[返回]

    这两天蒙受开拓职员更新glibc版本,把/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 这一个软连接校勘之后招致报错:

CentOS 6.x误删libc.so.6,导致重启Kernel panic - not syncing: Attempted to kill init!报错难点

CentOS 6.x x64 借使失误删除系统/lib64/libc.so.6软连接文件,会促成不可能实施系统命令,不能够新建ssh或许直接登陆种类终端。

重启系统后会提醒:

Kernel panic - not syncing: Attempted to kill init!

没辙平常运营步向系统。

图片 1

     ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

解决办法:

    不能远程登陆,终端也无计可施登陆,也心余力绌单客户登陆,如图:

情况一:

假若还连接的ssh终端,未有断开,直接实施如下命令就可以恢复生机:

# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

图片 2

情况二:

ssh已经断开,不恐怕新建新的ssh连接,重启系统,报错无法进去系统。

出现报错:Kernel panic - not syncing: Attempted to kill init!

拍卖方法

插入系统光盘,步入rescue救援情势,将链接文件复制到被删除的文件系统。

操作步骤如下:

1、开机步向BIOS设置,改良BOOT运维顺序为光盘优先运维 CD-ROM Drive;

2、重启系统后由光盘辅导,走入安装运维菜单,选拔“Rescue install system”救援格局;

图片 3

3、选取语言,保持暗中认可English

图片 4

4、选拔键盘类型,保持暗中同意us

图片 5

5、是还是不是运转网络,要求凭借你实际情状张开分选,借使须求通过联网拷贝数据,选用YES,在此边大家选拔NO;

图片 6

6、进入到Rescue界面,选择Continue

图片 7

7、系统挂载在/mnt/sysimage下 ,选用OK

(若是要到root遭遇下,运转 chroot /mnt/sysimage 命令,此处不供给)

图片 8

图片 9

8、选择步入情势:shell 步向命令行情势,fakd是确诊情势,reboot重启Computer,这里接纳shell

图片 10

9、进入shell命令行,提醒符为

bash-4.1#

图片 11

10、不要试行chroot /mnt/sysimage,因为硬盘文件系统就在该目录下,从/lib64下复制软连接就可以,操作如下:

bash-4.1# cd /lib64

bash-4.1# cp -d libc.so.6 /mnt/sysimage/lib64/libc.so.6

bash-4.1# reboot

自此就可以苏醒符合规律

图片 12

极点登入:

图片 13

单用户:

图片 14

实际在施行误操作之后固然不断开长途连接还会有挽救的退路,但中间距婚常断开连接之后很两个人就没有辙了,绸缪抢救数据&文件,重装系统,其实这里大家先不要焦炙重装系统,大家来试试看rescue !

生机勃勃、首先准备好系统安装盘,使用安装盘运维:

图片 15 :

 

二、接收语言和键盘(私下认可的就好):

图片 16

三、稍等说话会冒出要不要安装互联网,通常的话网络没难点就不要安装了,笔者这边选择No:

图片 17

四、这里就是rescue选项了:

  1. 分选Continue,则救援格局先后会活动搜索系统中原来就有个别文件系统,并把她们挂载到/mnt/sysimage目录下。

  2. 接纳Read-Only,则会以只读的法子挂载已部分文件系统。

  3. 手动挂载则Skip。

  4. Advanced ,高档选项就不作表明了。

咱俩那儿选取Continue:

图片 18

五、原系统挂载路线/mnt/sysimage,倘使想博得原系统root遭受,履行行命令:chroot /mnt/sysimage 就能够。

图片 19

六、这里可以实行fakd确诊,当然大家这里直接步向shell 命令行:

图片 20

七、本次重头戏来了,因为/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 难题,试行chroot /mnt/sysinage会报错:

图片 21

八、不要惧怕,实施:

cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so
cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6

将光盘文件拷贝到系统文件去,再试行chroot /mnt/sysinage 就何足为奇了:

图片 22

骨子里到此地自个儿本次rescue 已经到位了,因为系统贫乏/usr/lib64/libc-2.12.so文件和 libc.so.6 -> libc-2.12.so软连接 ,复制过去就好了 。

九、退出shell & reboot  

图片 23

简短的另一个办法:
那就远程连接还没关门:
# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
该命令的意义是:
linux调用so库文件时,先物色当前路径,然后是系统库目录,提供LD_PRELOAD系统变量能够变动这几个顺序,改动后的探索顺序为 LD_PRELOAD, 当前路径, 系统库目录。
于是,使用LD_PRELOAD指向符合规律的glibc库文件,然后实行ln等一声令下,就能够寻常施行,实践成功之后, libc.so.6 -> libc-2.12.so就又存在了。

其余系统文件损坏也得以参照雷同步骤进行,就不在这里赘述了 。

接待大家多多辅助

 

搜索