Linux

什麼是受污染的 Linux 核心?

  • January 8, 2022

在某些情況下,Linux 核心可能會受到污染。例如,將專有影片驅動程序載入到核心中會污染核心。這種情況可能會在系統日誌、核心錯誤消息(oops 和 panics)中以及通過 , 等工具可見lsmod,並且會一直持續到系統重新啟動。

這是什麼意思?它是否會影響我使用系統的能力,以及它會如何影響我的支持選項?

受污染的核心是處於不受支持狀態的核心,因為它不能保證正常執行。大多數核心開發人員會忽略涉及受污染核心的錯誤報告,社區成員可能會要求您更正污染情況,然後才能繼續診斷與核心相關的問題。此外,當核心被污染時,一些調試功能和 API 呼叫可能會被禁用。

污點狀態由一系列標誌表示,這些標誌表示不能信任核心正常工作的各種原因。**核心被污染的最常見原因是從 NVIDIA 或 AMD 載入專有圖形驅動程序,在這種情況下,通常可以安全地忽略該情況。**但是,某些導致核心受到污染的情況可能表明存在更嚴重的問題,例如硬體故障。檢查系統日誌和設置的特定污點標誌以確定問題的根本原因是一個好主意。

此功能旨在辨識可能難以正確解決核心問題的情況。例如,專有驅動程序可能會導致無法可靠調試的問題,因為它的原始碼不可用並且無法確定其影響。同樣,如果以前發生過嚴重的核心或硬體錯誤,核心空間的完整性可能已經受到損害,這意味著核心生成的任何後續調試消息都可能不可靠。

請注意,單獨更正污染條件並不能消除污染狀態,因為這樣做不會改變核心不再能夠正常工作或產生準確調試資訊的事實。必須重新啟動系統才能清除污點標誌。

Linux 核心文件中提供了更多資訊,包括每個污染標誌的含義以及如何在報告錯誤之前對受污染的核心進行故障排除

下面是可能導致核心被污染的部分條件列表,每個條件都有自己的標誌。請注意,某些 Linux 供應商(例如 SUSE)添加了額外的污點標誌來指示條件,例如載入由第三方支持而不是由供應商直接支持的模組。

  • 載入專有(或非 GPL 兼容)核心模組。如上所述,這是核心被污染的最常見原因。
  • 暫存驅動程序的使用,它們是核心原始碼的一部分,但處於試驗階段,未經過全面測試。
  • 使用未包含在 Linux 核心原始碼中的樹外模組。
  • 強制載入或解除安裝模組。如果嘗試使用不是為目前版本的核心建構的模組,就會發生這種情況。(Linux 核心模組ABI跨版本不穩定,甚至同一版本的不同配置版本也不穩定。)
  • 在特定不支持的某些硬體配置上執行核心,例如在不支持 SMP 操作的早期 AMD Athlon 處理器上的 SMP(多處理器)核心。
  • 覆蓋核心中的ACPI DSDT。這有時需要糾正韌體電源管理錯誤;有關詳細資訊,請參閱此 Arch Linux wiki 文章
  • 某些嚴重的錯誤情況,例如機器檢查異常核心錯誤
  • 核心必須解決的 BIOS、UEFI 或其他系統韌體中的某些嚴重錯誤。

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