查看系统日志 (dmesg) 时,我得到了以下几条信息:
<module name>: module has bad taint, not creating trace events
这是什么意思 ?
答案1
如果内核函数 trace_module_has_bad_taint() 返回 true,则会出现此警告;即已设置以下任何污点标志:
- TAINT_FORCED_MODULE(模块加载已被强制)
- TAINT_CPU_OUT_OF_SPEC(CPU 的行为方式可能会导致跟踪问题?)
- TAINT_FORCED_RMMOD(模块已被强制删除)
- TAINT_MACHINE_CHECK(机器检查异常,可能导致锁定依赖不可靠)
- TAINT_BAD_PAGE(检测到内存坏页)
- TAINT_USER(用户空间一直在摆弄系统,这可能会导致内核问题)
- TAINT_DIE(内核处于死亡 oops 阶段)
- TAINT_OVERRIDDEN_ACPI_TABLE(用户已覆盖默认 ACPI 表)
- TAINT_WARN(检测到调度程序错误)
- TAINT_FIRMWARE_WORKAROUND(BIOS 固件有一个解决方法来使其正常工作)
- TAINT_SOFTLOCKUP(看门狗定时器检测到软锁定)
- TAINT_LIVEPATCH(内核已实时修补)
当加载内核模块并且内核跟踪点驱动程序收到此通知并检测到上述污染原因之一并跳过跟踪指向以尝试避免内核崩溃时,会出现警告。
仅被污染为暂存驱动程序、树外驱动程序和未签名的 GPL 模块的模块是允许的,所有其他污染都是不允许的。