在Linux中什么是受污染的内核?


99

在某些情况下,Linux内核可能会受到污染。例如,将专有的视频驱动程序加载到内核会污染内核。此状况可能在系统日志,内核错误消息(糟糕和紧急情况)中以及通过诸如之类的工具可见lsmod,并且一直保持到重新启动系统为止。

这是什么意思?它会影响我使用系统的能力吗?它会如何影响我的支持选项?



@Gilles,我认为您链接到的问题应该合并到这个问题中。同样,一个问题是否是另一个问题的重复也不是很明显。
bwDraco

1
我希望将此问题规范化;查看问题的最新编辑。
bwDraco 2014年

9
@MichaelMrozek:1)我没有看到现有的问题,因为用户在问“污染​​”是什么意思并不明显,并且2)措辞上的问题仅针对单个命令lsmod。我写了这个问题和答案以使其更笼统,以便有人问“污染”是什么意思。
bwDraco 2014年

1
他们本来可以使用比“沾污”更中性的词。
罗杰·达尔

Answers:


125

当内核被污染时,这意味着它处于社区不支持的状态。大多数内核开发人员将忽略涉及受污染内核的错误报告,社区成员可能会要求您更正污染条件,然后他们才能继续诊断与内核相关的问题。另外,当内核被污染时,某些调试功能和API调用可能会被禁用。

在大多数情况下,涉及专有驱动程序,您可以放心地忽略污染的状况,但是某些导致内核污染的情况可能表示严重的系统问题。

该功能旨在确定可能导致难以正确解决内核问题的情况。例如,专有模块的加载会使内核调试输出不可靠,因为内核开发人员无法访问模块的源代码,因此无法确定模块可能对内核做了什么。同样,如果内核以前曾遇到过错误情况,或者发生了严重的硬件错误,则内核生成的调试信息可能并不可靠。

内核可能由于多种原因而受到污染,包括(但不限于)以下几种原因

  • 使用专有(或非GPL兼容)内核模块-这是内核受污染的最常见原因,通常是由于加载专有NVIDIA或AMD视频驱动程序导致的
  • 登台驱动程序的使用,它们是内核源代码的一部分,但尚未经过全面测试
  • 使用Linux内核源代码未包含的树外模块
  • 强制加载或卸载内核模块(例如,强制插入非针对当前内核版本构建的模块)
  • 在某些不受支持的单处理器CPU(主要是较旧的AMD Athlon处理器)上使用SMP(多处理器)内核
  • 覆盖ACPI DSDT,有时需要纠正电源管理错误(有关详细信息,请参见此处
  • 某些严重错误条件,例如机器检查异常内核oopes
  • 内核必须解决的系统固件(BIOS,UEFI)中的某些严重错误

这些条件中的每一个都由内核中的特定标志表示。某些Linux供应商(例如SUSE)添加了其他污染标记,以指示条件,例如加载供应商不支持的模块。

内核文档中提供了更多信息。那里列出的异味标记(带有_代表“空白”)

  • G | P:G(如果加载的所有模块均具有GPL或兼容许可证),否则已加载专有模块。那些不被insmod识别为GPL兼容的MODULE_LICENSE或MODULE_LICENSE的模块被认为是专有的。
  • F | _:如果任何模块由“ insmod -f”强制加载,否则,如果所有模块均已正常加载。
  • S | _:如果oops发生在运行在未经认证可安全运行多处理器的硬件上的SMP内核上。当前,这仅发生在不具有SMP功能的各种Athlon上。
  • R | _:如果由强制卸载了模块rmmod -f,则如果所有模块均已正常卸载。
  • M | _:如果任何处理器报告了计算机检查异常,否则未发生计算机检查异常。
  • B | _:如果页面释放功能发现错误的页面引用或某些意外的页面标志。
  • U | _:如果用户或用户应用程序特别要求设置Tainted标志。
  • D | _:如果内核最近已死,即存在OOPS或BUG。
  • A | _:如果ACPI表已被覆盖。
  • W | _:如果内核先前已发出警告(尽管某些警告可能会设置更具体的污点标志。)
  • C | _:如果已加载暂存驱动程序。
  • I | _:如果内核正在解决平台固件(BIOS或类似版本)中的严重错误。
  • O | _:如果已加载外部(“树外”)模块。
  • E | _:如果未签名的模块已经加载到支持模块签名的内核中。
  • L | _:如果先前在系统上发生过软锁定。
  • K | _:如果内核已实时修补。

这个问题使这个问题失去了答案。

2
我将添加至少一个“未签名模块”方案的重要可能性-将内核rootkit加载到内核中或刚刚执行内核利用程序。
kravietz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.