In addition, you can decode the output of
cat /proc/sys/kernel/tainted
and find out why your kernel is tainted.
There is two ways to decode the numbers, A and B:
A
- run
for i in $(seq 18); do echo $(($i-1)) $(($(cat /proc/sys/kernel/tainted)>>($i-1)&1));done
Sample output of above command
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 1
12 1
13 1
14 0
15 0
16 0
17 0
- look up the reasons for each bit that set to
1
in the table given in Tainted kernels — The Linux Kernel documentation
B
- use
sh
to run the script provided in https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
Output of sh ~/bin/kernel-chktaint
on my system looks like this:
Kernel is "tainted" for the following reasons:
* workaround for bug in platform firmware applied (#11)
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
Raw taint value as int/string: 14336/'G IOE '
In your case:
G means: G if all modules loaded have a GPL or compatible license
W means: W if a warning has previously been issued by the kernel. (Though some warnings may set more specific taint flags.)
You can use dmesg
or journalctl -k
to find out more about the warnings, but it’s also common to ignore warnings (they are not errors).