虽然Wine(以及Valve的Proton等下游产品)允许许多较新的Windows游戏和应用程序在现代Linux系统上运行得非常好,即使是最近的Direct 3D 12游戏等,但有时候老游戏/应用程序可能更令人头痛,以解决软件和其他老化文物中的错误。导致Linux内核上游讨论的最新问题之一是1997年首次发布的用于Microsoft Windows 98的游戏Nuclear Strike,试图让它在Linux上运行Wine。
CodeWeivers的伊丽莎白·菲古拉(Elizabeth Figura)一直在处理试图在Wine上运行核打击的问题,因为她又从列表中删除了一个漏洞。这款Windows 98游戏依赖于直接访问VGA,目前Wine存在一些问题,因为它直接访问视频内存的方式。
Figura以集思广益的方式将其带给了上游的Linux内核开发人员,以便更好地计算出针对Wine的SGDT(商店全局描述符表)仿真。对于具有用户模式指令保护的较新英特尔和AMD处理器(UMIP)支持与UMIP之前的Intel/AMD处理器相比,处理葡萄酒的SGDT仿真更容易,但Figura向LKML工作人员提出了它,以了解处理SGDT仿真的更好方法,以便最终在2024年在Wine下的Linux上支持这款1997年的游戏。
答案是,在支持UMIP的处理器上应该足够容易处理,但对于非UMIP情况,建议Wine开发人员探索直接与KVM交互。彼得·安文推荐:
“对于非UMIP的情况,可能还有很多其他的特殊情况,比如依赖某些神奇的选择器值等等,最好的选择实际上是将代码包装在一个轻量级的KVM容器中。我并不是说运行KVM的QEMU用户空间部分;而是让Wine直接与/dev/kvm接口。
在这一点上,不支持KVM的硬件基本上已成为历史。
然而,作为回应,Wine开发人员认为直接利用KVM来处理这类特殊情况可能是不切实际的,而且还会影响性能。之前关于利用Wine的虚拟化支持的探索被发现是“慢得不起作用的”。资深Wine开发人员斯特凡·多辛格说:“我认为在KVM内部运营Wine是不现实的。”
至少对于那些使用较新的AMD(Zen 2+)和支持UMIP的英特尔处理器的人来说,至少对于那些使用较新的AMD(Zen 2+)和支持UMIP的英特尔处理器的人来说,有一条前进的道路,可以致力于这个SGDT仿真,潜在地让EA从1997年开始的核打击游戏在2024年在Linux上运行得很好。那些想要关注关于这个主题的Linux内核邮件列表讨论的人可以通过Lore.kernel.org.