目录
问题
CentOS7、8:
root用户下,不小心执行了mv /* /opt/new-system/,导致系统无法使用/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
# mv /* /opt/new-system/
mv: cannot move ‘/boot’ to ‘/opt/new-system/boot’: Device or resource busy
mv: cannot move ‘/dev’ to ‘/opt/new-system/dev’: Device or resource busy
mv: cannot move ‘/home’ to ‘/opt/new-system/home’: Device or resource busy
mv: cannot move ‘/opt’ to a subdirectory of itself, ‘/opt/new-system/opt’
mv: cannot move ‘/proc’ to ‘/opt/new-system/proc’: Device or resource busy
mv: cannot move ‘/root’ to ‘/opt/new-system/root’: Device or resource busy
mv: cannot move ‘/run’ to ‘/opt/new-system/run’: Device or resource busy
mv: cannot move ‘/sys’ to ‘/opt/new-system/sys’: Device or resource busy
mv: cannot move ‘/usr’ to ‘/opt/new-system/usr’: Device or resource busy
# ./
etc/ media/ mnt/ srv/ tmp/ var/
其实还有/lib /lib64 /bin /sbin 等目录 ,上面粗字体是相对于CentOS6做的保护,6被删除的更多,见下面场景。
# ls
-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
CentOS6:
可见被mv的目录比CentOS7+多了好多,这也导致如果出现这种情况,如果已经重启系统,那么只能通过“新盘重装系统,再挂在旧盘”恢复数据。
# mv /* /opt/new-system/
mv: cannot move `/boot' to `/opt/new-system/boot': Device or resource busy
mv: cannot move `/dev' to `/opt/new-system/dev': Device or resource busy
mv: cannot move `/opt' to a subdirectory of itself, `/opt/new-system/opt'
mv: cannot move `/proc' to `/opt/new-system/proc': Device or resource busy
mv: cannot move `/selinux' to `/opt/new-system/selinux': Device or resource busy
mv: cannot move `/sys' to `/opt/new-system/sys': Device or resource busy
# ./
bin/ home/ lib64/ media/ root/ srv/ usr/
etc/ lib/ lost+found/ mnt/ sbin/ tmp/ var/
# ls
-bash: /bin/ls: No such file or directory
# /opt/new-system/bin/ls
-bash: /opt/new-system/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
解决
方法一
ld-linux-x86-64.so.2,CentOS7、8在/usr/lib64/ld-linux-x86-64.so.2下;CentOS6在/lib64/ld-linux-x86-64.so.2下
执行下面的命令即可恢复:
CentOS7、8:/usr/lib64/ld-linux-x86-64.so.2 /usr/bin/mv /opt/new-system/* /
CentOS6:
export LD_LIBRARY_PATH=/opt/new-system/lib64/ /opt/new-system/lib64/ld-linux-x86-64.so.2 /opt/new-system/bin/mv /opt/new-system/* /
否则
# /opt/new-system/lib64/ld-linux-x86-64.so.2 /opt/new-system/bin/mv /opt/new-system/* /
/opt/new-system/bin/mv: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory
方法二
如果出现如上问题后,系统被重启,可以使用本方法:不管物理机还是虚拟机,将旧盘拔出,插入新盘重装系统,然后启动系统,然后挂载旧盘,恢复数据。该方法具有局限性:编译安装的软件很难弄。
方法三
如果出现如上问题后,系统被重启,可以使用本方法:
首先要说明,CentOS6根本无法进入到单用户模式,通过安装光盘进入“救援模式”也找不到任何分区,也就是说/mnt/sysimage/下毛都么有;所以,无法通过挂载光盘进行救援,而CentOS7及以上支持在GRUB下进入“救援模式”(需修改为rw,默认是ro),在该模式下,可以将错误mv的系统目录恢复回去。所以本方法只限于CentOS7+。