【问题标题】:What does "kernel tainted" mean?“内核污染”是什么意思?
【发布时间】:2018-08-23 19:47:56
【问题描述】:

我的操作系统是 Fedora 17。最近,出现内核污染警告“kernel bug at kernel/auditsc.c:1772!-abrt”: 不应报告此问题(可能是已知问题)。发生内核问题,但您的内核已被污染(标志:GD)。内核维护人员无法诊断受污染的报告。

然后,我得到以下信息:

# cat /proc/sys/kernel/tainted
128

# dmesg | grep -i taint
[ 8306.955523] Pid: 4511, comm: chrome Tainted: G      D      3.9.10-100.fc17.i686.PAE #1 Dell Inc. 
[ 8307.366310] Pid: 4571, comm: chrome Tainted: G      D      3.9.10-100.fc17.i686.PAE #1 Dell Inc. 

看来“128”这个值严重多了: 128 – 系统已死。

这个警告怎么样?由于 chrome 被标记为“污染”源,有人也遇到这个问题吗?

【问题讨论】:

    标签: linux-kernel


    【解决方案1】:

    为了(过度)简化,“受污染”意味着内核处于不同于从开源源重新构建并以预期方式使用时的状态。这是一种标记内核的方法,以警告人们(例如,开发人员)可能有未知的原因导致它不可靠,并且调试它可能很困难或不可能。

    在这种情况下,“GD”意味着所有模块都被许可为 GPL 或兼容(即非专有),并且发生了崩溃或 BUG()。

    原因如下:

    见:oops-tracing.txt

    ---------------------------------------------------------------------------
    Tainted kernels:
    
    Some oops reports contain the string 'Tainted: ' after the program
    counter. This indicates that the kernel has been tainted by some
    mechanism.  The string is followed by a series of position-sensitive
    characters, each representing a particular tainted value.
    
      1: 'G' if all modules loaded have a GPL or compatible license, 'P' if
         any proprietary module has been loaded.  Modules without a
         MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by
         insmod as GPL compatible are assumed to be proprietary.
    
      2: 'F' if any module was force loaded by "insmod -f", ' ' if all
         modules were loaded normally.
    
      3: 'S' if the oops occurred on an SMP kernel running on hardware that
         hasn't been certified as safe to run multiprocessor.
         Currently this occurs only on various Athlons that are not
         SMP capable.
    
      4: 'R' if a module was force unloaded by "rmmod -f", ' ' if all
         modules were unloaded normally.
    
      5: 'M' if any processor has reported a Machine Check Exception,
         ' ' if no Machine Check Exceptions have occurred.
    
      6: 'B' if a page-release function has found a bad page reference or
         some unexpected page flags.
    
      7: 'U' if a user or user application specifically requested that the
         Tainted flag be set, ' ' otherwise.
    
      8: 'D' if the kernel has died recently, i.e. there was an OOPS or BUG.
    
      9: 'A' if the ACPI table has been overridden.
    
     10: 'W' if a warning has previously been issued by the kernel.
         (Though some warnings may set more specific taint flags.)
    
     11: 'C' if a staging driver has been loaded.
    
     12: 'I' if the kernel is working around a severe bug in the platform
         firmware (BIOS or similar).
    
     13: 'O' if an externally-built ("out-of-tree") module has been loaded.
    
     14: 'E' if an unsigned module has been loaded in a kernel supporting
         module signature.
    
     15: 'L' if a soft lockup has previously occurred on the system.
    
     16: 'K' if the kernel has been live patched.
    
    The primary reason for the 'Tainted: ' string is to tell kernel
    debuggers if this is a clean kernel or if anything unusual has
    occurred.  Tainting is permanent: even if an offending module is
    unloaded, the tainted value remains to indicate that the kernel is not
    trustworthy.
    

    【讨论】:

    • 谢谢。我知道“污点”的意思。当系统刚启动时,我尝试“# cat /proc/sys/kernel/tainted”得到“0”,即它不是“tainted”;然后,我启动 chrome 浏览器,“# cat /proc/sys/kernel/tainted”显示“128”。我确信这是由于铬。我想知道是否有人也遇到过这个问题,因为chrome在Linux系统中很流行。
    • 在 4.10 中的文档更改后,指向静止格式文档的新链接是 kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
    【解决方案2】:

    还显示/proc/sys/kernel/tainted 文件内容的编号:

    Non-zero if the kernel has been tainted. Numeric values, which can be
    ORed together. The letters are seen in "Tainted" line of Oops reports.
    
         1 (P):  A module with a non-GPL license has been loaded, this
                 includes modules with no license.
                 Set by modutils >= 2.4.9 and module-init-tools.
         2 (F): A module was force loaded by insmod -f.
                Set by modutils >= 2.4.9 and module-init-tools.
         4 (S): Unsafe SMP processors: SMP with CPUs not designed for SMP.
         8 (R): A module was forcibly unloaded from the system by rmmod -f.
        16 (M): A hardware machine check error occurred on the system.
        32 (B): A bad page was discovered on the system.
        64 (U): The user has asked that the system be marked "tainted". This
                could be because they are running software that directly modifies
                the hardware, or for other reasons.
       128 (D): The system has died.
       256 (A): The ACPI DSDT has been overridden with one supplied by the user
                instead of using the one provided by the hardware.
       512 (W): A kernel warning has occurred.
      1024 (C): A module from drivers/staging was loaded.
      2048 (I): The system is working around a severe firmware bug.
      4096 (O): An out-of-tree module has been loaded.
      8192 (E): An unsigned module has been loaded in a kernel supporting module
                signature.
     16384 (L): A soft lockup has previously occurred on the system.
     32768 (K): The kernel has been live patched.
     65536 (X): Auxiliary taint, defined and used by for distros.
    131072 (T): The kernel was built with the struct randomization plugin.
    

    来源:https://www.kernel.org/doc/Documentation/sysctl/kernel.txt

    信用:https://askubuntu.com/questions/248470/what-does-the-kernel-taint-value-mean

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2012-02-10
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多