【Linux】内核编译 && 镜像制作

发布时间:2023年12月31日

一、Ubuntu内核编译

1.1 为什么自己编译内核

自己编译内核通常是为了特定需求或优化系统性能。以下是一些考虑因素:

  1. 定制需求: 如果你有特定的硬件要求、功能需求或者希望移除一些不需要的内核模块,自定义内核可以满足这些需求。一些嵌入式系统或特殊用途的系统可能需要定制化的内核。
  2. 性能优化: 通过自定义编译,你可以选择启用或禁用一些内核选项,以优化系统性能。这对于特定的硬件环境或性能敏感的应用程序可能很有帮助。
  3. 最新特性: 如果你想使用内核的最新特性或修复了最新版本的安全漏洞,自己编译可以确保你使用的是最新版本的内核。
  4. 教育目的: 编译内核是学习Linux系统运作的良好方式。这对于深入了解Linux内核、设备驱动和系统启动过程很有帮助。

对于大多数桌面用户和一般服务器使用,使用发行版提供的预编译内核通常是足够的。预编译的内核经过测试,通常具有广泛的硬件兼容性,而且由发行版的维护团队提供支持。自行编译内核可能会增加系统维护的复杂性,并且如果配置不当,可能导致系统不稳定。

1.2 Ubuntu 内核源码下载

1.21 内核的作用

操作系统内核是计算机系统中的核心,它负责管理系统的资源、提供各种服务,以及实现用户和硬件之间的通信。以下是内核的一些主要作用:

  1. 资源管理: 内核负责管理计算机系统的各种硬件资源,包括CPU、内存、硬盘、网络接口等。它通过调度算法来决定哪个进程(或任务)在某个时刻执行,以及如何分配和释放内存。
  2. 进程管理: 内核负责创建、终止和调度进程。它管理进程的状态转换,分配资源,以及协调不同进程之间的通信和同步。
  3. 文件系统管理: 内核提供文件系统接口,使得应用程序可以通过文件系统进行文件的读取、写入和管理。它还负责处理文件和目录的访问权限、文件锁定等问题。
  4. 设备驱动程序: 内核包含设备驱动程序,用于与硬件设备进行通信。这些驱动程序允许操作系统与硬件之间进行有效的交互,包括输入输出设备、网络接口、磁盘驱动器等。
  5. 系统调用接口: 内核提供了系统调用接口,允许应用程序通过一组标准化的接口与内核进行通信。这些接口包括对文件、进程、网络等的访问。
  6. 内存管理: 内核负责管理系统的物理内存和虚拟内存。它通过分页机制、内存映射等方式来实现进程间的内存隔离和保护。
  7. 中断处理: 内核负责处理硬件和软件产生的中断。硬件中断可以来自于设备的状态变化,而软件中断通常是由系统调用或异常引起的。内核需要适时地响应这些中断以确保系统正常运行。
  8. 安全性和权限控制: 内核实施对系统资源的访问控制,确保只有经过授权的进程才能够执行敏感操作。这包括用户身份验证、访问权限检查等功能。

总体而言,内核是操作系统的核心,它为上层应用程序提供了一个抽象的接口,使得开发者可以专注于应用程序的逻辑而不用直接处理底层硬件和资源管理的细节。内核的设计和性能直接影响整个操作系统的稳定性和效率。

1.22 Linux内核与ubuntu内核

一些注意点:

  1. Linux内核是一个免费、开源、模块化、多任务、类Unix的操作系统内核。
  2. Ubuntu是一种基于Linux内核的操作系统。
  3. Ubuntu的内核源代码非常接近由Linus维护的上游主线内核树。
  4. Ubuntu内核的特性通过与Linus树的git分支进行维护。
  5. 因此,Ubuntu内核是Linux内核的一种变体,它包含了一些特定于Ubuntu的功能和修补程序。

Linux内核官方的源代码仓库:https://www.kernel.org/
在这里插入图片描述

Additional: 查询你的Ubuntu版本信息 uname -a

root@CQUPTLEI:~# uname -a
Linux CQUPTLEI 5.4.0-152-generic #169-Ubuntu SMP Tue Jun 6 22:23:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

我服务器Linux内核版本是 5.4.0-152,构建于2023年6.6 日。这个版本是2021年就发布了的,见 git log:https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.4.152

这说明我那天更新了软件,比如apt upgrade命令,这只会更新小版本,不会更新大版本(比如5.10),因为大版本更新可能会引入新特性。

1.23 Ubuntu内核源码获取

Ubuntu Kernel Repositories:https://kernel.ubuntu.com/git/

这是ubuntu内核的git仓库列表。

在这里插入图片描述

近几年Ubuntu版本对应的Linux内核版本及名称(codename):红色是LTS版本(目前)

Ubuntu版本内核版本代号
16.044.4Xenial Xerus
16.104.8Yakkety Yak
17.044.10Zesty Zapus
17.104.13Artful Aardvark
18.044.15Bionic Beaver
18.104.18Cosmic Cuttlefish
19.045.0Disco Dingo
19.105.3Eoan Ermine
20.045.4Focal Fossa
20.105.8Groovy Gorilla
21.045.11Hirsute Hippo
21.105.13Impish Indri
22.045.15Jammy Jellyfish
22.105.19Karmic Koala
23.046.2Luminous Lorikeet
23.106.5Mystic Mongoose

Ubuntu的版本号命名规则是根据正式版发布的年月命名,其中X表示年份(减去2000),YY表示发布的月份。例如,Ubuntu 16.04意味着2016年4月发布的Ubuntu,Ubuntu 22.10意味着2022年10月发布的Ubuntu1。因此,Ubuntu的版本号通常以.xx.04或.xx.10结尾。

前面的ubuntu内核仓库的source选项下有很多版本,对应不同的平台或特性:

Linux内核版本用途
linux-unstable该内核版本是Linux内核的开发版本,用于测试新功能和修复错误。
linux该内核版本是Linux内核的稳定版本,用于大多数Linux发行版。
linux-lowlatency该内核版本是Linux内核的低延迟版本,用于音频和其他实时应用。
linux-raspi该内核版本是专门为树莓派设计的Linux内核版本。
linux-aws该内核版本是专门为Amazon Web Services(AWS)设计的Linux内核版本。
linux-azure该内核版本是专门为Microsoft Azure云服务设计的Linux内核版本。
linux-gcp该内核版本是专门为Google Cloud Platform(GCP)设计的Linux内核版本。
linux-ibm该内核版本是专门为IBM Power Systems设计的Linux内核版本。
linux-oracle该内核版本是专门为Oracle Linux设计的Linux内核版本。
linux-riscv该内核版本是专门为RISC-V架构设计的Linux内核版本。
linux-starfive该内核版本是专门为StarFive处理器设计的Linux内核版本。
linux-laptop该内核版本是专门为笔记本电脑设计的Linux内核版本。
linux-intel-opt该内核版本是专门为英特尔处理器设计的Linux内核版本。
linux-nvidia该内核版本是专门为NVIDIA GPU设计的Linux内核版本。

我下载22.04的源码。点击 jammy Linux那一行最后面的code

1.3 在Windows系统下编译ubuntu内核

先写到这,明年继续

1.4 在Linux系统下编译ubuntu内核

二、镜像制作

文章来源:https://blog.csdn.net/weixin_43764974/article/details/135319158
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。