为什么 Wine 不能在容器中运行内核模式(ring 0)驱动程序?

为什么 Wine 不能在容器中运行内核模式(ring 0)驱动程序?

我对系统编程或操作系统不太熟悉,所以这可能是一个愚蠢的问题。但我最近试图在 Wine 中运行一款实现反作弊系统的游戏。经过多次挫折后,我了解到这是不可能的,因为反作弊系统需要在内核模式下运行(“ring 0”?),而 Wine 在用户模式下运行(“ring 3”?)

有很多帖子介绍了环 0 和环 3 之间的差异,或者为什么 Wine 在环 0 和环 3 中运行而不是在环 3 中运行。例如:为什么wine不支持内核模式驱动?

然而,当我想到这一点时,我感觉这个问题与 Docker 等容器解决方案所解决的问题有一种奇怪的熟悉感。在 Docker 内部运行的 Wine 是否无法安全地提供 Ring 0 访问?或者Docker只能运行用户态程序吗?当您可以利用容器来防止恶意程序在您的计算机上运行时,为什么需要模拟整个 CPU?

答案1

  • x86 环 0 = 管理模式 = 内核模式
  • x86 环 3 = 用户模式

Docker 容器和 docker 守护进程在用户模式下运行。容器与主机系统共享内核。 Docker 使用内核中的新功能,就像其他程序使用内核中的旧功能一样。

如果您在主管模式下运行代码,那么它会在内核中运行,并对所有进程和数据拥有强大的权力。

但是,您可以在虚拟管理程序模式下运行代码(使用虚拟框或其他可视化工具)。为此,您将整个系统放入虚拟机中,而不仅仅是用户模式部分。因此您可以添加内核模式代码。

请注意:如果您安装内核模式代码,那么它就可以完全控制您的机器。它可以看到你所做的一切,并控制你的机器做它想做的事。

相关内容