~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst (Architecture i386) and /Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst (Architecture m68k)


  1 .. include:: ../disclaimer-zh_CN.rst                1 .. include:: ../disclaimer-zh_CN.rst
  2                                                     2 
  3 :Original: :doc:`../../../admin-guide/tainted-      3 :Original: :doc:`../../../admin-guide/tainted-kernels`
  4                                                     4 
  5 :译者:                                            5 :译者:
  6                                                     6 
  7  吴想成 Wu XiangCheng <bobwxc@email.cn>           7  吴想成 Wu XiangCheng <bobwxc@email.cn>
  8                                                     8 
  9 受污染的内核                                  9 受污染的内核
 10 -------------                                      10 -------------
 11                                                    11 
 12 当发生一些在稍后调查问题时可能     12 当发生一些在稍后调查问题时可能相关的事件时,内核会将自己标记为“受污染
 13 (tainted)”的。不用太过担心,大     13 (tainted)”的。不用太过担心,大多数情况下运行受污染的内核没有问题;这些信息
 14 主要在有人想调查某个问题时才有     14 主要在有人想调查某个问题时才有意义的,因为问题的真正原因可能是导致内核受污染
 15 的事件。这就是为什么来自受污染     15 的事件。这就是为什么来自受污染内核的缺陷报告常常被开发人员忽略,因此请尝试用
 16 未受污染的内核重现问题。               16 未受污染的内核重现问题。
 17                                                    17 
 18 请注意,即使在您消除导致污染的     18 请注意,即使在您消除导致污染的原因(亦即卸载专有内核模块)之后,内核仍将保持
 19 污染状态,以表示内核仍然不可信     19 污染状态,以表示内核仍然不可信。这也是为什么内核在注意到内部问题(“kernel
 20 bug”)、可恢复错误(“kernel oops     20 bug”)、可恢复错误(“kernel oops”)或不可恢复错误(“kernel panic”)时会打印
 21 受污染状态,并将有关此的调试信     21 受污染状态,并将有关此的调试信息写入日志 ``dmesg`` 输出。也可以通过
 22 ``/proc/`` 中的文件在运行时检查受     22 ``/proc/`` 中的文件在运行时检查受污染的状态。
 23                                                    23 
 24                                                    24 
 25 BUG、Oops或Panics消息中的污染标志        25 BUG、Oops或Panics消息中的污染标志
 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 27                                                    27 
 28 在顶部以“CPU:”开头的一行中可以     28 在顶部以“CPU:”开头的一行中可以找到受污染的状态;内核是否受到污染和原因会显示
 29 在进程ID(“PID:”)和触发事件命     29 在进程ID(“PID:”)和触发事件命令的缩写名称(“Comm:”)之后::
 30                                                    30 
 31         BUG: unable to handle kernel NULL poin     31         BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
 32         Oops: 0002 [#1] SMP PTI                    32         Oops: 0002 [#1] SMP PTI
 33         CPU: 0 PID: 4424 Comm: insmod Tainted:     33         CPU: 0 PID: 4424 Comm: insmod Tainted: P        W  O      4.20.0-0.rc6.fc30 #1
 34         Hardware name: Red Hat KVM, BIOS 0.5.1     34         Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
 35         RIP: 0010:my_oops_init+0x13/0x1000 [kp     35         RIP: 0010:my_oops_init+0x13/0x1000 [kpanic]
 36         [...]                                      36         [...]
 37                                                    37 
 38 如果内核在事件发生时没有被污染     38 如果内核在事件发生时没有被污染,您将在那里看到“Not-tainted:”;如果被污染,那
 39 么它将是“Tainted:”以及字母或空     39 么它将是“Tainted:”以及字母或空格。在上面的例子中,它看起来是这样的::
 40                                                    40 
 41         Tainted: P        W  O                     41         Tainted: P        W  O
 42                                                    42 
 43 下表解释了这些字符的含义。在本     43 下表解释了这些字符的含义。在本例中,由于加载了专有模块( ``P`` ),出现了
 44 警告( ``W`` ),并且加载了外部构     44 警告( ``W`` ),并且加载了外部构建的模块( ``O`` ),所以内核早些时候受到
 45 了污染。要解码其他字符,请使用     45 了污染。要解码其他字符,请使用下表。
 46                                                    46 
 47                                                    47 
 48 解码运行时的污染状态                     48 解码运行时的污染状态
 49 ~~~~~~~~~~~~~~~~~~~~~                              49 ~~~~~~~~~~~~~~~~~~~~~
 50                                                    50 
 51 在运行时,您可以通过读取 ``cat /pr     51 在运行时,您可以通过读取 ``cat /proc/sys/kernel/tainted`` 来查询受污染状态。
 52 如果返回 ``0`` ,则内核没有受到污     52 如果返回 ``0`` ,则内核没有受到污染;任何其他数字都表示受到污染的原因。解码
 53 这个数字的最简单方法是使用脚本      53 这个数字的最简单方法是使用脚本  ``tools/debugging/kernel-chktaint`` ,您的
 54 发行版可能会将其作为名为 ``linux-t     54 发行版可能会将其作为名为 ``linux-tools`` 或 ``kernel-tools`` 的包的一部分提
 55 供;如果没有,您可以从                  55 供;如果没有,您可以从
 56 `git.kernel.org <https://git.kernel.org/pub/sc     56 `git.kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint>`_
 57 网站下载此脚本并用 ``sh kernel-chktai     57 网站下载此脚本并用 ``sh kernel-chktaint`` 执行,它会在上面引用的日志中有类似
 58 语句的机器上打印这样的内容::          58 语句的机器上打印这样的内容::
 59                                                    59 
 60         Kernel is Tainted for following reason     60         Kernel is Tainted for following reasons:
 61          * Proprietary module was loaded (#0)      61          * Proprietary module was loaded (#0)
 62          * Kernel issued warning (#9)              62          * Kernel issued warning (#9)
 63          * Externally-built ('out-of-tree') mo     63          * Externally-built ('out-of-tree') module was loaded  (#12)
 64         See Documentation/admin-guide/tainted-     64         See Documentation/admin-guide/tainted-kernels.rst in the Linux kernel or
 65          https://www.kernel.org/doc/html/lates     65          https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html for
 66          a more details explanation of the var     66          a more details explanation of the various taint flags.
 67         Raw taint value as int/string: 4609/'P     67         Raw taint value as int/string: 4609/'P        W  O     '
 68                                                    68 
 69 你也可以试着自己解码这个数字。     69 你也可以试着自己解码这个数字。如果内核被污染的原因只有一个,那么这很简单,
 70 在本例中您可以通过下表找到数字     70 在本例中您可以通过下表找到数字。如果你需要解码有多个原因的数字,因为它是一
 71 个位域(bitfield),其中每个位表     71 个位域(bitfield),其中每个位表示一个特定类型的污染的存在或不存在,最好让
 72 前面提到的脚本来处理。但是如果     72 前面提到的脚本来处理。但是如果您需要快速看一下,可以使用这个shell命令来检查
 73 设置了哪些位::                               73 设置了哪些位::
 74                                                    74 
 75         $ for i in $(seq 18); do echo $(($i-1)     75         $ for i in $(seq 18); do echo $(($i-1)) $(($(cat /proc/sys/kernel/tainted)>>($i-1)&1));done
 76                                                    76 
 77 污染状态代码表                              77 污染状态代码表
 78 ~~~~~~~~~~~~~~~                                    78 ~~~~~~~~~~~~~~~
 79                                                    79 
 80 ===  =====  ======  ==========================     80 ===  =====  ======  ========================================================
 81  位  日志     数字  内核被污染的原     81  位  日志     数字  内核被污染的原因
 82 ===  =====  ======  ==========================     82 ===  =====  ======  ========================================================
 83   0   G/P        1  已加载专用模块          83   0   G/P        1  已加载专用模块
 84   1   _/F        2  模块被强制加载          84   1   _/F        2  模块被强制加载
 85   2   _/S        4  内核运行在不合规     85   2   _/S        4  内核运行在不合规范的系统上
 86   3   _/R        8  模块被强制卸载          86   3   _/R        8  模块被强制卸载
 87   4   _/M       16  处理器报告了机器     87   4   _/M       16  处理器报告了机器检测异常(MCE)
 88   5   _/B       32  引用了错误的页或     88   5   _/B       32  引用了错误的页或某些意外的页标志
 89   6   _/U       64  用户空间应用程序     89   6   _/U       64  用户空间应用程序请求的污染
 90   7   _/D      128  内核最近死机了,     90   7   _/D      128  内核最近死机了,即曾出现OOPS或BUG
 91   8   _/A      256  ACPI表被用户覆盖         91   8   _/A      256  ACPI表被用户覆盖
 92   9   _/W      512  内核发出警告             92   9   _/W      512  内核发出警告
 93  10   _/C     1024  已加载staging驱动程     93  10   _/C     1024  已加载staging驱动程序
 94  11   _/I     2048  已应用平台固件缺     94  11   _/I     2048  已应用平台固件缺陷的解决方案
 95  12   _/O     4096  已加载外部构建(     95  12   _/O     4096  已加载外部构建(“树外”)模块
 96  13   _/E     8192  已加载未签名的模     96  13   _/E     8192  已加载未签名的模块
 97  14   _/L    16384  发生软锁定                97  14   _/L    16384  发生软锁定
 98  15   _/K    32768  内核已实时打补丁       98  15   _/K    32768  内核已实时打补丁
 99  16   _/X    65536  备用污染,为发行     99  16   _/X    65536  备用污染,为发行版定义并使用
100  17   _/T   131072  内核是用结构随机    100  17   _/T   131072  内核是用结构随机化插件构建的
101 ===  =====  ======  ==========================    101 ===  =====  ======  ========================================================
102                                                   102 
103 注:字符 ``_`` 表示空白,以便于阅    103 注:字符 ``_`` 表示空白,以便于阅读表。
104                                                   104 
105 污染的更详细解释                          105 污染的更详细解释
106 ~~~~~~~~~~~~~~~~~                                 106 ~~~~~~~~~~~~~~~~~
107                                                   107 
108  0)  ``G`` 加载的所有模块都有GPL或    108  0)  ``G`` 加载的所有模块都有GPL或兼容许可证, ``P`` 加载了任何专有模块。
109      没有MODULE_LICENSE(模块许可证)    109      没有MODULE_LICENSE(模块许可证)或MODULE_LICENSE未被insmod认可为GPL
110      兼容的模块被认为是专有的。      110      兼容的模块被认为是专有的。
111                                                   111 
112                                                   112 
113  1)  ``F`` 任何模块被 ``insmod -f`` 强    113  1)  ``F`` 任何模块被 ``insmod -f`` 强制加载, ``' '`` 所有模块正常加载。
114                                                   114 
115  2)  ``S`` 内核运行在不合规范的处    115  2)  ``S`` 内核运行在不合规范的处理器或系统上:硬件已运行在不受支持的配置中,
116      因此无法保证正确执行。内核    116      因此无法保证正确执行。内核将被污染,例如:
117                                                   117 
118      - 在x86上:PAE是通过intel CPU(如    118      - 在x86上:PAE是通过intel CPU(如Pentium M)上的forcepae强制执行的,这些
119        CPU不报告PAE,但可能有功能实    119        CPU不报告PAE,但可能有功能实现,SMP内核在非官方支持的SMP Athlon CPU上
120        运行,MSR被暴露到用户空间中    120        运行,MSR被暴露到用户空间中。
121      - 在arm上:在某些CPU(如Keystone     121      - 在arm上:在某些CPU(如Keystone 2)上运行的内核,没有启用某些内核特性。
122      - 在arm64上:CPU之间存在不匹配    122      - 在arm64上:CPU之间存在不匹配的硬件特性,引导加载程序以不同的模式引导CPU。
123      - 某些驱动程序正在被用在不受    123      - 某些驱动程序正在被用在不受支持的体系结构上(例如x86_64以外的其他系统
124        上的scsi/snic,非x86/x86_64/itanium    124        上的scsi/snic,非x86/x86_64/itanium上的scsi/ips,已经损坏了arm64上
125        irqchip/irq-gic的固件设置…)。    125        irqchip/irq-gic的固件设置…)。
126                                                   126 
127  3)  ``R`` 模块被 ``rmmod -f`` 强制卸载    127  3)  ``R`` 模块被 ``rmmod -f`` 强制卸载, ``' '`` 所有模块都正常卸载。
128                                                   128 
129  4)  ``M`` 任何处理器报告了机器检    129  4)  ``M`` 任何处理器报告了机器检测异常, ``' '`` 未发生机器检测异常。
130                                                   130 
131  5)  ``B`` 页面释放函数发现错误的    131  5)  ``B`` 页面释放函数发现错误的页面引用或某些意外的页面标志。这表示硬件问题
132      或内核错误;日志中应该有其    132      或内核错误;日志中应该有其他信息指示发生此污染的原因。
133                                                   133 
134  6)  ``U`` 用户或用户应用程序特意    134  6)  ``U`` 用户或用户应用程序特意请求设置受污染标志,否则应为 ``' '`` 。
135                                                   135 
136  7)  ``D`` 内核最近死机了,即出现    136  7)  ``D`` 内核最近死机了,即出现了OOPS或BUG。
137                                                   137 
138  8)  ``A`` ACPI表被重写。                    138  8)  ``A`` ACPI表被重写。
139                                                   139 
140  9)  ``W`` 内核之前已发出过警告(    140  9)  ``W`` 内核之前已发出过警告(尽管有些警告可能会设置更具体的污染标志)。
141                                                   141 
142  10) ``C`` 已加载staging驱动程序。        142  10) ``C`` 已加载staging驱动程序。
143                                                   143 
144  11) ``I`` 内核正在处理平台固件(BI    144  11) ``I`` 内核正在处理平台固件(BIOS或类似软件)中的严重错误。
145                                                   145 
146  12) ``O`` 已加载外部构建(“树外    146  12) ``O`` 已加载外部构建(“树外”)模块。
147                                                   147 
148  13) ``E`` 在支持模块签名的内核中    148  13) ``E`` 在支持模块签名的内核中加载了未签名的模块。
149                                                   149 
150  14) ``L`` 系统上先前发生过软锁定    150  14) ``L`` 系统上先前发生过软锁定。
151                                                   151 
152  15) ``K`` 内核已经实时打了补丁。      152  15) ``K`` 内核已经实时打了补丁。
153                                                   153 
154  16) ``X`` 备用污染,由Linux发行版定    154  16) ``X`` 备用污染,由Linux发行版定义和使用。
155                                                   155 
156  17) ``T`` 内核构建时使用了randstruct    156  17) ``T`` 内核构建时使用了randstruct插件,它可以有意生成非常不寻常的内核结构
157      布局(甚至是性能病态的布局    157      布局(甚至是性能病态的布局),这在调试时非常有用。于构建时设置。
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php