Kernel (简体中文)
来自 Wikipedia:
- 内核是计算机操作系统的核心组件,对系统有完全的控制。开机时最先启动,然后负责后续的启动工作。它负责处理其它软件的请求,将这些请求转化为中央处理器的数据处理请求。内核还负责管理内存,管理系统和其它打印机、扬声器等外围设备的通讯,是操作系统最基础的部分。
在Arch Linux中,除了官方内核之外,还有许多各种各样的内核可供选择。这篇文章列出了这些内核和它们的简短介绍。这里还列出了一些可用的内核补丁的介绍。在文章的最后介绍了自行编译内核的方法。
内核包安装在/boot/
下的文件系统上。为了能够引导到内核,必须适当配置启动加载器。
官方支持的内核
- Stable — 原版的Linux内核以及模块, 使用了一些补丁。
- Hardened — 更加注重安全的 Linux 内核,采用一系列 加固补丁 以减少内核和用户空间产生漏洞的风险。和 linux 相比,还启用了一些加固选项,比如用户命名空间(同时通过补丁禁用未授权用户的访问)、审计以及 SELinux
- Longterm — 包含了长期支持的 Linux 内核和内核模块。
- Zen Kernel — 一些内核黑客合作的结果,提供了适合日常使用的优秀内核。 更多详情请参见 https://liquorix.net (为Debian提供了基于Zen内核的二进制文件).
编译
Arch Linux 提供了多种内核构建方式来编译你自己的内核:
- Arch 构建系统(推荐)
- 可以充分利用已有的 linux PKGBUILD 以及包管理系统。
- 传统方式
- 这个方法需要手动下载内核源代码包,然后在自己的主目录里以普通用户的权限编译。配置完成之后,有两种编译(安装)方式:传统的安装和适用makepkg/pacman 的安装。
警告:
- 使用自定义内核可能会引起各种稳定性和可靠性问题,包括数据丢失。强烈建议操作前进行数据备份。
- Arch Linux仅对#官方支持的内核提供官方支持。当使用非官方支持的内核时,务必在请求支持时提及。
提示:
一些列出的软件包也可以通过Unofficial user repositories获取二进制软件包。
kernel.org kernels
- Git — 使用Linus Torvalds Git存储库中的源代码构建的Linux内核和模块
- Mainline — 内核中引入了所有新功能,每2-3个月发布一次
- Next — 具有待合并到下一个主线版本的功能的前沿内核
- Longterm 4.4 — 长期支持 (LTS) Linux 4.4版本的内核和模块
- Longterm 4.9 — 长期支持 (LTS) Linux 4.9版本的内核和模块
- Longterm 4.14 — 长期支持 (LTS) Linux 4.14版本的内核和模块
- Longterm 4.19 — 长期支持 (LTS) Linux 4.19版本的内核和模块
- Longterm 5.4 — 长期支持 (LTS) Linux 5.4版本的内核和模块
Unofficial kernels
- Aufs — 兼容aufs的linux内核和模块,在使用docker时非常有用.
- Ck — 包含Con Kolivas设计的补丁,旨在提高系统响应能力,尤其是桌面,但它们同时也适用于任何工作负载 .
- Clear — 英特尔Clear Linux项目的补丁,提供性能和安全优化.
- GalliumOS — 带有Chromebook的GalliumOS补丁的Linux内核和模块
- Libre — 没有 propietary 或者 obfuscated 中的设备驱动.
- Liquorix — 使用面向 Debian 的配置和 Zen 内核源代码构建的用于替换的内核。 专为桌面、多媒体和游戏工作负载而设计,它通常用作 Debian Linux 性能替代内核。 Damentz 是 Liquorix 补丁集的维护者,也是 Zen 补丁集的开发者
- MultiPath TCP — 支持多路径 TCP 的 Linux 内核和模块
- pf-kernel — 提供了一些没有合并到内核主线中的很棒的功能。 由内核工程师维护。 如果包含的新内核补丁的端未正式发布,则补丁集提供并支持新内核的补丁端。 当前最突出的 linux-pf 补丁是 PDS CPU 调度程序和 UKSM .
-
https://gitlab.com/post-factum/pf-kernel/wikis/README || Packages:
- Repository by pf-kernel developer post-factum
- Repository, linux-pfAUR, linux-pf-preset-defaultAUR by pf-kernel fork developer Thaodan
- linux-pf-gitAUR by yurikoles
- Realtime kernel — 由Ingo Molnar领导的一小群核心开发人员维护。这个补丁允许几乎所有的内核被抢占,除了少数非常小的代码区域(“原始自旋锁关键区域”)。这是通过将大多数内核自旋锁替换为支持优先级继承的互斥锁,以及将所有中断和软件中断移动到内核线程来实现的
- tkg — 具有特定 PDS 和 Project C / BMQ CPU 调度程序相关补丁集选择器(库存 CFS 也是一个选项)的自定义 Linux 内核,并添加了一些调整以实现良好的交互性/性能平衡,旨在获得最佳游戏体验。 维护者是 Etienne Juvigny (Tk-Glitch).
- https://github.com/Frogging-Family/linux-tkg || not packaged? search in AUR
- VFIO — Linux内核和Alex Williamson(acs override和i915)编写的一些修补程序,能够在某些机器上使用KVM进行PCI直通.
- XanMod — 旨在充分利用高性能工作站、游戏台式机、媒体中心和其他方面的优势,旨在提供更坚如磐石、响应速度更快、更流畅的桌面体验。此内核使用MUQS调度程序、BFQ I/O调度程序、UKSM实时内存重复数据消除, TCP BBR 拥塞控制、x86_64高级指令集支持和其他默认更改.
调试回退
参考General troubleshooting#Debugging regressions.
尝试 linux-mainlineAUR 以检查问题是否已在上游解决。 置顶评论还提到了一个包含已经构建的内核的存储库,因此可能不需要手动构建它,这可能需要一些时间.
也可以考虑尝试使用 LTS 内核 (linux-lts) 来调试最近没有出现的问题。 旧版本的 LTS 内核可以在 Arch Linux Archive 找到.
如果问题仍然存在, bisect linux-gitAUR 并在 kernel bugzilla 上报告错误. 尝试不带任何补丁的“vanilla”版本以确保它与它们无关是很重要的。 如果补丁导致了问题,请将其报告给补丁的作者.
注意: 将内核一分为二可能需要很多时间,因为它可能需要多次重建.
参见
- O'Reilly - Linux Kernel in a Nutshell (自由开源的电子书,包含内核配置、安装和其他的东西)
- What stable kernel should I use? by Greg Kroah-Hartman
- Linux kernel 文档