# Linux内核简介

### Linux 内核简介

Linux 内核是 Linux 操作系统的核心组件，它是一个开源的、单内核（Monolithic Kernel）的操作系统内核，主要负责管理计算机硬件资源（如 CPU、内存、设备驱动）和进程调度。它由芬兰学生 Linus Torvalds 于 1991 年创建，最初是为了在 Intel 80386 处理器上运行的免费 Unix-like 系统。 Linux 内核的特点包括：

* **开源性**：遵循 GNU 通用公共许可证（GPL），允许全球开发者自由修改和贡献代码。
* **模块化设计**：支持动态加载模块，便于扩展功能，如文件系统、网络协议和设备驱动。
* **可移植性**：支持多种架构，包括 x86、ARM、RISC-V 等，广泛应用于服务器、桌面、嵌入式设备（如 Android 手机）和超级计算机。
* **安全性与稳定性**：内置权限控制、多任务处理和内存保护机制，常用于企业级环境。

截至 2025 年 8 月，Linux 内核已发展到 6.x 系列（如 6.15 版本），并开始支持 Rust 编程语言以提升安全性。

### Linux 内核发展历史

Linux 内核的发展从一个个人项目演变为全球协作的开源典范，涉及数千名开发者。以下是主要发展时间线，呈现了关键版本和里程碑：

| 年份        | 版本/事件          | 主要里程碑和变化                                                                                 |
| --------- | -------------- | ---------------------------------------------------------------------------------------- |
| 1991      | 0.01 / 0.02    | Linus Torvalds 在赫尔辛基大学启动项目，受 Minix 启发；8 月在新闻组宣布，9 月发布首个版本（约 10,000 行代码），支持基本 shell 和编译器。 |
| 1992      | 0.12           | 成为开源项目，支持 bash 和 gcc；开始吸引社区贡献。                                                           |
| 1994      | 1.0            | 首个稳定版本发布，支持多用户和网络功能；标志着从实验到实用。                                                           |
| 1996      | 2.0            | 支持多处理器（SMP）和模块化加载；用户基数快速增长。                                                              |
| 1999      | 2.2            | 改进网络和文件系统支持；广泛用于服务器。                                                                     |
| 2001      | 2.4            | 增强 USB 和防火墙支持；企业采用增加。                                                                    |
| 2003      | 2.6            | 引入预抢占和虚拟内存改进；2005 年开始使用 Git 版本控制系统，促进协作开发。                                               |
| 2011      | 3.0            | 版本号升级以庆祝 20 周年；优化虚拟化和容器支持（如 Docker 的基础）。                                                 |
| 2015      | 4.0            | 实时补丁和内核自检功能；支持更多 ARM 架构。                                                                 |
| 2019      | 5.0            | 改进安全性和性能；LTS（长期支持）版本如 5.4 和 5.10 持续维护至 2026 年。                                           |
| 2022      | 6.0 / 6.1      | 版本号升级；6.1 引入 Rust 支持，提升内存安全；应用于现代硬件如 RISC-V。                                             |
| 2024-2025 | 6.x 系列（如 6.16） | 持续优化 AI、云计算和边缘计算；发布周期约 9-10 周，主线内核保持活跃。                                                  |

Linux 内核的发展依赖于全球社区，包括公司如 Red Hat、IBM 和 Google 的贡献。 如今，它驱动了超过 80% 的互联网服务器和大多数智能手机。 如果需要特定版本的详细信息，可进一步查询官方内核档案（如 kernel.org）。

### Kernel 6.12版本新特性概览

#### Linux Kernel 6.12 新特性概览

Linux Kernel 6.12 于 2024 年 11 月 17 日正式发布，由 Linus Torvalds 宣布。这是一个重大版本，引入了多项长期期待的功能，如实时支持（PREEMPT\_RT）和新的调度器 sched\_ext，同时增强了硬件兼容性、安全性和性能。 该版本被视为潜在的长期支持（LTS）候选，适用于服务器、嵌入式系统和桌面环境。&#x20;

