Kernel (简体中文)

From ArchWiki
翻译状态:本文是 Kernel翻译。上次翻译日期:2021-7-10。如果英文版本有所更改,则您可以帮助同步翻译。

来自 Wikipedia:

内核是计算机操作系统的核心组件,对系统有完全的控制。开机时最先启动,然后负责后续的启动工作。它负责处理其它软件的请求,将这些请求转化为中央处理器的数据处理请求。内核还负责管理内存,管理系统和其它打印机、扬声器等外围设备的通讯,是操作系统最基础的部分。

Arch Linux中,除了官方内核之外,还有许多各种各样的内核可供选择。这篇文章列出了这些内核和它们的简短介绍。这里还列出了一些可用的内核补丁的介绍。在文章的最后介绍了自行编译内核的方法。

内核包安装/boot/下的文件系统上。为了能够引导到内核,必须适当配置启动加载器

官方支持的内核

官方支持的内核可以获得论坛错误报告方面的社区支持。

  • Stable — 原版的Linux内核以及模块, 使用了一些补丁。
https://www.kernel.org/ || linux
  • Hardened — 更加注重安全的 Linux 内核,采用一系列 加固补丁 以减少内核和用户空间产生漏洞的风险。和 linux 相比,还启用了一些加固选项,比如用户命名空间(同时通过补丁禁用未授权用户的访问)、审计以及 SELinux
https://github.com/anthraxx/linux-hardened || linux-hardened
  • Longterm — 包含了长期支持的 Linux 内核和内核模块。
https://www.kernel.org/ || linux-lts
  • Zen Kernel — 一些内核黑客合作的结果,提供了适合日常使用的优秀内核。 更多详情请参见 https://liquorix.net (为Debian提供了基于Zen内核的二进制文件).
https://github.com/zen-kernel/zen-kernel || linux-zen

编译

Arch Linux 提供了多种内核构建方式来编译你自己的内核:

Arch 构建系统(推荐)
可以充分利用已有的 linux PKGBUILD 以及包管理系统
传统方式
这个方法需要手动下载内核源代码包,然后在自己的主目录里以普通用户的权限编译。配置完成之后,有两种编译(安装)方式:传统的安装和适用makepkg/pacman 的安装。
警告:
  • 使用自定义内核可能会引起各种稳定性和可靠性问题,包括数据丢失。强烈建议操作前进行数据备份。
  • Arch Linux仅对#官方支持的内核提供官方支持。当使用非官方支持的内核时,务必在请求支持时提及。
提示:
  • 提高系统速度的最佳方法是首先根据架构和处理器类型定制内核配置。
  • 您可以通过不包含对你没有用东西来缩小内核的大小(也因此减少构建时间)。例如,支持蓝牙、video4linux、1000Mbit以太网等。
  • Arch Linux提供的预编译内核的软件包的配置文件位于软件包的源文件中(例如:[1]  linux 的编译配置文件)。如果启用了CONFIG_IKCONFIG_PROC的内核选项,当前运行的内核的配置文件可能在文件系统中找到,地址为/proc/config.gz

一些列出的软件包也可以通过Unofficial user repositories获取二进制软件包。

kernel.org kernels

  • Git — 使用Linus Torvalds Git存储库中的源代码构建的Linux内核和模块
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git || linux-gitAUR
  • Mainline — 内核中引入了所有新功能,每2-3个月发布一次
https://www.kernel.org/ || linux-mainlineAUR
  • Next — 具有待合并到下一个主线版本的功能的前沿内核
https://www.kernel.org/doc/man-pages/linux-next.html || linux-next-gitAUR
  • Longterm 4.4 — 长期支持 (LTS) Linux 4.4版本的内核和模块
https://www.kernel.org/ || linux-lts44AUR
  • Longterm 4.9 — 长期支持 (LTS) Linux 4.9版本的内核和模块
https://www.kernel.org/ || linux-lts49AUR
  • Longterm 4.14 — 长期支持 (LTS) Linux 4.14版本的内核和模块
