一、库文件名被修改
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、卸载磁盘挂载回去,重启机器