在正在运行的Ubuntu 16.04系统上,执行了以下命令:
$ wget https://ftp.gnu.org/gnu/libc/glibc-2.26.tar.gz
$ tar -xvzf glibc-2.26.tar.gz
$ mkdir build_gcc && cd build_gcc
$ ../glibc-2.26/configure --prefix=/usr
$ make
$ sudo checkinstall
在安装过程中,生成了错误:
Makefile:106: recipe for target 'install-symbolic-link' failed
之后,没有一个命令能够运行,导致分段错误。
显然,glibc
被坏二进制文件损坏/覆盖。现在尝试通过从实时Ubuntu闪存启动并尝试重新安装libc6
来恢复系统。这些做法是:
降级libc6并再次升级:
$ sudo apt-get -o Dir=<partition_path> install libc6=2.23-0ubuntu3
$ sudo apt-get -o Dir=<partition_path> install libc6
这没有用,因为尝试chroot进入分区导致segfault:
$ chroot <partition_path>
使用apt-get -o RootDir
:
$ sudo apt-get -o RootDir=<partition_path> install libc6=2.23-0ubuntu3
…
Chrooting into <partition_path>
E: Sub-process /usr/sbin/dpkg-preconfigure —apt || true received a segmentation fault
E: Failure running script /usr/sbin/dpkg-preconfigure —apt || true
可以看出,由于chrooting进入受损环境,它也失败了。
如何恢复系统?
答案 0 :(得分:2)
使用apt-get download libc6
获取包,然后
dpkg -x libc6*.dpkg /partition_path
到&#34;安装&#34;它
你的断言&#34;显然,glibc被坏的二进制文件损坏/覆盖了#34;可能不正确。可能发生的事情是libc.so.6
获得了新的位,而ld-linux.so
没有,反之亦然。他们必须始终匹配,或者事情中断。