升级 Ubuntu(32 位)10.10 -> 11.04 失败并导致启动时出现内核恐慌

升级 Ubuntu(32 位)10.10 -> 11.04 失败并导致启动时出现内核恐慌

在 Ubuntu 10.10 机器上使用更新管理器升级到 Ubuntu 11.04。升级失败,导致系统处于不稳定状态。当我重新启动系统时,我在启动时出现内核恐慌。错误指向 /opt/abc/runtime/lib/libc.so.6。

通过研究我发现是第三方软件 abc 导致了问题。它有自己的运行时(libc)库。在 /lib/ 目录中有一个链接文件 /lib/ld-abc.so.2 --->/opt/abc/runtime/lib/ld-linux.so.2。

如果我们将此文件重命名为 /lib/abc.so.2 或删除此文件,则升级成功。

这是崩溃的升级日志(apt-term.log)

=====

Services restarted successfully.

Processing triggers for libc-bin ...

ldconfig deferred processing now taking place

/usr/bin/dpkg: /opt/abc/runtime/lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/dpkg)

/usr/bin/dpkg: /opt/abc/runtime/lib/libc.so.6: version `GLIBC_2.8' not found (required by /lib/libselinux.so.1)

=====

您能否告诉我在 /lib 目录中存在运行时链接库文件会出现什么问题。ubuntu 升级是否也会检查第 3 部分运行时?

答案1

通过在 /lib 上提供指向第三方 libc 的链接,您将导致动态链接器对所有需要 libc 的二进制文件使用第三方 libc 而不是系统库。您不应该这样做,因为它可能会破坏您的系统,但不允许启动任何系统二进制文件。

如果您需要特定的应用程序使用它自己的库版本,请创建一个脚本并使用 LD_LIBRARY_PATH 变量,如下所示:

export LD_LIBRARY_PATH=/opt/abc/lib
/opt/abc/bin/run

答案2

由于 Unity,旧版本的 Ubuntu(10.10 及更低版本)无法无缝升级到 Ubuntu 11.04 或 11.10。

我建议您备份重要数据并重新安装...

相关内容