3. Linux 内核升级之路

简介: 3. Linux 内核升级之路

一、简介

内核版本可能分为几个主要类别:


1.1 预配(Prepatch)

Prepatch或“RC”(Release Candinate)内核是主要针对其他内核开发人员和Linux爱好者的主流内核预发行版。它们必须从源代码中编译,并且通常包含必须测试的新特性,然后才能将其放入稳定的版本中。预处理内核由Linus Torvalds维护和发布。


1.2 主线

主线树由Linus Torvalds维护。这是一棵树,所有新功能都在这里引入,所有令人兴奋的新开发都在这里发生。新的主线内核每9-10周发布一次。


1.3 稳定版

每一个主线内核发布后,它都被认为是“稳定的”。任何针对稳定内核的bug修复都会从主线树中进行反向移植,并由指定的稳定内核维护人员进行应用。除非指定为“长期维护内核”,否则在下一个主线内核可用之前,通常只有几个错误修复内核版本。稳定的内核更新会根据需要发布,通常每周发布一次。

1.4 长期

通常会提供几个“长期维护”内核版本,用于为较旧的内核树移植错误修复程序。只有重要的错误修复程序应用于此类内核,通常不会频繁发布,尤其是对于较旧的树。


1.4.1 长期释放内核

版本维护者发布预计EOL


5.15 Greg Kroah-Hartman&Sasha Levin 2021-10-2023年10月31日


5.10 Greg Kroah Hartman和Sasha Levin 2020-12-13 2026年12月


5.4 Greg Kroah Hartman&Sasha Levin 2019-11-24 2025年12月


4.19 Greg Kroah Hartman和Sasha Levin 2018-10-22 2024年12月


4.14 Greg Kroah Hartman&Sasha Levin 2017-11-12 2024年1月


1.4.2 分布核

许多Linux发行版都提供了自己的“长期维护”内核,这些内核可能基于内核开发人员维护的内核,也可能不基于这些内核。这些内核版本不在kernel.org上托管,内核开发人员无法为它们提供支持。


很容易判断您是否正在运行分发内核。除非您从kernel.org下载、编译并安装了自己版本的内核,否则您正在运行一个发行版内核。要查找内核的版本,请运行uname-r:


#uname-r


5.6.19-300.fc32.x86_64


如果您在破折号之后看到任何内容,那么您正在运行一个分发内核。请使用发行商提供的支持渠道获得内核支持。


发布常见问题解答


下面是我们经常收到的关于内核发布版本的一些问题。有关其他一些主题,请参见主要的“常见问题解答”部分。


二、下一个主线内核版本将于何时发布?

Linux内核遵循简单的发布节奏:


在每次主线发布之后,都有一个为期两周的“合并窗口”,在此期间将新的主要特性引入内核


在合并窗口关闭后,有一个为期7周的错误修复和稳定期,每周有“发布候选”快照


rc7通常是最后一个候选版本,但如果认为有必要的话,偶尔会有额外的rc8+版本


因此,要找到下一个主线内核发布的大致日期,请取上一个主线发布的日期,再加上9-10周。


三、下一个长期版本是什么?

长期内核的选择基于各种因素——主要的新功能、流行的商业发行需求、设备制造商的需求、维护人员的工作量和可用性等。您可以根据自选择上一个长期版本以来经过的时间来粗略估计新的长期版本何时可用。


为什么某些长期版本的支持时间比其他版本长?


“预计EOL”日期并非一成不变。每一个新的长期内核通常只有一个2年的预计EOL,如果整个行业有足够的兴趣来帮助支持它更长的时间,则可以进一步扩展。


四、主要版本号(4.x vs 5.x)有什么意义吗?

不。当圆点后面的数字看起来“太大”时,主版本号会增加。这实际上没有其他原因。


奇数偶数还有意义吗?


很久以前,Linux使用了一个系统,其中第一个点后的奇数表示预发布的开发内核(例如2.1、2.3、2.5)。在内核2.6发布后,这个方案被放弃,而现在的预发布内核用“-rc”表示。


扩展阅读

Linux 主要子系统:


系统调用接口

SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。



进程管理

进程管理的重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU寄存器)。在用户空间,通常使用进程 这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。


进程管理还包括处理活动进程之间共享 CPU 的需求。内核实现了一种新型的调度算法,不管有多少个线程在竞争 CPU,这种算法都可以在固定时间内进行操作。这种算法就称为 O⑴ 调度程序,这个名字就表示它调度多个线程所使用的时间和调度一个线程所使用的时间是相同的。O⑴ 调度程序也可以支持多处理器(称为对称多处理器或 SMP)。您可以在 ./linux/kernel 中找到进程管理的源代码,在 ./linux/arch 中可以找到依赖于体系结构的源代码。



内存管理



VFS 在用户和文件系统之间提供了一个交换层


内核所管理的另外一个重要资源是内存。为了提高效率,如果由硬管理虚拟内存,内存是按照所谓的内存页 方式进行管理的(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。


不过内存管理要管理的可不止 4KB缓冲区。Linux 提供了对 4KB缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。


为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在 ./linux/mm 中找到。



虚拟文件系统

虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。


VFS 在用户和文件系统之间提供了一个交换层


在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。


文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。



Linux内核_百度百科 (baidu.com)


皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~

“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
1月前
|
Linux 定位技术 虚拟化
Linux 安装
Linux 安装
20 5
|
Linux Shell Python
如何在 Linux 中安装和使用 pipx?
如何在 Linux 中安装和使用 pipx?
935 0
如何在 Linux 中安装和使用 pipx?
|
5月前
|
Ubuntu Linux 虚拟化
【Linux】Linux的安装
【Linux】Linux的安装
29 0
|
6月前
|
架构师 Linux 网络性能优化
linux内核升级笔记
linux内核升级笔记
60 0
|
Linux
(Linux)forever安装和使用
forever安装和使用
460 1
|
Linux
Linux:查看系统版本号
Linux:查看系统版本号
319 0
|
Rust Ubuntu Unix
如何在 Linux 上安装和使用 exa?
如何在 Linux 上安装和使用 exa?
197 0