无法创建 16 位 LDT 段

Table of Contents

说明

Wine 需要能够创建 16 位 LDT 段才能运行 16 位 的应用程序。请注意,相当多表面上看起来是 32 位的应用程序,实际上在某些地方(比如启动器)仍然套用了 16 位代码。

然而,Linux 内核在 3.14 版本左右,为了临时修复一个安全漏洞,64 位系统上 移除了对 16 位段的支持,这很可能就是出现此问题的原因。

解决方法

解决这个问题最好的办法,就是将 Linux 内核升级到已修复相关安全问题的版本,也就是 3.16 或更高版本。除此之外,最简单的解决办法通常是将 Linux 内核降到 3.13 或更早版本。

针对部分 Linux 内核的另一个解决方案是,以 root 身份运行以下命令:

echo 1 >/proc/sys/abi/ldt16

但请注意,这样做意味着在内核中重新引入了原本存在的安全隐患。此外,该设置在重启后会重置,您可能需要设置一个 init.d 脚本实现自动执行该操作。

Next Step: pthread_cancel() 无法正常工作

Last modified on 2026-05-06 12:57:48 UTC by Andrew Balfour

Knowledge Base Software powered by Helpjuice