【Linux】内核编译 镜像制作

文章目录

  • 一、Ubuntu内核编译
    • 1.1 为什么自己编译内核
    • 1.2 Ubuntu 内核源码下载
      • 1.21 内核的作用
      • 1.22 Linux内核与ubuntu内核
      • 1.23 Ubuntu内核源码获取
    • 1.3 在Windows系统下编译ubuntu内核
    • 1.4 在Linux系统下编译ubuntu内核
  • 二、镜像制作

一、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内核

二、镜像制作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用LCD循环右移显示“Welcome to China“

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选择位&#xff0c;将RW位定义为P2.1引脚 sbit EP2^2; //使能…

Debezium日常分享系列之:向 Debezium 连接器发送信号

Debezium日常分享系列之&#xff1a;向 Debezium 连接器发送信号 一、概述二、激活源信号通道三、信令数据集合的结构四、创建信令数据集合五、激活kafka信号通道六、数据格式七、激活JMX信号通道八、自定义信令通道九、Debezium 核心模块依赖项十、部署自定义信令通道十一、信…

【C# 技术】 C# 常用排序方式——自定义数据排序

C# 常用排序方式——自定义数据排序 前言 在最近的项目中经常会对C#中的数据进行排序&#xff0c;对于基本数据类型&#xff0c;其排序方式比较简单&#xff0c;只需要调用内置算法即可实现&#xff0c;但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦&…

区分LR(0),SLR(1),LR(1)和LALR(1)

目录 对于LR(0)文法&#xff1a; 对于SLR(1)文法&#xff1a; 对于LR(0)和SLR(1)文法&#xff1a; 对于LR(1)和SLR(1)文法&#xff1a; 对于LALR(1)文法&#xff1a; 例题1&#xff1a; 例题2&#xff1a; 例题3&#xff1a; 例题4&#xff1a; 这几个文法大致的步骤都…

推荐几个贼有意思的开源项目!

这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、Java、Go、C/C、Swift...让你在短时间内感受到开源的魅力&#xff0c;对编程产生兴趣&#xff01; C 项目 1、kilo&#xff1a;不到 1 千行代码实现的迷你文本编辑器。该项…

STL容器——map

由于某些原因其实就是作者咕咕咕了 &#xff0c;这篇文章到2023年的最后一天才更出来 map的认识 关于map&#xff0c;这是一种常用的工具 基本上可以看成一个下标可以为任意的数组 注意&#xff0c;这里的任意&#xff0c;包括C中所有类型的所有取值可能 也就是说下标是什…

Portraiture4.1汉化版PS磨皮插件(支持原生m1芯片m2)

Portraiture汉化版PS磨皮插件。本期推荐一款全新ai算法ps2024中文汉化版ps磨皮插件Portraiture 4.1.2美颜滤镜安装包最新版ps调整肤色插件! 全新Portraiture 4.1.2版本PS人像修图美颜磨皮插件&#xff0c;升级AI算法&#xff0c;并支持多人及全身磨皮美化模式&#xff0c;推荐…

c++对c的加强

目录 提出了命名空间的概念 实用性增强 register关键字增强 变量检测增强 struct类型加强 C中所有的变量和函数都必须有类型 新增bool数据类型 提出了命名空间的概念 命名空间将全局作用域分成不同的部分 不同命名空间中的标识符可以同名而不会发生冲突 命名空间可以相互…

TypeScript 类方法装饰器

type ClassMethodDecorator (value: Function,context: {kind: method;name: string | symbol;static: boolean;private: boolean;access: { get: () > unknown };addInitializer(initializer: () > void): void;} ) > Function | void; 1、如果装饰器返回一个函数就…

C# 中 async/await 遇上 forEach 两种写法,是否按照遍历?

在 C# 中&#xff0c;async/await 与 forEach 可以搭配使用&#xff0c;但需要注意的是&#xff0c;forEach 本身不是一个异步操作&#xff0c;它会按顺序同步地遍历集合中的元素&#xff0c;并将每个元素作为参数传递给回调函数。因此&#xff0c;如果在 forEach 循环中使用 a…

【嵌入式开发 Linux 常用命令系列 7.3 -- linux 命令行数值计算】

文章目录 linux 命令行数值计算使用 awk使用 bc 命令使用 Bash 的内置算术扩展使用 expr脚本命令实现 linux 命令行数值计算 在 Linux 命令行中&#xff0c;您可以使用多种方法来执行基本的数学运算。以下是一些示例&#xff1a; 使用 awk awk 是一个强大的文本处理工具&…

【C#】知识点实践序列之Lock的输出多线程信息

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂之知识点实践序列》文章。 2023年第2篇文章&#xff0c;此篇文章是C#知识点实践序列之Lock知识点&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 本篇在Lock锁定代码…

CAN,SPI,IIC,USART每帧的组成

字节是计算机中用于存储数据的基本单位&#xff0c;一个字节由8个二进制位组成。在计算机科学中&#xff0c;字节的大小是固定的&#xff0c;即1字节8位。1比特1位 在不同的数据类型中&#xff0c;字节的大小也不同。例如&#xff0c;在ASCII码中&#xff0c;一个英文字母或数…

【python_数据分组】

对excel按照标签进行分组&#xff0c;例如按照“开票主体和对方公司”进行分组&#xff0c;并获取对应的明细。 表格如下&#xff1a; def main(excel_data):result {}for d in excel_data:if str(d[0])str(d[1]) in result:result[str(d[0])str(d[1])].append([d[0],d[1],…

Java 语法糖的介绍

在Java编程中&#xff0c;语法糖是一种简化代码的技巧&#xff0c;它可以使代码更易读、易写&#xff0c;同时提高开发效率。尽管从语法上看&#xff0c;它更像是一种装饰&#xff0c;但它能给我们的代码带来革命性的改变。 一、什么是Java语法糖&#xff1f; "语法糖&q…

删除重复字符

本题要求编写程序&#xff0c;将给定字符串去掉重复的字符后&#xff0c;按照字符ASCII码顺序从小到大排序后输出。 输入格式&#xff1a; 输入是一个以回车结束的非空字符串&#xff08;少于80个字符&#xff09;。 输出格式&#xff1a; 输出去重排序后的结果字符串。 输…

leetcode每日一题42

107.二叉树的层序遍历II 就层序遍历后reverse一下 class Solution { public:vector<vector<int>> levelOrderBottom(TreeNode* root) {queue<TreeNode*> que;if(root!nullptr)que.push(root);vector<vector<int>> result;while(!que.empty()){…

web component - 使用HTML Templates和Shadow DOM构建现代UI组件

Web Component是一种用于构建可重用的UI组件的技术。它使用标准化的浏览器API&#xff0c;包括Custom Elements、Shadow DOM和HTML Templates来实现组件化开发方式。这些API都是现代浏览器原生支持的&#xff0c;因此不需要引入第三方库或框架即可使用。 在这篇博客中&#xf…

[Verilog] 加法器(半加法器 | 全加法器 | 串行加法器 | 并行加法器 | 十进制加法器)详解

前言 在数字电路中,加法器是一种常见的逻辑电路,用于将两个数字相加。本文将介绍如何使用Verilog实现各种加法器。 1 加法器种类 整数加法器 半加器(Half Adder):它是最简单的加法器,只能进行两个输入位的相加操作,不包括进位位。全加器(Full Adder):它是最基本的加…

第6课 用window API捕获麦克风数据并加入队列备用

今天是2024年1月1日&#xff0c;新年的第一缕阳光已经普照大地&#xff0c;祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒&#xff0c;事业有成。 今天也是我加入CSDN的第4100天&#xff0c;但回过头看一看&#xff0c;这么长的时间也没有在CSDN写下几篇…