https://www.kernel.org/ || linux-lts414AUR
  • Longterm 4.19 — 长期支持 (LTS) Linux 4.19版本的内核和模块
https://www.kernel.org/ || linux-lts419AUR
  • Longterm 5.4 — 长期支持 (LTS) Linux 5.4版本的内核和模块
https://www.kernel.org/ || linux-lts54AUR

Unofficial kernels

  • Aufs — 兼容aufs的linux内核和模块,在使用docker时非常有用.
http://aufs.sourceforge.net/ || linux-aufsAUR
  • Ck — 包含Con Kolivas设计的补丁,旨在提高系统响应能力,尤其是桌面,但它们同时也适用于任何工作负载 .
http://ck.kolivas.org/ || linux-ckAUR
  • Clear — 英特尔Clear Linux项目的补丁,提供性能和安全优化.
https://github.com/clearlinux-pkgs/linux || linux-clearAUR
  • GalliumOS — 带有Chromebook的GalliumOS补丁的Linux内核和模块
https://github.com/GalliumOS/linux || linux-galliumosAUR
https://www.fsfla.org/ikiwiki/selibre/linux-libre/ || linux-libreAUR
  • Liquorix — 使用面向 Debian 的配置和 Zen 内核源代码构建的用于替换的内核。 专为桌面、多媒体和游戏工作负载而设计,它通常用作 Debian Linux 性能替代内核。 Damentz 是 Liquorix 补丁集的维护者,也是 Zen 补丁集的开发者
https://liquorix.net || linux-lqxAUR
  • MultiPath TCP — 支持多路径 TCP 的 Linux 内核和模块
https://multipath-tcp.org/ || linux-mptcpAUR
  • pf-kernel — 提供了一些没有合并到内核主线中的很棒的功能。 由内核工程师维护。 如果包含的新内核补丁的端未正式发布,则补丁集提供并支持新内核的补丁端。 当前最突出的 linux-pf 补丁是 PDS CPU 调度程序和 UKSM .
https://gitlab.com/post-factum/pf-kernel/wikis/README || Packages:
  • Realtime kernel — 由Ingo Molnar领导的一小群核心开发人员维护。这个补丁允许几乎所有的内核被抢占,除了少数非常小的代码区域(“原始自旋锁关键区域”)。这是通过将大多数内核自旋锁替换为支持优先级继承的互斥锁,以及将所有中断和软件中断移动到内核线程来实现的
https://wiki.linuxfoundation.org/realtime/start || linux-rtAUR, linux-rt-ltsAUR
  • 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直通.
https://lwn.net/Articles/499240/ || linux-vfioAUR, linux-vfio-ltsAUR
  • XanMod — 旨在充分利用高性能工作站、游戏台式机、媒体中心和其他方面的优势,旨在提供更坚如磐石、响应速度更快、更流畅的桌面体验。此内核使用MUQS调度程序、BFQ I/O调度程序、UKSM实时内存重复数据消除, TCP BBR 拥塞控制、x86_64高级指令集支持和其他默认更改.
https://xanmod.org/ || linux-xanmodAUR

调试回退

参考General troubleshooting#Debugging regressions.

尝试 linux-mainlineAUR 以检查问题是否已在上游解决。 置顶评论还提到了一个包含已经构建的内核的存储库,因此可能不需要手动构建它,这可能需要一些时间.

也可以考虑尝试使用 LTS 内核 (linux-lts) 来调试最近没有出现的问题。 旧版本的 LTS 内核可以在 Arch Linux Archive 找到.

如果问题仍然存在, bisect linux-gitAUR 并在 kernel bugzilla 上报告错误. 尝试不带任何补丁的“vanilla”版本以确保它与它们无关是很重要的。 如果补丁导致了问题,请将其报告给补丁的作者.

注意: 将内核一分为二可能需要很多时间,因为它可能需要多次重建.

参见