任何 Linux 安装的核心都是内核。您将遇到的大多数发行版都在此基础上添加了独特的特性和功能,但内核是所有自称为 Linux 的发行版中通用的统一软件。与商业操作系统不同的是,内核既是高度可配置的,又可以由任何用户完全定制。 为什么要修改内核配置?虽然您的发行版提供的库存内核是一个合理的选择,但有一些独特的补丁集可以从根本上改变内核的行为方式,并且在某些情况下,可能会调整您的系统,使其对您的特定用例更加有效。 让我们来看看专门的 Linux 内核的前景吧! 内核基础:上游 网站是内核团队定期发布的主线 Linux 内核的最终真实来源。如果您查看登录页面,您可能会看到列出了各种不同的内核版本: kernel.org 如果您是 Linux 用户,那么在您实际 Linux 的整个过程中,您可能从未真正看过此页面。是什么赋予了? 使用 像 这样的发行版通常会选择一个已知可靠和稳定的内核版本,应用任何必要的 以便按照他们认为合适的方式对其进行自定义,然后将编译后的内核提供给所有用户,以便实际的编译过程(即可能需要一段时间!)发生在它们的末端而不是您的桌面上。这意味着例如 Ubuntu 22.04 的两个最新用户可能使用相同的内核构建,这简化了支持各种不同安装的各种用户。它还允许开发 Ubuntu 的工程师专注于提供经过充分测试并满足大多数用户需求的单一内核构建。 Ubuntu 补丁集 但是,如果您要比较两个 的最新 Linux 发行版上正在运行的内核,它们的版本几乎肯定会有所不同。虽然内核在稳定性方面享有盛誉,但一些发行版选择谨慎选择何时跳转到较新的内核。这通常是一个好主意 - 两个内核版本(如 5.18.16 和 5.10.135)之间的数字似乎很大,但内核开发人员在添加和删除功能方面很保守,因此它们之间通常没有太大的实际差异。如果一个 Linux 发行版在最新内核之后保留了几个版本,那么为了获得更可预测的版本而这样做通常是值得的。 不同 但是,虽然 内核不会在版本之间进行大规模飞跃,但不同的 开发人员维护着可以从根本上改变内核行为方式的更改集合。其中一些包括: 默认 下游 CPU 调度程序更改。这是内核的核心功能之一,它决定了如何选择机器上的不同进程在处理器上执行。 I/O 调度程序更改。内核支持不同的调度程序方法,例如 或 ,这会对磁盘操作的性能产生重大影响,特别是对于旋转磁盘,其中主轴和读磁头的物理现实会影响数据的访问速度。 deadline cfq 安全。一些补丁集进行了重大更改,以尝试 Linux 内核以抵御潜在的漏洞利用向量。 强化 运行 Linux 的美妙之处在于,所有这些不同的选项都对您完全开放!让我们来看看其中的几个。 美味,默认香草 默认的 Linux 内核没有任何华丽的定制,但仍有相当多的设置仍在用户的控制之下,无需重新编译内核或更改源代码。 例如,前面提到的 I/O 调度程序指示内核如何优先处理挂起的操作以读取或写入持久存储。由于各种原因,这是一个重要的设置。内核是否会先推送您尝试保存到磁盘的文档以改善桌面延迟,还是应该将系统日志刷新到磁盘以确保其在发生崩溃时可用?这类 I/O 调度器决策会考虑大量变量,例如在内核上等待的时间、请求的紧迫性等等。 与几乎所有低级 Linux 设置一样,您可以通过使用文件系统路径直接检查系统正在使用的 I/O 调度程序。使用 虚拟文件系统在每个设备的基础上控制此信息。在我的系统上,我可以通过将我感兴趣的设备 插入 中的路径来找到它: sys sda /sys $ cat /sys/block/sda/queue/scheduler [mq-deadline] kyber none 这表明我的 驱动器正在使用 调度程序和其他方法, 和 ,可使用但此时未主动选择。 调度器被描述为“ ”,这对我来说听起来不错! sda mq-deadline kyber none mq-deadline [a] 一个具有相当低 CPU 开销的优秀多面手 您还可以使用类似的简单界面 其中的许多设置。 很好地解释了这一点。简而言之,只需将所需的调度程序名称发送到与以前相同的路径就足够了。以下命令将更改此特定设备的调度程序以使用 调度程序。请注意,更改这些类型的设置需要 访问权限。 更改 Linux Kernel 文档 kyber root $ echo kyber > /sys/block/sda/queue/scheduler 每设备调度程序只是运行内核上可用的运行时可调设置之一。查看这些其他设置以获取其他选项: 交换性 网络核心 长期支持内核:老歌,但好歌 如果新的、花哨的功能看起来很棒,但您主要关心的是支持和稳定性怎么办? 长期支持内核或 是 Linux 内核的一个版本,专门针对比典型内核更长的时间段提供支持而进行了优化。对于有利于可预测、稳定升级的系统,使用带有 后缀的内核包通常是一个非常好的选择。虽然没有应用特殊补丁,但使用 5.15 之类的内核意味着支持保证到 2023 年 10 月,而不是更早。如果您在 2016 年 12 月发布内核 4.9 时采用了它,那么它将一直支持到 2023 年 1 月——这很长一段时间内不必担心重大更改! LTS -lts 长期支持内核可能是主线版本之外最广泛可用的内核变体。一些发行版(如 Ubuntu LTS)默认附带长期支持内核,但大多数其他发行版通过安装和启用名称类似于 的包来提供使用 LTS 内核的选项。您选择的发行版可能有说明如何安装和使用不同内核的指南,因此要试用坚如磐石的 LTS 内核,请查找以 结尾的内核包,并按照您选择的发行版的说明使用备用内核包。 linux-lts -lts 强化内核:对于有安全意识的人 在信息安全中, 是指加强特定领域以减轻潜在攻击和漏洞的过程。主流 Linux 内核显然试图尽可能合理地实现这种程度的安全性,但一些用户可能会选择限制他们的内核及其功能,以便用它们来换取更高的安全性。 提供了这一点。 强化 强化的 Linux 内核 通常,强化的 Linux 内核的行为与典型内核非常相似,尽管存在折衷。例如,某些应用程序可能根本无法在强化内核上运行,并且许多预编译的内核模块可能需要使用其 等效项才能与强化内核正确集成。然而,对于安全性优先的任务关键型应用程序,强化内核通常是正确的选择。 DKMS 代表“动态内核模块支持”,是一项允许用户使用对所需内核没有预编译支持的内核模块的源代码的功能。例如,必须将 项目安装为内核模块,才能在 Linux 上使用 ZFS 文件系统。许多发行版提供了一个包,用于安装预编译模块以供使用,这避免了冗长的编译时间和潜在的不兼容性,但在使用自定义内核时可能无法正常运行。另一方面,OpenZFS DKMS 模块可以针对您选择的内核即时编译自身,以确保其按预期运行。 DKMS OpenZFS on Linux 以禅悟道 是更广泛支持的基于社区的补丁集之一。虽然与上游 Linux 内核并没有太大的不同,但 zen(或 Liquorix)内核进行了更改以提高性能。来自 Liquorix 网站: zen 内核 Liquorix 是使用桌面、多媒体和游戏工作负载的最佳配置和内核源构建的发行版内核替代品。 例如,一项更改是更改上述 I/O 调度程序以默认选择 算法,该算法可优化系统响应能力。另一组更改压缩交换存储并使用替代缓存算法在高内存负载下表现良好。 bfq 作为更完善的补丁集之一,您选择的发行版中可能已经有一个可供使用的 软件包 - 但是,如果您需要其他选项, 还提供了解释如何使用此内核的教程。 linux-zen 项目文档 使用游戏内核推动 FPS 内核是一组专门用于优化游戏性能的补丁。从显卡中提取尽可能多的 FPS 可能是一项艰苦的工作,但 tkg 补丁集的更改可以通过对 Linux 内核关键部分的集中更改来提供额外的收益。 linux-tkg 例如,添加了额外的 CPU 调度程序,如 调度程序或 补丁集。默认情况下启用像 这样的网络算法,以及像 这样的优化编译标志,以尽可能多地从编译代码中挤出性能。 Project C -ck Cake -O2 补丁集不如 LTS 或 Zen 内核普遍存在,但 提供了详细说明如何编译和安装自定义内核的全面指南。 -tkg GitHub 上的安装步骤 补丁集提供了一组类似的功能,针对需要适合游戏等用例的低延迟、高性能内核的用户。在任何一种情况下,tkg 和 XanMod 内核都提供了一种非常专业的 Linux 内核形式,它仍然可以作为日常操作系统运行,并为游戏机带来额外的好处。 XanMod 实时内核 术语“实时计算”是指旨在保证某些操作在给定时间窗口运行的系统概念。例如,控制汽车刹车或飞机机翼的系统不能被大量待处理的写入磁盘或在屏幕上绘制图像而中断。 项目提供了一组提供此功能的补丁。虽然这些功能通常非常专业,通常不适合桌面或服务器应用程序,但它们在适当的情况下仍然至关重要。对于在特定行业有应用的项目,这些实时补丁是必不可少的。 Real Time Linux 内核套件具有更多的目标受众,但通常比针对游戏或低延迟优化的内核更广泛,因为它们在使用中很重要。您的发行版的包管理器可能会以 或 等名称提供这些类型的内核。 -rt linux-rt linux-rt-lts 混合内核 我们探索了许多更专业的内核,但我们会整天在这里!话虽如此,还有更多方法可以使用我们已经讨论过的不同类型来定制内核。 许多这些补丁的一个有趣特征是它们经常 成内核,将它们的特性融合到一个内核源代码树中。例如,操作加工基础设施的关键部分可能需要 内核的实时功能,但也受益于强化内核的额外安全性。只要不同的补丁可以干净地应用在一起,没有什么能阻止您混合和匹配为您的确切需求量身定制的内核。 组合 -rt 一些发行版只是通过将补丁集组合到内核的包名称中来提供这一点。例如,Arch Linux User 存储库提供了 包,它结合了实时和长期支持内核特性。 Ubuntu 提供了诸如 类的软件包,专门进行了各种更改,以优化内核以在 AWS EC2 中运行。 linux-rt-lts linux-image-*-aws 无论您选择哪种发行版,如果您对运行自定义内核感兴趣,请务必探索您的发行版的软件包以获取可用内核。它们提供了最简单、最快捷的方式来开始使用特定版本的 Linux 内核。 去吧,修补匠! 本文只触及了 Linux 内核领域的皮毛。虽然其中许多内核很普遍,并且在大多数分发存储库中都很常见,但存在一些更深奥的补丁集,它们将内核推得更远。使用开源内核,您甚至可以自己修改内核以根据自己的需要编译一个自定义,但这是另一次的指南。 在此之前,请查看其中一些资源以获取更多信息,并找到您想亲自尝试的内核! ArchWiki - 内核 Canonical 的 Ubuntu 内核 Linux 内核档案