linux内核裁剪

从内核官网下载源码,使用Git克隆源码仓库:git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

内核配置裁剪

默认配置:

bash 复制代码
make ARCH=arm defconfig

精简内核功能

精简内核功能

bash 复制代码
1. make ARCH=arm menuconfig
[
    ARCH=arm make O=out p***_debug_defconfig
    ARCH=arm make O=out menuconfig
	ARCH=arm64 make O=out i***_defconfig
	ARCH=arm64 make O=out menuconfig
]

主要裁剪选项:

General setup:

禁用CONFIG_KERNEL_XZ 以外的压缩选项。

禁用CONFIG_DEBUG_INFO(调试信息)。

Processor type and features:根据目标平台选择正确的处理器类型。

禁用不必要的CPU特性(如CONFIG_X86_EXTENDED_PLATFORM)。

Device Drivers:

移除不需要的设备驱动(如未使用的网卡、USB设备驱动)。

File systems:

仅保留需要的文件系统(如ext4、squashfs)。

Networking support:

移除不需要的网络协议(如IPv6、IPX)。

Kernel hacking:

禁用所有调试选项(如CONFIG_DEBUG_KERNEL)。

模块化裁剪

去掉不用的ko,如:rm -rf drivers/net/wireless/

文件系统裁剪(存储和启动项)

存储:

选择轻量级文件系统,如使用initramfs或squashfs作为根文件系统。

移除不必要的工具,如移除bash,使用busybox替代。

启动项:不用的服务关掉。

内存和存储优化

通过裁剪和压缩减少内核映像大小。如使用CONFIG_KERNEL_XZ 压缩内核。

减少内核的内存占用。如调整内存分配策略(如CONFIG_SLOB)。

编译

make ARCH=arm zImage #编译内核映像

make ARCH=arm dtbs #编译设备树

make ARCH=arm modules #编译模块

启动测试

使用 Bootloader 加载内核并测试功能。

tftp 0x80008000 zImage

bootm 0x80008000

内核体积:从几十MB减少到几MB。

内存占用:从几百MB减少到几十MB。

启动速度:从几秒减少到几百毫秒。

相关推荐
Roc.Chang几秒前
Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
linux·ubuntu·vlc·媒体播放
松涛和鸣28 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂1 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro1 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅2 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华2 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
Yeats_Liao2 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
爱吃生蚝的于勒3 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森3 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
文艺理科生Owen3 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx