【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.rhkb.cn/news/227999.html

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

相关文章

IIS服务器发布PHP网站

IIS服务器,相信开发者都不会陌生,它的英文全称是Internet Information Services,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务,常用于Windows系统的Web项目部署,本篇以PHP项目为例,讲解如…

Qt 中使用 MySQL 数据库保姆级教程(上)

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 在 Qt 中默认只搭载了 QSqlLite 数据库驱动,若要使用其他数据库需要自己下载数据库,并将数据库驱动加载到…

GitOps实践指南:GitOps能为我们带来什么?

Git,作为开发过程中的核心工具,提供了强大的版本控制功能。即便在写代码的时候稍微手抖一下,我们也能通过 Git 的差异对比(diff)轻松追踪到庞大工程中的问题,确保代码的准确与可靠。这种无与伦比的自省能力…

【小沐学Python】Python实现免费天气预报获取(OpenWeatherMap)

文章目录 1、简介1.1 工具简介1.2 费用1.3 注册1.4 申请key 2、接口说明2.1 One Call 3.02.2 Current Weather and Forecasts collection2.2.1 API 调用2.2.2 API 参数 2.3 Historical Weather collection2.4 Weather Maps collection2.5 Other weather APIs 3、接口测试3.1 例…

SpringBoot集成支付宝,看这一篇就够了。

前 言 在开始集成支付宝支付之前,我们需要准备一个支付宝商家账户,如果是个人开发者,可以通过注册公司或者让有公司资质的单位进行授权,后续在集成相关API的时候需要提供这些信息。 下面我以电脑网页端在线支付为例,介…

HTML教程(1)——概述和第一个网页

一、什么是HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 二、什么是HTML 标签 H…

Java项目:102SSM汽车租赁系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 汽车租赁系统基于SpringSpringMVCMybatis开发,系统使用shiro框架做权限安全控制,超级管理员登录系统后可根据自己的实际需求配角色…

Kasada p.js (x-kpsdk-cd、x-kpsdk-cd、integrity)

提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果(数据完整性) x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后,解码会看到如下图 二、cook…

【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec

【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的?2.词向量是什么样子?3.词向量对应的热力图:4.词向量模型的输入与输出![在这里插入图片描述](https://img-blog.csdni…

Volume Control 2

为游戏添加音乐和音效总是需要一些编码来设置一个系统来控制、显示和保存应用程序的音量设置。 音量控制的设计是为了立即为您设置这些内容,让您有更多时间专注于最重要的事情——制作出色的游戏! 在版本2中,我们对系统进行了重新设计,使其更加模块化、灵活,甚至更易于使用…

RHCE9学习指南 第13章 硬盘管理

新的硬盘首先需要对硬盘进行分区和格式化,首先了解一下硬盘的结构,如图13-1所示。 图13-1 磁盘上的磁道和扇区 硬盘的磁盘上有一个个的圈,每两个圈组成一个磁道。从中间往外发射线,把每个磁道分成一个个的扇区,每个扇…

Qt基础之四十五:Qt国际化(I18N)

国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),这种奇葩的缩写方式,让我想起了NBA球星“字母哥”。 下面看下Qt实现的动态语言切换效果。 一.效果 二.源码 QHSettingDialog.h #ifndef QHSETTINGDIALOG_H #define QHSETTINGDIALOG_H#…

Grafana监控数据可视化

Grafana 是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源,比 Prometheus 自带的图表展示功能强大太多&am…

【MySQL】主从异步复制配置

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

删除数据后, redis 内存占用还是很高怎么办?

现象: reids 做了数据删除,数据量不大,使用 top 命令看,发现还是占用大量内存 原因: 1.redis 底层内存根据内存分配器分配,不会立刻释放 2.redis 释放的内存空间不是连续的,存在碎片 内存碎…

软件开发新手用哪个IDE比较好?软件开发最好的IDE都在这!

目录 IDES 的优点 最佳编程 IDE 列表 Java 开发的流行集成开发环境 JetBrains 的 IntelliJ IDEA NetBeans 适用于 C/ C、C# 编程语言的最佳 IDE Visual Studio 和 Visual Studio 代码 Eclipse PHP 开发的最佳 IDE PHPStorm Sublime Text Atom JavaScript 的顶级 I…

多线程编程设计模式(单例,阻塞队列,定时器,线程池)

💕"只有首先看到事情的可能性,才会有发生的机会。"💕 作者:Mylvzi 文章主要内容:多线程编程设计模式(单例,阻塞队列,定时器,线程池) 本文主要讲解多线程编程中常用到的设计模式,包括单例模式,阻塞队列,定时…

Go语言中的HTTP重定向

大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP重定向,让我们开始吧! 大家都知道,网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说,你可能想将旧的URL结构…

宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库

来源:宏集科技 工业物联网 宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库 原文链接:https://mp.weixin.qq.com/s/UEPtpTehdbFrw3MUCnuR2A 欢迎关注虹科,为您提供最新资讯! 01 前言 在这个数字化时代,物…

iptables防火墙(二)

目录 1、SNAT策略及应用 1.1、SNAT 策略概述 1.2、SNAT 策略的应用 2、DNAT 策略及应用 2.1、DNAT 策略概述 2.2、DNAT 策略的应用 3、规则的导出、导入 3.1、规则的备份及还原 3.2、使用 iptables 服务 4、使用防火墙脚本 4.1、防火墙脚本的构成 &#xf…