如何在 Linux 内核中启用 CONFIG_PREEMPT 选项?

Posted

技术标签:

【中文标题】如何在 Linux 内核中启用 CONFIG_PREEMPT 选项?【英文标题】:How to enable CONFIG_PREEMPT option in Linux kernel? 【发布时间】:2013-05-24 17:43:41 【问题描述】:

我是 Linux 内核编程的新手,正在尝试在 x86_64 上使用旧内核 Linux 2.6.32。我想在其中启用 CONFIG_PREEMPT 选项,但找不到有关如何执行此操作的信息。我可以用我喜欢的选项编译一个新内核,但不知道在这种情况下我需要做什么。有谁能告诉我

如何启用 CONFIG_PREEMPT 选项?我需要用新的 menuconfig 重新编译内核吗?在那种情况下,哪个选项负责 CONFIG_PREEMPT?

我认为对于以前使用此功能的任何人来说都是微不足道的,所以请给我您宝贵的帮助!

【问题讨论】:

您真的找不到有关如何执行此操作的信息anywhere? 【参考方案1】:

您可以使用make menuconfig 为内核启用CONFIG_PREEMPT;只需从菜单选项中选择它。要验证它是否已启用,请检查 make menuconfig 生成的 .config 文件中的以下行:

CONFIG_PREEMPT=y

如果您愿意,也可以手动进行修改(make menuconfig 只是一个用于创建.config 文件的 GUI)。

一切都配置好后,用通常的方式重新编译内核:

make && make modules_install && make install

【讨论】:

@TJ974 如果您发现 Vilhelm 的回答有用并且解决了您的问题,请考虑接受他的回答 :) @TJ974 如果您在这个问题上需要任何进一步的帮助,请告诉我。如果答案令人满意,请单击投票计数下方答案左侧的复选标记(文本左侧的大数字)“接受”答案。 要查找该 CONFIG_PREEMPT 选项的下落,请在 make menuconfig 中键入 /(斜杠)并搜索 PREEMPT。【参考方案2】:

如果要添加完全优化的内核,需要添加补丁,可以到主网下载here 如果您不知道如何添加补丁,请通过this 线程。

【讨论】:

但是,如果你选择相同版本的补丁更好。【参考方案3】:

通常可以安装相应的包,比如Debian上的linux-image-4.19.0-12-rt-amd64-unsigned

apt install linux-image-4.19.0-12-rt-amd64-unsigned
grep PREEMPT /boot/config-4.19.0-12-rt-amd64
sync && reboot

grep PREEMPT /proc/version
Linux version 4.19.0-12-rt-amd64 (debian-kernel@lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP PREEMPT RT Debian 4.19.152-1 (2020-10-18)

【讨论】:

以上是关于如何在 Linux 内核中启用 CONFIG_PREEMPT 选项?的主要内容,如果未能解决你的问题,请参考以下文章

启用 linux 内核驱动程序 dev_dbg 调试消息

如何为Usb网络上的81ry52芯片启用Linux内核驱动程序

如何判断当前LINUX系统启用了ASLR

截至 2021 年 5.4+ 主线 Linux 内核中的 bpfilter 状态

如何在 WinDBg 中启用内核跟踪

为Deepin Linux启用蓝牙支持