我想检查我的 Linux 内核是抢占式的还是非抢占式的。如何使用诸如 之类的命令来检查这一点uname -a
?
答案1
内核是否是抢占式的取决于您想要抢占的内容,就像在 Linux 内核中一样,有多种东西可以单独启用/禁用抢占。
如果您的内核已启用CONFIG_IKCONFIG
并CONFIG_IKCONFIG_PROC
启用,您可以通过以下方式找到您的抢占配置/proc/config.gz
(如果没有,某些发行版会提供内核配置/boot
):
$ gzip -cd /proc/config.gz | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPT_TRACER is not set
如果有CONFIG_IKCONFIG
,但没有CONFIG_IKCONFIG_PROC
,您仍然可以使用以下命令从内核映像中获取它:extract-ikconfig
。
答案2
可抢占式内核(低延迟桌面)已PREEMPT
在其版本名称 ( uname -a
) 中标记。这也出现在/proc/version
“version magic”字符串中,用于决定模块是否可以/不能加载到给定内核上,例如
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
据我所知,不存在这样的标签CONFIG_PREEMPT_VOLUNTARY
。
答案3
接受的答案提到一些发行版以/boot
.在 Ubuntu 20.04 和至少一些其他系统上,您可以通过查看/boot/config-$(uname -r)
.例如:
$ grep PREEMPT_RT /boot/config-$(uname -r)
CONFIG_PREEMPT_RT=y
这不会为您提供比uname -a
PypeBros 建议的更多信息,但如果您想检查其他设置,如果您打开文件并浏览它,这将为您提供更多信息。