项目介绍

Linux 内核是整个 Linux 操作系统的核心,负责管理硬件资源、提供系统调用接口、管理进程和内存,并为上层所有软件提供基础服务。它由 Linus Torvalds 于 1991 年创建,至今已发展成为全球最大的开源协作项目之一。

Linux 内核的源代码仓库包含超过 3600 万行代码,有来自世界各地数千名开发者的贡献。从全球超过 90% 的超级计算机,到你手中的 Android 手机,再到互联网上大部分的服务器,它们都运行着 Linux 内核。该项目在 GitHub 上拥有超过 22.2 万 Star,是平台上最受关注的底层系统项目。

核心特性

  • 模块化设计 — 内核功能以模块形式组织,可以在运行时动态加载和卸载驱动程序和功能模块,无需重启系统。
  • 多平台支持 — 支持 x86、ARM、RISC-V、MIPS、PowerPC 等数十种处理器架构,适应从微型嵌入式设备到大型服务器集群的各种场景。
  • 强大的进程管理 — 支持多任务处理、实时调度、CFS(完全公平调度器)、cgroup 资源隔离等高级进程管理功能。
  • 先进的内存管理 — 虚拟内存、内存映射、NUMA 感知、透明大页、内存压缩等现代内存管理技术。
  • 丰富的文件系统 — 原生支持 ext4、Btrfs、XFS、F2FS 等多种文件系统,同时兼容 NTFS、FAT 等外部文件系统。
  • 网络协议栈 — 完整的 TCP/IP 协议栈实现,支持 IPv6、Netfilter 防火墙、eBPF 可编程网络等先进网络功能。
  • 容器与虚拟化 — 提供 namespaces 和 cgroups 等容器化基础设施,支持 KVM 硬件虚拟化,是 Docker 和 Kubernetes 的基石。
  • 安全框架 — 内置 SELinux、AppArmor 等 LSM(Linux 安全模块),支持 seccomp、内核签名验证等安全机制。

应用领域

服务器与云计算

全球大部分服务器运行 Linux,包括 AWS、Google Cloud、Azure 等云平台。Linux 是互联网基础设施的基石。

移动设备(Android)

Android 操作系统基于 Linux 内核构建,全球超过 30 亿台活跃设备运行着 Linux 内核。

超级计算机

全球 TOP500 超级计算机中超过 90% 运行 Linux,包括世界上最快的超级计算机。

嵌入式系统

路由器、智能电视、汽车信息娱乐系统、工业控制器等大量嵌入式设备采用 Linux 内核。

桌面操作系统

Ubuntu、Fedora、Arch Linux 等发行版为桌面用户提供了可靠的 Linux 桌面体验。

物联网(IoT)

从智能家居设备到工业传感器,Linux 凭借灵活性和可裁剪性成为 IoT 领域的主流选择。

系统架构

子系统功能说明相关文档
进程调度器管理进程和线程的 CPU 时间分配,CFS 调度器确保公平性Documentation/scheduler/
内存管理虚拟内存、物理页框管理、SLAB 分配器、OOM KillerDocumentation/mm/
文件系统(VFS)虚拟文件系统层,统一各种文件系统的访问接口Documentation/filesystems/
网络子系统协议栈实现、Socket 接口、Netfilter、eBPFDocumentation/networking/
设备驱动硬件抽象层,支持数以万计的硬件设备驱动程序Documentation/driver-api/
安全子系统LSM 框架、SELinux、AppArmor、密钥管理Documentation/security/

如何开始

无论您是想使用 Linux 还是参与内核开发,以下是基本的入门步骤:

# 获取最新内核源码
git clone https://github.com/torvalds/linux.git
cd linux

# 使用当前系统配置作为基础
make defconfig

# 编译内核(使用所有 CPU 核心)
make -j$(nproc)

# 安装模块和内核
sudo make modules_install
sudo make install

内核开发者入门路线:

步骤说明
1. 学习基础熟悉 C 语言、操作系统原理和 Git 版本控制。
2. 阅读文档阅读 Documentation/process/ 目录下的开发流程文档。
3. 编译内核在虚拟机中成功编译和启动自定义内核。
4. 修复小问题从代码风格修复或简单的 Bug Fix 开始提交补丁。
5. 提交补丁使用 git format-patch 和 git send-email 向邮件列表提交补丁。
6. 加入社区订阅相关子系统的邮件列表,参与代码评审和技术讨论。

常见问题

Linux 内核和 Linux 操作系统有什么区别?
Linux 内核是操作系统的核心部分,负责硬件管理和基础服务。我们日常所说的"Linux 操作系统"(如 Ubuntu、CentOS)实际上是 Linux 内核加上 GNU 工具链、包管理器、桌面环境等组成的完整发行版。严格来说应称为 GNU/Linux。
Linux 内核使用什么许可证?
Linux 内核使用 GPLv2(GNU 通用公共许可证第二版)。这意味着任何基于 Linux 内核修改和分发的代码也必须开源。Linus Torvalds 明确表示不会将内核升级到 GPLv3。
为什么 GitHub 上的仓库不接受 Pull Request?
Linux 内核的开发流程基于邮件列表(Mailing List),而不是 GitHub 的 Pull Request。GitHub 上的仓库只是 Linus Torvalds 的个人镜像。开发者需要通过 git send-email 将补丁发送到对应子系统的邮件列表进行代码审查。
普通用户需要自己编译内核吗?
大多数情况下不需要。Linux 发行版(如 Ubuntu、Fedora)会提供预编译的内核包并自动更新。只有在需要特定功能、优化性能或进行内核开发时才需要自行编译。
如何查看当前系统的内核版本?
在终端中运行 uname -r 即可查看当前运行的内核版本。例如输出 6.8.0-45-generic 表示主版本 6.8,补丁版本 0,发行版特定修订 45。
Linux 内核有多少行代码?
截至目前,Linux 内核包含超过 3600 万行代码,其中大部分是设备驱动程序。内核的代码量在持续增长,每个版本都会新增数十万行代码。这是人类历史上最大的协作软件工程项目之一。

社区议题

该仓库当前没有公开的 Issue,或 Issue 功能已禁用。