库文件问题导致启动失败

一、库文件名被修改

1、云上机器可以将系统盘挂载到其他实例上进行操作

mount /dev/vdd2 /mnt/
ll /mnt/

2、将这个系统盘当作数据盘挂载好后chroot到挂载点

[root@test ~]# chroot /mnt/
chroot: failed to run command ‘/bin/bash’: No such file or directory
# 此时可以看到chroot会报错

3、chroot报错,检查/bin/bash文件是否存在

[root@test ~]# ll /mnt/bin/bash
-rwxr-xr-x 1 root root 1186800 Aug  8  2022 /mnt/bin/bash
# 如果不存在拷贝一个过去即可

4、查看chroot的执行文件目录

[root@test ~]# which chroot 
/usr/sbin/chroot

5、查看异常系统的chroot的

[root@test ~]# ldd /mnt/usr/sbin/chroot
	linux-vdso.so.1 =>  (0x00007ffe840c8000)
	libc.so.6 => /lib64/libc.so.6 (0x00007ff1dd5fd000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff1dd9cb000)

6、查看动态库的文件和正常系统对比即可

ll  /mnt/lib64/ld-linux-x86-64.so.2 

7、由于/bin/bash存在,查看动态库

[root@test ~]# ldd /mnt/bin/bash
        linux-vdso.so.1 =>  (0x00007ffd6c5e8000)
        libtinfo.so.6 => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f38f3116000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f38f2d48000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f38f331a000)

跟正常的对比,并查看上面的库文件,发现库文件名被更改了

[root@test ~]# ll  /mnt/lib64/ld-linux-x86-64.so.2*
lrwxrwxrwx 1 root root 10 Aug 30  2021 /mnt/lib64/ld-linux-x86-64.so.2.bak -> ld-2.32.so

此时更改为正常的名字即可

[root@test ~]# mv /mnt/lib64/ld-linux-x86-64.so.2.bak /mnt/lib64/ld-linux-x86-64.so.2
[root@test ~]# ll /mnt/lib64/ld-linux-x86-64.so.2*
lrwxrwxrwx 1 root root 10 Aug 30  2021 /mnt/lib64/ld-linux-x86-64.so.2 -> ld-2.32.so

5、卸载磁盘,重新挂载到之前的机器即可

一般都是对比以上文件在/usr/lib64或者是/lib64中的即可

二、库文件缺失

1、云上机器可以将系统盘挂载到其他实例上进行操作

```bash
mount /dev/vdd2 /mnt/
ll /mnt/

2、chroot到挂载点mnt下

[root@test ~]# chroot /mnt
/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory

3、这个时候看到缺少了库文件,可以直接拷贝过去即可

看报错是/bin/bash缺少库文件,也可以使用ldd查看下;检查可以看到这个软连接/mnt/lib64/libdl.so.2的源文件是缺失的

```bash
[root@test ~]# ldd /mnt/bin/bash
        linux-vdso.so.1 (0x00007fff6ebd6000)
        libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f5665906000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f56658ff000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5665733000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5665a64000)
[root@test ~]# ll /mnt/lib64/libdl.so

4、拷贝库文件过去

[root@test ~]# cp -rp /usr/lib64/libdl-2.32.so /mnt/usr/lib64/libdl-2.32.so

5、卸载磁盘挂载回去,重启机器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值