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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单相整流-TI视频课笔记

目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…

数学建模入门

目录 文章目录 前言 一、数学建模是什么? 1、官方概念: 2、具体过程 3、适合哪一类人参加? 4、需要有哪些学科基础呢? 二、怎样准备数学建模(必备‘硬件’) 1.组队 2.资料搜索 3.常用算法总结 4.论文撰写的…

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…

底软驱动 | Linux字符设备驱动开发基础

文章目录 知识整理--Linux字符设备驱动开发基础字符设备基础1从一个最简单的模块源码说起字符设备驱动工作原理字符设备驱动代码实践--给空模块添加驱动壳子应用程序如何调用驱动 字符设备基础2添加读写接口(应用和驱动之间的数据交换)驱动中如何操控硬件…

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

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

基于XC7VX690T FPGA+ZU15EG SOC的6U VPX总线实时信号处理平台(支持4路光纤)

6U VPX架构,符合VITA46规范板载高性能FPGA处理器:XC7VX690T-2FFG1927I板载1片高性能MPSOC:XCZU15EG-2FFVB1156I板载1片MCU,进行健康管理、时钟配置等V7 FPGA外挂2个FMC接口两片FPGA之间通过高速GTH进行互联 基于6U VPX总线架构的通…

模型剪枝中的预训练权重真的有用么?重新思考模型剪枝的价值二

在https://hpg123.blog.csdn.net/article/details/137705869中,根据论文提供的数据初步整理出了模型剪枝的信息,但不够精练,故而在此深入分析。 主要解决以下问题: 1、模型剪枝真的有用么? 2、什么样的方案模型剪枝效果…

Java中常用线程安全的集合

文章目录 常用线程安全的集合CopyWriteArrayListCopyOnWriteArraySetHashTableConcurrentHashMapJDK1.7JDK1.8 常用线程安全的集合 在多线程环境中,数据的一致性和线程的安全性是至关重要的。传统的集合类,如ArrayList、HashMap和HashSet,在…

Wikijs 部署教程

以下是一个 Wikijs 部署的简单教程,涵盖了使用 Docker 和直接安装两种方式: 方法一: 使用 Docker (推荐) Docker 是一个方便快捷的方式来部署 Wikijs,它可以避免许多手动配置步骤。 安装 Docker: 按照 https://docs.docker.com/…

使用Gitee仓库镜像管理功能实现Gitee与Github 双向同步

进入你所需要同步的仓库,点击「管理」->「镜像仓库管理」,点击「添加镜像」选项; 如果你的Gitee账号还没有绑定过 GitHub 帐号,先根据弹窗的提示绑定 GitHub 帐号; 添加镜像时候,在「镜像方向」中选择…

拥抱UniHttp,规范Http接口对接之旅

前言 如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化, 一旦封装不好系统将会变得难以维护&am…

【Wamp】局域网设备访问WampServer | 使用域名访问Wamp | Wamp配置HTTPS

局域网设备访问WampServer 参考&#xff1a;https://www.jianshu.com/p/d431a845e5cb 修改Apache的httpd.conf文件 D:\Academic\Wamp\program\bin\apache\apache2.4.54.2\conf\httpd.conf 搜索 Require local 和Require all denied&#xff0c;改为Require all granted <…

【Caffeine】⭐️SpringBoot 项目整合 Caffeine 实现本地缓存

目录 &#x1f378;前言 &#x1f37b;一、Caffeine &#x1f37a;二、项目实践 2.1 环境准备 2.2 项目搭建 2.3 接口测试 ​&#x1f49e;️三、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;缓存是提升系统性能的一个不可或缺的工具&#xff0c;通过缓存可以避免大…

[安洵杯 2019]easy_web1

知识点&#xff1a; 1.base64加解密 2.md5加解密 3.md5碰撞绕过强类型比较 4.Linux命令绕过 进入页面发现url地址中存在 img参数和一个cmd参数&#xff0c;img参数看上去像是base64编码&#xff0c;可以去尝试一下解码. 进行了两次base64解密得到3535352e706e67看着像16进制那么…

log4j2的日志框架(详细,springboot和异步日志的实现)

目录 log4j2的介绍 Log4j2的性能 SpringBoot中的使用Log4j2 log4j2的进阶--异步日志 AsyncAppender方式 AsyncLogger方式 log4j2的介绍 Apache Log4j 2是对Log4j的升级版&#xff0c;参考了logback的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带 来…

谷粒商城实战笔记-29~34-前端基础 - ES6

文章目录 零&#xff0c;安装Live Server插件一&#xff0c;创建前端工程1&#xff0c;创建工程2&#xff0c;在工程ES6中创建一个html文件 二&#xff0c;ES6 简介1&#xff0c;ES6 的历史 三&#xff0c;前端基础ES61&#xff0c;let 和 const1.1&#xff0c;let1.1.1 严格的…

蔚来汽车:拥抱TiDB,实现数据库性能与稳定性的飞跃

作者&#xff1a; Billdi表弟 原文来源&#xff1a; https://tidb.net/blog/449c3f5b 演讲嘉宾&#xff1a;吴记 蔚来汽车Tidb爱好者 整理编辑&#xff1a;黄漫绅&#xff08;表妹&#xff09;、李仲舒、吴记 本文来自 TiDB 社区合肥站走进蔚来汽车——来自吴记老师的演讲…

C++ | Leetcode C++题解之第232题用栈实现队列

题目&#xff1a; 题解&#xff1a; class MyQueue { private:stack<int> inStack, outStack;void in2out() {while (!inStack.empty()) {outStack.push(inStack.top());inStack.pop();}}public:MyQueue() {}void push(int x) {inStack.push(x);}int pop() {if (outStac…

QML 鼠标和键盘事件

学习目标&#xff1a;Qml 鼠标和键盘事件 学习内容 1、QML 鼠标事件处理QML 直接提供 MouseArea 来捕获鼠标事件&#xff0c;该操作必须配合Rectangle 获取指定区域内的鼠标事件, 2、QML 键盘事件处理&#xff0c;并且获取对OML直接通过键盘事件 Keys 监控键盘任意按键应的消…

PHP贵州旅游攻略系统-计算机毕业设计源码16663

目 录 第 1 章 引 言 1.1 选题背景与意义 1.2 国内外研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系…