banner
NEWS LETTER

嵌入式 Linux 系列 25:内核配置、模块和裁剪

Scroll down

内核配置决定了系统支持哪些驱动、文件系统、网络协议和调试能力。嵌入式 Linux 里,内核不是越全越好,也不是越小越好,而是要和硬件、rootfs、调试需求匹配。

一、配置入口

Buildroot 中:

1
make linux-menuconfig

内核源码中:

1
make menuconfig

保存配置:

1
make savedefconfig

项目要保存最终配置,不要只保存编译后的镜像。

二、内建还是模块

内建:

1
[*]

模块:

1
<M>

内建适合:

  • 启动早期必须使用的驱动。
  • rootfs 文件系统。
  • 存储控制器。
  • 控制台串口。

模块适合:

  • 可选外设。
  • 调试驱动。
  • 不影响启动的功能。

如果 rootfs 挂载依赖某驱动,这个驱动不能只做模块,除非 initramfs 能先加载它。

三、常见必选项

根据项目选择:

  • devtmpfs。
  • procfs。
  • sysfs。
  • ext4、squashfs、ubifs。
  • 网络协议栈。
  • 对应存储控制器。
  • 串口 console。
  • watchdog。
  • I2C、SPI、GPIO。

精简系统也要保留基本调试能力,否则现场问题很难定位。

四、模块加载

查看模块:

1
lsmod

加载:

1
2
insmod my_driver.ko
modprobe my_driver

精简 rootfs 不一定有 modprobe 和模块依赖文件。此时 insmod 更常见。

模块路径:

1
/lib/modules/$(uname -r)/

内核版本和模块必须匹配。

五、裁剪原则

裁剪前先确认:

  • 硬件用不到。
  • rootfs 不依赖。
  • 调试不需要。
  • 量产不需要。

不要盲目删网络、文件系统和调试功能。删错后排查成本会高于节省的空间。

六、验收清单

内核改完后测试:

  • 能启动。
  • rootfs 能挂载。
  • 串口有日志。
  • 网络可用。
  • data 分区可读写。
  • watchdog 可用。
  • 关键外设 probe 成功。

内核配置变更必须配合启动日志和功能测试,不要只看编译是否通过。

其他文章
目录导航 置顶
  1. 1. 一、配置入口
  2. 2. 二、内建还是模块
  3. 3. 三、常见必选项
  4. 4. 四、模块加载
  5. 5. 五、裁剪原则
  6. 6. 六、验收清单
请输入关键词进行搜索