我在系统日志中发现了这个:
[ 14.845195] **********************************************************
[ 14.845196] ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **
[ 14.845196] ** **
[ 14.845196] ** trace_printk() being used. Allocating extra memory. **
[ 14.845197] ** **
[ 14.845197] ** This means that this is a DEBUG kernel and it is **
[ 14.845197] ** unsafe for production use. **
[ 14.845197] ** **
[ 14.845198] ** If you see this message and you are not debugging **
[ 14.845198] ** the kernel, report this immediately to your vendor! **
[ 14.845198] ** **
[ 14.845198] ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **
[ 14.845199] **********************************************************
它被标记为“对生产不安全”。
但我从 LTS 存储库获得了内核:
$ uname -a
Linux ubuntupc 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
它来自linux-image-4.15.0-66-generic (4.15.0-66.75)
为什么调试内核最终会出现在 Ubuntu 的存储库中?
操作系统:Ubuntu 18.04.3 LTS
视频驱动程序:nvidia-driver-440
因此,trace_printk()不在内核本身中,而是在(专有)模块中。
在我的例子中,sep5.ko模块负责这个内核通知,这个模块是英特尔 VTune 放大器套件的一部分。
vtune 软件已经嵌套在
/etc/rc0.d/K01sep5
其中,/etc/rc0.d/K01sep4_1
并且在删除它们之后,内核通知消失了。