Linux内核编译安装 - Deepin,Debian系

为什么要自己编译内核

优点

  • 定制化:你可以根据自己的硬件和需求配置内核,去掉不必要的模块,优化性能。
  • 性能优化:移除不需要的驱动程序和特性,减小内核体积,提高系统性能。
  • 最新特性和修复:获取最新的内核版本和特性,或者提前应用一些补丁。
  • 学习机会:通过编译内核,可以更深入地理解Linux的内部工作机制。

缺点

  • 复杂性:编译和配置内核需要较高的技术水平,过程复杂且容易出错。
  • 时间消耗:编译内核是一个耗时的过程,尤其是在资源有限的系统上。
  • 维护成本:自己编译的内核需要手动更新和维护,缺乏自动化工具的支持。
  • 兼容性问题:手动配置不当可能导致硬件或软件兼容性问题,需要仔细测试。

我的感受是

  • 了解到内核相关的知识。
  • 提前使用到最新版本的内核,不用等论坛大佬的更新:
    在这里插入图片描述
  • 内核体积大大缩小: 在这里插入图片描述

过程

下载

网站下载linux内核源码[^1] [^2],并解压,进入源码目录;
https://www.kernel.org/
https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/

安装依赖

参考脚本安装依赖[^3];

sudo apt install git wget fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison zstd debhelper

配置文件

  1. 使用现有配置文件dppve.config[^3]
cp /xxx/dppve.config .config
  1. 精简(可选)
    先让系统尽可能多地加载模块,使用工具自动保留已加载的模块[^5] [^6];
make localmodconfig
  1. 手动调整配置(可选)
make menuconfig
  1. 使用ccache加速多次编译(可选)
    安装配置ccache[^7] [^8];
sudo apt-get install ccache
export CC="ccache gcc"
export CXX="ccache g++" 

编译

这个步骤很慢,网友讲可能需要1-3个小时;
可能是我直接在实体机上编译的原因,我第一次编译大约花费25分钟;
经过localmodconfig、ccache后,后续编译时间一般在2-8分钟,感觉很快;

make -j$(nproc)

打包deb

make bindeb-pkg

安装文件在源码文件夹同级目录生成

默认配置生成的linux-image deb文件约80M,localmodconfig后约20M;

在这里插入图片描述

安装

安装软件包[^9],linux-libc-dev可不安装;

# 查看
ls -lh ../linux-*.deb
# 安装
dpkg -i ../linux-*.deb

启用

可使用grub-customizer管理grub配置,更换内核加载
列表
在这里插入图片描述
设置
在这里插入图片描述

References

[^1]. The Linux kernel archives. (n.d.). https://www.kernel.org/
[^2]. 8.10. 编译内核. (n.d.). https://www.debian.org/doc/manuals/debian-handbook/sect.kernel-compilation.zh-cn.html
[^3]. kernel_config · AtomGit_开放原子开源基金会代码托管平台. (n.d.). https://atomgit.com/fslong/kernel_config/
[^4]. Kernelconfig.io. (n.d.). https://www.kernelconfig.io/index.html
[^5]. Linux 内核编译 —— make localmodconfig 简化内核配置流程-CSDN博客. (n.d.). https://blog.csdn.net/maijian/article/details/6202426
[^6]. 精简LINUX内核配置及快速编译的方法汇总_linux 最小配置 快速编译-CSDN博客. (n.d.). https://blog.csdn.net/exiaoqian/article/details/42522653
[^7]. 使用 ccache 加速内核编译. (n.d.). https://www.expoli.tech/articles/2023/07/06/Use-ccache-to-speed-up-kernel-compilation
[^8]. Linux 5.10.20 上使用ccache加快内核编译速度(安装配置及使用方法)_kernel-5.10编译慢-CSDN博客. (n.d.). https://blog.csdn.net/weixin_48299611/article/details/115563624
[^9]. 查看、安装、卸载内核-论坛-深度科技. (n.d.). https://bbs.deepin.org/post/243646

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

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

相关文章

【Leetcode】最小数字游戏

你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下: 每一轮,Alice 先从 nums 中移除一个 最小 元素&…

【Linux】System V消息队列 System V信号量

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Spark调度底层执行原理详解(第35天)

系列文章目录 一、Spark应用程序启动与资源申请 二、DAG(有向无环图)的构建与划分 三、Task的生成与调度 四、Task的执行与结果返回 五、监控与容错 六、优化策略 文章目录 系列文章目录前言一、Spark应用程序启动与资源申请1. SparkContext的创建2. 资…

Python | Leetcode Python题解之第233题数字1的个数

题目: 题解: class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)# 但为了让代码看起来更加直观,这里保留了 kk,…

Excel第31享:基于left函数的截取式数据裂变

1、需求描述 如下图所示,在“Excel第30享”中统计2022年YTD各个人员的“上班工时(a2)”,需要基于工时明细表里的“日期”字段建立辅助列,生成“年份”字段,本文说明“年份”字段是怎么裂变而来的。 下图为…

图像处理:使用 OpenCV-Python 卡通化你的图像(2)

一、说明 在图像处理领域,将图像卡通化是一种新趋势。人们使用不同的应用程序将他们的图像转换为卡通图像。如今,玩弄图像是许多人的爱好。人们通常会点击图片并添加滤镜或使用不同的东西自定义图像并将其发布到社交媒体上。但我们是程序员,…

godis源码分析——Redis协议解析器

前言 redis这个目录下的所有代码就是为了一个事情,就是适配redis。 流程 redis下的基本流程 源码 在redis/client/client.go 主要是客户端处理 package clientconst (created iotarunningclosed )type B struct {data chan stringticker *time.Ticker }// …

Docker安装RabbitMQ(带web管理端)

1.拉取带web管理的镜像 可以拉取rabbitmq对应版本的web管理端,比如:rabbitmq:3.9.11-management,也可以直接拉取带web管理端的最新版本 rabbitmq:management. docker pull rabbitmq:3.9.11-management 注意:如果docker pull ra…

jenkins系列-06.harbor

https://github.com/goharbor/harbor/releases?page2 https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz harbor官网:https://goharbor.io/ 点击 Download now 链接,会自动跳转到上述github页面&am…

C++ | Leetcode C++题解之第233题数字1的个数

题目: 题解: class Solution { public:int countDigitOne(int n) {// mulk 表示 10^k// 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)// 但为了让代码看起来更加直观,这里保留了 klong l…

Redis系列命令更新--Redis哈希命令

一、设置密码验证: 使用文本编辑器,这里使用Notepad,打开Redis服务配置文件。 注意:不要找错了,通常为redis.windows-service.conf,而不是redis.windows.conf。后者是以非系统服务方式启动程序使用的配置…

《BASeg: Boundary aware semantic segmentation for autonomous driving》论文解读

期刊:Neural Networks | Journal | ScienceDirect.com by Elsevier 年份:2023 代码:https://github.com/Lature-Yang/BASeg 摘要 语义分割是自动驾驶领域街道理解任务的重要组成部分。现有的各种方法要么专注于通过聚合全局或多尺度上下文…

旷野之间20 - Google 研究的推测 RAG

为什么选择 RAG 新兴能力 直到最近,人们发现 LLM 具有新兴能力,即在与用户或任务交互过程中出现的意外功能。 这些功能的示例包括: 解决问题: LLM 可以利用其语言理解和推理能力,为未经过明确培训的任务提供富有洞…

python的字符串

字符串 简单操作 创建 利用 ‘ ’ 或 “ ” 将字符或数字包裹起来的都为字符串 a"你好" 格式化字符串 元组的字符格式化 字符串格式化函数 srt.format() f格式化 方法 split()//指定分割符经行分割 strip()//指定移除字符头尾的字符 join()//指定序列中的字符连接成新…

5、 测试

这里写目录标题 1、自动化测试简介(1)自动化测试是什么(2)为什么要写测试测试节约你的时间发现错误,预防错误测试使得代码更有吸引力 2、基础测试策略3、开始写第一个测试(1)首先得有个bug&…

Not Invented Here 不是在这里发明的 / Proudly found elsewhere 自豪地在其他地方找到

注: 机翻,未校对。 两篇关于创新管理的小文章 Not Invented Here 不是在这里发明的 In the history of organizational success, the enterprises that dominate tend to flawlessly execute on ideas that were created elsewhere. Examine just abo…

智慧水利解决方案:从理论到实践的全面跨越,展示其在水资源管理、水灾害预警、水生态保护等方面的创新应用

目录 一、引言:智慧水利的时代背景与意义 二、智慧水利的理论框架与技术体系 1、理论框架 2、技术体系 三、智慧水利在水资源管理中的应用 1、水资源优化配置 2、水量水质协同管理 四、智慧水利在水灾害预警中的应用 1、洪水预警与应急响应 2、干旱监测与评…

Mediapipe-姿态估计实例

Mediapipe简介 Mediapipe 是由 Google Research 开发的一款开源框架,旨在帮助开发者轻松地构建、测试和部署复杂的多模态、多任务的机器学习模型。它特别擅长于实时处理和分析音频、视频等多媒体数据。以下是 Mediapipe 的一些关键特点和组件: 关键特点…

基于微信小程序的音乐播放平台

基于微信小程序的音乐播放平台 音乐播放小程序项目简介技术栈功能模块项目流程系统E-R图项目页面 音乐播放小程序 项目简介 微信音乐小程序旨在提供一个简洁高效的音乐播放平台,用户可以方便地搜索、播放和收藏自己喜欢的音乐。整个项目采用前后端分离的架构&…

WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL

环境: Win10 专业版 DELL7080 问题描述: WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL 事件日志 解决方案: 1.找到MEMORY.DMP文件内容,分析一下 Microsoft (R) Windows Debugger Version 10…