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

为什么要自己编译内核

优点

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

缺点

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

我的感受是

过程

下载

网站下载linux内核源码[^1] [^2],并解压,进入源码目录;

linux内核:https://www.kernel.org/

清华镜像:https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/

安装依赖

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

shell 复制代码
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]
shell 复制代码
cp /xxx/dppve.config .config
  1. 精简(可选)
    先让系统尽可能多地加载模块,使用工具自动保留已加载的模块[^5] [^6],可以精简掉巨量不需要的模块和驱动;

尤其是驱动,不精简时执行make可以发现,make过程里的大部分时间都是在编译drivers开头的文件;

shell 复制代码
make localmodconfig
  1. 手动调整配置(可选)
shell 复制代码
make menuconfig
  1. 使用ccache加速多次编译(可选)
    安装配置ccache[^7] [^8];
shell 复制代码
sudo apt-get install ccache
export CC="ccache gcc"
export CXX="ccache g++" 

编译

这个步骤很慢,网友讲可能需要1-3个小时;

可能是我直接在实体机上编译的原因,我第一次编译大约花费25分钟;

经过localmodconfig精简、ccache后,后续编译时间一般在2-8分钟,感觉很快;

shell 复制代码
make -j$(nproc)

打包deb

shell 复制代码
make bindeb-pkg

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

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

安装

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

shell 复制代码
# 查看
ls -lh ../linux-*.deb
# 安装
dpkg -i ../linux-*.deb

启用

可使用grub-customizer管理grub配置,更换内核加载
列表

设置

References

\^1\]. The Linux kernel archives. (n.d.). \[\^2\]. 8.10. 编译内核. (n.d.). \[\^3\]. kernel_config · AtomGit_开放原子开源基金会代码托管平台. (n.d.). \[\^4\]. Kernelconfig.io. (n.d.). \[\^5\]. Linux 内核编译 ------ make localmodconfig 简化内核配置流程-CSDN博客. (n.d.). \[\^6\]. 精简LINUX内核配置及快速编译的方法汇总_linux 最小配置 快速编译-CSDN博客. (n.d.). \[\^7\]. 使用 ccache 加速内核编译. (n.d.). \[\^8\]. Linux 5.10.20 上使用ccache加快内核编译速度(安装配置及使用方法)_kernel-5.10编译慢-CSDN博客. (n.d.). \[\^9\]. 查看、安装、卸载内核-论坛-深度科技. (n.d.).

相关推荐
简单中的复杂2 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro3 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅3 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华3 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒4 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森4 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud4 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.4 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
好好学习天天向上~~5 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹5 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic