Ubuntu 22.04手动编译Linux内核5.10全流程指南

发布时间:2026/11/5 11:02:10

Ubuntu 22.04手动编译Linux内核5.10全流程指南 1. 项目概述为什么要自己编译Linux内核在Ubuntu 22.04上编译内核听起来像是系统开发者的专属技能但实际上任何需要深度定制系统、优化硬件兼容性或研究内核机制的用户都可能需要这项能力。我最近因为需要为特定硬件RK3568芯片编译带自定义驱动的内核镜像走通了完整流程。实测发现官方仓库的内核版本5.15无法满足我的需求而手动编译5.10版本后成功解决了问题。编译内核的核心价值在于启用官方内核未包含的硬件驱动如某些嵌入式设备调整内核参数优化性能比如调整进程调度策略修复特定场景下的内核级BUG学习操作系统底层机制的最佳实践注意编译内核不会自动卸载现有内核新内核会作为可选启动项存在。如果编译失败仍可回退到原内核启动。2. 环境准备与依赖安装2.1 硬件与系统要求至少20GB空闲磁盘空间内核源码编译中间文件约占用15GB推荐8GB以上内存make -j8编译时内存消耗较大Ubuntu 22.04 LTS其他版本流程类似但包名可能有差异2.2 安装编译工具链执行以下命令安装必备工具sudo apt update sudo apt install -y build-essential libncurses-dev flex bison libssl-dev \ libelf-dev bc dwarves zstd git关键组件说明build-essential包含gcc、make等基础编译工具libncurses-devmenuconfig配置界面依赖dwarves替代旧版pahole工具用于BTF生成bc内核数学运算支持2.3 获取内核源码推荐两种源码获取方式方式1从Ubuntu官方仓库获取推荐新手apt source linux-image-$(uname -r)这会下载与当前系统版本完全匹配的内核源码兼容性最有保障。方式2从kernel.org获取主线内核wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.198.tar.xz tar -xvf linux-5.10.198.tar.xz主线内核可能需要额外打补丁才能完美适配Ubuntu。3. 内核配置与编译流程3.1 基础配置生成进入源码目录基于当前配置生成初始.configcd linux-5.10.198/ make olddefconfig这会继承当前系统的内核配置对新选项使用默认值。3.2 可视化配置调整如需自定义配置如添加驱动、修改参数make menuconfig关键配置区域Processor type and features → 选择正确的CPU架构Device Drivers → 启用/禁用特定硬件驱动Kernel hacking → 调试相关选项生产环境应关闭实操技巧按/键可以搜索配置项比如搜索EXT4快速定位文件系统配置。3.3 启动并行编译使用-j参数加速编译核心数×1.5make -j$(($(nproc)*3/2)) bindeb-pkg关键输出文件../linux-image-5.10.198_5.10.198-1_amd64.deb../linux-headers-5.10.198_5.10.198-1_amd64.deb编译时间参考i7-11800H CPU纯净构建约45分钟增量构建5-10分钟4. 安装与验证新内核4.1 安装生成的deb包sudo dpkg -i ../linux-image-5.10.198_5.10.198-1_amd64.deb sudo dpkg -i ../linux-headers-5.10.198_5.10.198-1_amd64.deb4.2 更新GRUB引导sudo update-grub4.3 验证新内核重启后执行uname -r应显示5.10.198等新内核版本号。5. 常见问题与解决方案5.1 编译时报错BTF: .tmp_vmlinux.btf: No such file原因dwarves版本不兼容 解决sudo apt install dwarves make clean 重新编译5.2 新内核启动卡死典型排查步骤在GRUB界面选择旧内核启动查看启动日志journalctl -b -1 | grep -i error常见原因缺少关键驱动如文件系统模块ACPI配置冲突可尝试在GRUB参数添加acpioff5.3 模块签名验证失败现象加载自定义模块时提示module verification failed 解决# 临时方案不安全 sudo insmod --force module.ko # 永久方案 在menuconfig中关闭 - Enable loadable module support - Module signature verification6. 高级技巧与优化建议6.1 增量编译加速修改配置后只需make -j$(nproc) make bindeb-pkg6.2 生成适用于嵌入式设备的镜像针对ARM架构如RK3568make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- defconfig make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc) Image dtbs6.3 内核调试技巧打印调试信息printk(KERN_DEBUG Debug message: %s\n, var);启动参数添加loglevel8显示所有内核日志使用kgdb进行源码级调试7. 内核维护与清理7.1 卸载旧内核查看已安装内核dpkg --list | grep linux-image卸载特定版本sudo apt purge linux-image-5.15.0-76-generic7.2 清理编译产物完全清理需要重新编译make mrproper保留配置的清理make clean我在RK3568开发板上实际编译时发现官方提供的5.10内核配置缺少必要的USB驱动支持。通过menuconfig启用CONFIG_USB_CONFIGFS和CONFIG_USB_LIBCOMPOSITE后成功实现了USB设备模式功能。这种深度定制正是手动编译内核的最大价值所在。
延伸阅读