**主要新增功能**

* **实时支持 (PREEMPT\_RT)**：集成实时内核补丁，使 Linux 适用于实时应用，如工业控制和机器人。该功能开发了 20 年，支持低延迟任务调度。
* **新调度器 sched\_ext**：引入可扩展调度类，允许用户自定义 CPU 调度策略，提升灵活性和性能优化。
* **DRM Panic 消息作为 QR 码**：在内核崩溃时生成 QR 码，便于快速扫描和诊断错误。

**硬件支持增强**

* **处理器和架构**：支持 Intel Granite Rapids 和 Sierra Forest 处理器（包括 OOB 模式和混合 CPU 容量缩放）；AMD Zen 和更新 CPU 的微码加载简化；RISC-V 新功能如 Zkr（用于 KASLR 种子）、IPI CPU 回溯、用户空间漏洞报告和 Svvptc 扩展。
* **图形和显示**：默认启用 Intel Xe2 图形（用于 Lunar Lake 和 Battlemage）；支持 Raspberry Pi 5 图形加速。
* **网络和存储设备**：新增驱动包括 Realtek RTL9054/RTL9068 等汽车 PCIe 设备、Microchip LAN8650/1 10BASE-T1S MAC-PHY、Rockchip RK3568 CAN-FD、Marvell xSPI、Mediatek MTK7981 和 NXP i.MX8ULP 控制器；支持 NVIDIA SMMUv3 虚拟命令队列。
* **外设和传感器**：支持 PixArt PS/2 触控板、RTL8852BT/8852BE-VT（Wi-Fi 6）；ARM64 Surface 设备、LG 笔记本操作区域、Dell 电池充电设置、ASUS Vivobook 风扇配置文件和高分辨率滚轮滚动。
* **其他**：支持 ARM “权限叠加扩展”（使用内存保护键）；Android 保护访客运行；多个互连 PMU；Sophgo SG2042 外部硬件监视器。

**文件系统改进**

* **EROFS**：添加文件后备挂载支持，提升只读文件系统的灵活性。
* **其他文件系统**：对 EXT4、Btrfs、exFAT、FUSE、F2FS 和 Bcachefs 的各种优化，包括性能提升和 bug 修复。

**网络功能**

* **Device Memory TCP**：支持零拷贝 TCP 有效负载接收到 DMABUF 区域，同时包头单独处理，提升网络性能。
* **IPv6 增强**：添加 IOAM6 支持新 tunsrc 封装模式；支持前缀信息选项中的 PIO p 标志。
* **PTP 支持**：允许与 MONOTONIC\_RAW 时间戳一起读取 PTP PHC。

**安全性和其他改进**

* **安全**：LoongArch KVM 的访客 PMU 支持；AMD 内存控制器错误地址转换；Rust 更新和最新版本支持；vDSO getrandom 移植到多个架构（LoongArch64、ARM64、PowerPC、s390x）。
* **电源管理**：intel\_rapl 支持 AMD 家族 1Ah 和 Intel ArrowLake-U；cpuidle 工具显示驻留值。
* **测试和工具**：新热管理测试模块；SWIG 绑定 libcpupower；Clang 支持 nolibc（包括 LTO）。
* **杂项**：文档改进、清理和 bug 修复；SPI-NAND 连续读取；regmap irqdomains 自定义名称；MOSI 引脚空闲状态配置；ACPI 基于 RISC-V 中断控制器枚举。

6.12 版本强调实时性和调度创新，同时保持对现代硬件的广泛支持。

具体6.12更新日志详见：

<https://kernelnewbies.org/Linux_6.12>

本书的内核版本基于6.12.41 LTS版本，源码详见：<https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?h=v6.12.41>

\\

\
内核配置与编译流程（Kconfig & Makefile）\
（从 bootloader 到 init）

\
\
\
\
\
\\

####
