论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
运维.售后
›
运维.售后
›
一文搞懂Linux kernel编译步骤
一文搞懂Linux kernel编译步骤
圆咕噜咕噜
金牌会员
|
昨天 00:28
|
显示全部楼层
|
阅读模式
楼主
主题
840
|
帖子
840
|
积分
2520
一、前言
什么是Linux的内核编译呢?简单来说,Linux内核编译是一个将内核源代码转换成可在特定的硬件架构上运行的二进制文件的过程。通过编译内核,我们可以根据自己的需求和爱好对内核进行定制和优化,以满足特定的应用场景。下文则是Linux内核编译的详细流程:
注:
在ubuntu20.04.3 LTS中以kernel 6.11.6为编译版本
二、 内核编译流程
2.1 准备工作
1.安装必要的编译工具
安装gcc编译器、make工具、ncurses库(用于make menuconfig)等编译工具
sudo apt install make gcc git libncurses5-dev
sudo apt install fakeroot build-essential xz-utils libssl-dev bc flex libelf-dev bison ccache zstd dwarves(解决btf生成问题)
复制代码
2.获取内核源代码
可以从官方网站或源代码堆栈中获取Linux内核的源代码,我们可以选择下载最新版本的源代码,或者根据我们的需求选择特定版本的源代码,可以通过git clone或者直接下载来获取内核源代码。
官网地点: https://kernel.org/
3.解压内核源代码
如果下载的是压缩包,必要使用相应的命令将压缩包解压到你必要的目录。
2.2 设置内核
4.复制默认设置
将默认的内核设置文件复制到我们下载好的内核源代码的目录中,并重命名为.config文件。
cp /boot/config-$(uname -r) .config
复制代码
5.修改默认设置
打开config
修改 CONFIG_SYSTEM_TRUSTED_KEYS,将其赋空值。
vim .config
CONFIG_SYSTEM_TRUSTED_KEYS=""
复制代码
6.打开内核设置界面
通过make menuconfig命令在终端中打开内核设置界面。在设置界面中,可以选择启用或禁用特定的功能、模块和设备驱动程序。还可以调整内核的参数和选项,以满足我们特定的需求。
make menuconfig
复制代码
7.保持设置
设置完成后,生存并退出菜单。这将天生一个包含所选设置信息的.config文件。
2.3 编译内核
8.开始编译
在内核源码目录中运行make命令开始编译内核。这个过程必要一段时间,具体取决于体系设置和计算机性能。
make -j8 //-j代表CPU的个数
//查看CPU的个数
screenfetch
复制代码
9.安装内核模块
编译完成后,将编译天生的内核模块安装到体系中。
sudo make modules_install //可能有问题,如果有问题,则执行下面的语句
sudo make INSTALL_MOD_STRIP=1 modules_install -j8 (INSTALL_MOD_STRIP=1一定要加上,否则会有initrd.img-xxx文件太大的问题,导致开机一直卡在加载映像到磁盘,无法开机)
复制代码
10.安装内核镜像
运行make install命令将编译天生的内核镜像(如vmlinuz)和initramfs或initrd 镜像(如果必要的话)复制到/boot目录下。
sudo make install
复制代码
[可选] 检查一下/boot/initrd.img-xxx大小是否太大,正常一样寻常不超过100M,如果太大就执行(make INSTALL_MOD_STRIP=1 modules_install -j8)的命令,然后再执行:
mkinitramfs /lib/modules/6.11.xxxx/ -o /boot/initrd.img-6.11xxx
复制代码
> 注意: 当我们编译并安装了新的内核后,通常需要为新的内核创建一个匹配的initrd映像文件。这是因为新的内核可能需要不同的驱动程序和配置来访问存储介质和挂载根文件系统。在这种情况下,我们就可以使用mkinitramfs命令来创建新的initrd映像文件,并确保它与新的内核版本相匹配。
复制代码
2.4 验证和测试
11.重新启动计算机
选择新编译的内核启动。
12.验证内核编译是否乐成
使用uname-a
命令查察当前体系的信息,确认内核名称、版本号和发布日期是否正确。
uname-a
复制代码
三、留意事项
备份
在进行内核编译之前,建议将备份当前的体系和内核设置,以防万一编译失败或出现其他问题的时候我们可以及时回退。
依赖关系
确保体系设置和硬件支持所选择的内核选项,在编译过程中,如果碰到依赖关系错误,可以检查并安装缺失的依赖包。这个一样寻常我们将编译错误复制在欣赏器中查询一样寻常就可以找到缺失的依赖包了。
四、具体内核编译问题
4.1 编译内核报错:No rule to make target ‘debian/canonical-certs.pem‘
报错描述
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
make: *** [Makefile:1053: certs] Error 2
复制代码
问题原因
缺少证书
问题解决
方法一:
打开.config文件注释掉这一行或将其赋空值
CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/benh@debian.org.cert.pem"
复制代码
方法二:
执行完下面的语句后make clean,然后重新编译
scripts/config --disable SYSTEM_TRUSTED_KEYS
复制代码
后续碰到的一些实际错误也会在下面接着进行增补,大家感爱好和以关注加收藏。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
圆咕噜咕噜
金牌会员
这个人很懒什么都没写!
楼主热帖
【第86题】JAVA高级技术-网络编程5(断 ...
通过Go语言创建CA与签发证书 ...
09、openfoam案例之圆柱绕流
CSRF漏洞详细解读
【python二级-练习题】
超融合市场,谁能当老大?
安全攻防丨反序列化漏洞的实操演练 ...
SpringCloud五大常用组件
内网渗透之Windows认证(二) ...
JAVA JDK最详细的安装教程--你只需要看 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表