更多相关文章

2026/11/5 9:05:41

QML Label 完整用法与 Text 组件选型

目录什么时候应该用 LabelLabel 基础用法演示代码关键逻辑解析适用场景注意点Label 内边距控制演示代码关键逻辑解析适用场景注意点Label 背景支持演示代码关键逻辑解析适用场景注意点Text vs Label 对比演示代码关键逻辑解析选型建议运行验证扩展复用方向小结QML 里显示文本最…

2026/10/25 7:37:06

小程序商城开发报价多少?订单、会员和营销功能费用对比

小程序商城开发报价多少?订单、会员和营销功能费用对比小程序商城开发报价多少,关键看它只是商品展示,还是要跑通下单、支付、会员、优惠券、拼团、秒杀、分销和售后。商城和普通展示小程序不同,交易链路越完整,预算越…

2026/11/1 11:18:59

Sherlock终极进化:从脚本到AI智能搜索平台的架构设计与实现

1. 项目概述:从脚本工具到AI智能搜索平台的蜕变如果你是一名开发者、安全研究员,或者只是对网络信息聚合感兴趣的技术爱好者,那么“Sherlock”这个名字对你来说可能并不陌生。它最初是一个用Python编写的、在GitHub上开源的社交媒体用户名搜索…

2026/11/5 10:43:56

工业测温方案解析:ADS122U04与STM32F042K6的UART高精度RTD采集设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:43:56

STM32L031+ADS122U04:UART接口24位ADC实现PT100高精度温度采集

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:43:55

基于ADS122U04与MK24的HVAC高精度温度采集系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:38:55

Univer开源Web Office引擎:Canvas渲染与协同编辑实战解析

第一次看到Univer这个项目名字的时候,我下意识以为是哪个海外团队用“University”做的教育类产品。直到我翻完它的仓库和在线Demo,才发现自己差点错过一个好东西——这是一个把“在线电子表格、文档、幻灯片”全部做成开源引擎的Web Office项目&#xf…

2026/11/5 10:38:55

Foxmail数字签名与加密配置全指南:S/MIME证书实战落地

1. 邮件签名与加密不是“加个水印”或“点个锁图标”那么简单很多人第一次在Foxmail里找“签名”功能,点开设置就以为万事大吉——填上姓名、电话、公司logo,保存退出,邮件发出去带个固定落款,就觉得“搞定”。等真遇到客户问“你…

2026/11/5 10:38:55

LVS负载均衡优化:FWM标记与持久化服务实践

1. 为什么需要优化LVS调度?在企业级负载均衡场景中,Linux Virtual Server(LVS)作为四层负载均衡的经典解决方案,其性能表现直接影响着整个业务系统的稳定性。但在实际生产环境中,我们常常会遇到两个典型问题…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