Linux 怎么在嵌入式 Linux 系统中精简与裁剪内核

大晨小哥_1745

大晨小哥_1745

2026-08-18

713人浏览

原创

嵌入式linux内核裁剪核心是“只留必需,删尽冗余”,需围绕硬件平台与应用需求精准取舍:明确soc型号、必需驱动、功能依赖及资源约束;推荐用makelocalmodconfig或make allnoconfig起步;重点裁剪非目标硬件驱动、冗余文件系统、ipv6等网络协议、kernel hacking调试项;最后通过编译验证、板级测试和dmesg分析确保功能完整。

linux 怎么在嵌入式 linux 系统中精简与裁剪内核

嵌入式 Linux 系统中精简与裁剪内核,核心是“只留必需,删尽冗余”——不是盲目删减,而是围绕硬件平台和应用需求做精准取舍。裁剪后内核体积可从几十 MB 压缩到几 MB,启动时间缩短至秒级,内存占用显著降低,系统更稳定、更实时。

明确裁剪基线:先搞清“要什么、不要什么”

动手前必须厘清四个关键点:

  • 目标硬件平台:确认 SoC 型号(如 Hi3516DV300、RK3399、高通 QCS610)、板级外设(如 GMAC 网卡、SPI Flash、MIPI 摄像头接口);
  • 必需驱动:仅保留与实际硬件匹配的驱动,比如 ARM 架构支持、对应芯片的 GPIO/UART/I2C 控制器、存储控制器(eMMC/SD)、网络 PHY 驱动;
  • 核心功能依赖:应用是否需要 ext4 文件系统、RTSP 协议栈、POSIX 线程、RTC 支持?这些决定是否启用 CONFIG_EXT4_FS、CONFIG_IP_NF_IPTABLES、CONFIG_POSIX_TIMERS 等;
  • 资源硬约束:Flash 容量(如 32MB)、RAM(如 256MB)、最大允许启动时间(如 ≤3 秒)——这些直接限制可保留模块的总量。

高效生成最小配置:避免从零手动勾选

推荐两种快速收敛配置的方法:

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载
  • makelocalmodconfig:在已有可运行的目标系统上执行,它会读取 /proc/modules/sys,自动生成仅包含当前已加载模块的 .config(模块设为 m,其余设为 n),非常适合作为裁剪起点;
  • make allnoconfig + 手动启用:适合全新平台或极致精简场景,先禁用全部选项,再按需逐项打开 CPU 架构、基础总线(ARM64/AMBA/PCI)、核心子系统(MMU、IRQ、timer)等刚性依赖项。

进入 make menuconfig 后,按 / 键搜索关键词(如 CONFIG_USBwifiCONFIG_BTRFS_FS),可快速定位并关闭无关条目。

关键裁剪方向:聚焦高频冗余模块

以下几类是嵌入式场景中最常被过度启用、也最容易安全裁减的部分:

  • 硬件驱动:禁用所有非目标平台的架构支持(x86、RISC-V)、淘汰设备驱动(floppy、parallel port、IDE)、非本板网卡/声卡/显卡驱动;
  • 文件系统:只保留 ext4(通用)或 squashfs(只读固件),移除 Btrfs、XFS、NTFS、FAT32(除非 SD 卡必须)等;
  • 网络协议与子系统:关闭 IPv6、Amateur Radio、IrDA、DECnet;Netfilter 仅启用 iptable_filter 和必要 conntrack 模块;
  • 调试与开发功能:关闭整个 Kernel hacking 菜单(CONFIG_DEBUG_KERNEL=y)、禁用 kdump、ftrace、kgdb、printk 动态控制等;
  • 虚拟化与安全扩展:如 KVM、Xen、IMA/EVM、SMAP/SMEP(除非产品明确要求)一律设为 n

验证与固化:确保裁剪不破坏功能

裁剪不是终点,验证才是关键:

  • 编译后用 size vmlinux 查看静态内核体积,用 lsmod 对比模块加载情况;
  • 烧录到目标板,重点验证:能否正常挂载根文件系统、网络是否连通、外设(如摄像头、串口)是否可用、系统是否在规定时间内完成启动;
  • 若出现 panic 或驱动缺失,回查 dmesg 输出,定位缺失的 CONFIG_XXX 选项,针对性启用(而非全开);
  • 最终将稳定配置保存为 arch/arm64/configs/your_board_defconfig,便于后续复用和版本管理。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3550

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3093

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2133

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5070

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4742

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2873

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2365

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2579

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习