Kernel

為什麼 Wine 不能在容器中執行核心模式(環 0)驅動程序?

  • September 22, 2020

我對系統程式或作業系統不是很熟悉,所以這可能是一個愚蠢的問題。但我最近試圖讓一個遊戲在 Wine 中執行,它實現了一個反作弊系統。經過一番挫折後,我了解到這是不可能的,因為反作弊系統需要在核心模式下執行(“ring 0”?),而 Wine 在使用者模式下執行(“ring 3”?)

有很多關於環 0 和環 3 之間差異的文章,或者為什麼 Wine 在一個而不是另一個中執行。比如:為什麼wine不支持核心模式驅動?

然而,當我想到它時,這個問題對 Docker 等容器解決方案正在解決的問題感到奇怪的熟悉。在 Docker 內部執行的 Wine 是否無法安全地提供 ring 0 訪問權限?或者 Docker 只能執行使用者模式程序?當您可以使用容器來防止惡意程序在您的電腦上執行時,為什麼需要模擬整個 CPU?

  • x86 ring 0 = 主管模式 = 核心模式
  • x86 ring 3 = 使用者模式

Docker 容器和 docker 守護程序在使用者模式下執行。容器與主機系統共享核心。Docker 使用核心中的新特性,就像其他程序使用核心中的舊特性一樣。

如果您在主管模式下執行程式碼,那麼它會在核心中執行,並且對您的所有程序和數據擁有上帝的權力。

但是,您可以在虛擬主管模式下執行程式碼(使用虛擬框或其他視覺化工具)。為此,您將整個系統放在虛擬機中,而不僅僅是使用者模式部分。因此,您可以添加核心模式程式碼。

請注意:如果您安裝核心模式程式碼,那麼它可以完全控制您的機器。它可以看到您所做的一切,並控制您的機器做任何想做的事情。

引用自:https://unix.stackexchange.com/questions/610802