linux 编译内核,换内核流程和方法
1:
先找一个合适版本的内核,下载,解压到系统中的任意一个目录
这个内核版本,如果要绝对稳定或者安全,那么最好是和当前系统的内核大、中版本相同,
如,
我的系统版本如果为 5.15.38
那么我最好是换成相近的系列,如 5.15.123
尽量别上 6
否则可能出问题
假设解压到的目录就为 ~/5.15.123/
2:
第一步内核下载完,之后,安装一系列的环境和支持库
具体来说是:
1 | sudo apt-get update<br> sudo apt-get install make <br> sudo apt-get install gcc g++ libncurses5-dev build-essential kernel-package libssl-dev libc6-dev bin86 flex bison qttools5-dev libelf-dev |
对,这就差不多了。
安装这些,可能要点时间,因为包太多,也很大,但是不怕,应该不会有错误。
3:
安装完环境和支持库
开始处理配置文件,
先进入内核代码目录,然后从当前系统拷贝一个配置文件到当前目录,目的是为了给编译过程一个和当前系统相近的配置
命令
1 | cp - v /boot/config- $( uname -r) .config |
拷贝过来之后,当前目录下就有了个配置文件,叫做 .config 是隐藏的。
确认方式 1 显示隐藏文件,2 用命令 ls -a .config 可以看到文件存在
之后输入
1 | make menuconfig |
用途是配置加载生成配置文件。
界面挺好看的,但是其实我们都不用管,直接 exit 就行了
然后用 gedit 打开 .config 文件,手动修改配置,先修改如下
1 2 3 | CONFIG_SYSTEM_TRUSTED_KEYS= '' CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=2048 CONFIG_SYSTEM_REVOCATION_KEYS= "" |
这三条配置是系统证书相关的配置,其实我们用不着
然后关闭一条配置如下
1 | CONFIG_DEBUG_INFO_BTF=n |
如有则关,没有不加
最后注释调一条配置
1 | #CONFIG_X86_X32=y |
这里不用担心 x86 的注释了,是不是就只生成arm 了,其实 上面 x64 部分还开着呢
4:
配置文件生成了之后,这里剩下的就是开始编译了
命令如下
1 | make -j$(nproc) |
这是一条统一编译命令,编译所有内容,双核情况下,预计需要编译2小时,四核时间砍半,单核时间翻倍
如果不想一步到位,那么可以选择单独编译
1 2 3 | make -j$(nproc) bzImage make -j$(nproc) modules |
我没单独编译过,所以,不知道效果
编译完成之后,能看到编译命令正确结束,我这编完了,看不到了
5:
最后,就是替换系统模块,
方法就两条命令
1 2 3 | make modules_install make install |
两条命令都不能少,并且都需要 sudu 权限,就是 root 权限,否则行为未授权。
第一条安装驱动,第二条安装内核,
很多教程里面我看就只让执行第二条命令,结果引导时系统起不来,原因就是和内核匹配的驱动不在,
所以,先安装驱动,后安装内核
6:
前面五步都处理完,
直接 reboot 就好了,不会有问题,内核重编完成。
后续文件不要清理,自己改内核的时候直接改,然后直接重编,重装,没有问题。
中间文件太多,也没办法,
如果清理了的话,下次重编还要2 小时。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2019-07-30 听了几段《双投唐》
2015-07-30 IOCP的具体实现过程