【Linux】内核编译 镜像制作

news2025/1/27 12:44:29

文章目录

  • 一、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.coloradmin.cn/o/1346879.html

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

相关文章

《QDebug 2023年12月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Q_REVISION 标记的信号槽或者 REVISION 标记的属性,在子类中访问 Q_REVISION 是 Qt 用来做版本控制的一个宏。以 QQuickWindow 为例,继承后去访问 REVISION 标记的 opacity 属性或者 Q_REVISION…

nodejs+vue+微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐

本文先充分调查林业信息管理系统的需求分析,深入剖析系统应该具有的功能,并设计完善的数据库。利用成熟的开发技术完成编码工作,林业信息管理系统可以为林业局领导提供业务管理功能,林业局领导也就是系统的管理员,具有…

【LeetCode】每日一题 2023_12_31 一年中的第几天(日期)

文章目录 随便聊聊时间题目:一年中的第几天题目描述代码与解题思路 随便聊聊时间 LeetCode?启动!!! 12 月的打卡勋章,get! 题目:一年中的第几天 题目链接:1154. 一年中…

数据结构期末复习(1)数据结构和算法 线性表

数据结构期末总复习(gaois课堂版) 数据结构的概念 数据结构是计算机科学中的一个重要概念,它指的是组织和存储数据的方式。数据结构可以帮助我们高效地操作和管理数据,使得计算机程序能够更加有效地执行各种任务。 数据结构有很…

【JavaScript】面向对象继承

目录 一、前言二、问题是最好的老师1、为什么要使用继承2、如何实现继承 三、面向对象继承方式1、借用构造函数继承1)、优点2)、缺点 2、原型链继承1)、完整代码2)、缺点 3、组合继承(原型链借用构造函数)1…

Rust学习笔记000 安装

安装命令 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh $ curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust programming la…

C语言转WebAssembly的全流程,及Web端调用测试

第一步:安装环境 参考网址:https://emscripten.org/docs/getting_started/downloads.html 具体过程: 克隆代码:git clone https://github.com/emscripten-core/emsdk.git进入代码目录:cd emsdk获取最新远端代码&…

关键字:try-catch关键字

在 Java 中,try-catch关键字用于异常处理。它们允许编写代码来捕获和处理异常,以确保程序能够在出现问题时合理地处理它们而不会崩溃。 以下是try-catch关键字的基本语法: 在try块中编写可能会抛出异常的代码。如果在try块中的任何代码抛出…

【Proteus仿真】【STM32单片机】自动除湿器系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用按键、LCD1602液晶、DHT11温湿度、继电器除湿模块等。 主要功能: 系统运行后,LCD1602显示DHT11传感器检测的湿度值阈值…

将数据“0x0f“写入AT24C02再读出送P1口显示

#include <reg51.h> // 包含51单片机寄存器定义的头文件 #include <intrins.h> //包含_nop_()函数定义的头文件 #define OP_READ 0xa1 // 器件地址以及读取操作,0xa1即为1010 0001B #define OP_WRITE 0xa0 // 器件地址以及写入…

浅析xxl-obj分布式任务调度平台RCE漏洞

文章目录 前言本地环境搭建1、初始化数据库2、搭建调度中心3、搭建出执行器 XXL-JOB漏洞1、后台弱口令->RCE2、未授权API->RCE3、默认accessToken4、CVE-2022-361575、SSRF漏洞->RCE 总结 前言 在日常开发中&#xff0c;经常会用定时任务执行某些不紧急又非常重要的事…

jmeter的常用功能及在测试中的基本使用和压测实战

Jmeter基础功能 了解Jmeter的常用组件 元件&#xff1a;多个类似功能组件的容器&#xff08;类似于类&#xff09; 一&#xff1a;Test Plan&#xff08;测试计划&#xff09; 测试计划通常用来给测试的项目重命名&#xff0c;使用多线程脚本运行时还可以配置线程组运行方式…

【HR非技术问题面试篇】你怎么看待加班?

你对加班怎么看待? &#x1f60a;老油条经典回答系列 &#x1f60a;老油条经典回答系列 这种问题&#xff0c;怎么回答都可以&#xff0c;我觉得重要的实时表达你自己。如果你就不想加班&#xff0c;也没必要勉强说自己爱加班&#xff0c;结果入职之后干的不开心。 不过&…

S32K312使用ITCM向FLASH代码区写入数据

使用C40_IP的系列方法向FLASH代码区写入数据时&#xff0c;程序会卡死在读取写操作的状态C40_Ip_MainInterfaceWriteStatus()这个方法中。本文主要介绍S32K312通过ITCM的方式&#xff0c;通过C40_IP的方法向FLASH代码区成功写入数据的方法和步骤。 首先&#xff0c;验证一下C4…

configparser.NoSectionError: No section: ‘***‘解决方案

大家好,我是水滴~~ 本文主要介绍 configparser.NoSectionError: No section: *** 问题的解决方案,希望能对你有所帮助。 《Python入门核心技术》专栏总目录・点这里 文章目录 1.问题描述2.解决方案3. INI 文件介绍1.问题描述 我们在使用 Python 的配置文件的时候,经常会看…

软件有效找不到dll文件,五种可靠的解决dll方法分享

电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些问题&#xff0c;其中之一就是“电脑提示dll文件缺失”。这个问题可能会给我们的生活和工作带来很大的困扰&#xff0c;因此&#xff0c;我希望通过分享我的心得体会&…

005、数据类型

1. 关于数据类型 Rust中&#xff0c;每个值都有其特定的数据类型&#xff0c;Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言&#xff0c;它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下&#xff0c;编译器可以根据我们如何绑定、使用变…

揭秘HTTP与HTTPS:保障安全的网页传输协议之争

目录 1、前言 2、HTTP与HTTPS的概念及区别 2.1 HTTP的定义与特点 2.2 HTTPS的定义与特点 2.3 HTTP与HTTPS的区别 3、HTTP的工作原理及安全隐患 3.1 HTTP的工作流程 3.2 HTTP的安全隐患 4、HTTPS的工作原理及优势 4.1 HTTPS的工作流程 4.2 HTTPS的加密算法 4.3 HTTP…

python+opencv实现图片/短视频一键去水印

目录 0 前言1 准备工作2 读取图片或视频3 添加回调获取鼠标绘制水印区域4 调用opencv函数5 绘制蒙版主循环6 去水印主循环总结 0 前言 在制作ppt个人文章或者分享图片过程中&#xff0c;经常会遇到一些带有水印的情况&#xff0c;不少人都希望能够去除这些水印&#xff0c;提高…

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…