第7课: 很好,这一课是 Yocto 学习中一个重要的里程碑。
按照我们前面的路线,你已经完成了:
✅ 建立 Yocto 编译环境
✅ 编译 core-image-minimal
✅ Raspberry Pi 2 启动成功
✅ Dropbear SSH
✅ 固定 IP
✅ 自己写 recipe
✅ do_install
✅ systemd service
✅ 自己建立 meta-myproduct
✅ image 组成
✅ package 与依赖
下面进入:
第7课:kernel menuconfig —— 掌握 Kernel 定制
摘要: 本课深入讲解如何在 Yocto 项目中定制 Linux Kernel 配置。主要内容包括:1) 理解 Kernel 在 Yocto 中的位置和提供者;2) 使用 bitbake virtual/kernel -c menuconfig 进入图形化配置界面;3) 修改配置(如 LOCALVERSION)并理解其临时性;4) 了解 Kernel 配置的真正来源(BSP defconfig → 默认配置 → Fragments → 最终 .config);5) 掌握永久保存配置的正确方法(savedefconfig → 放入 layer → bbappend 引用);6) 推荐的关键命令和实践步骤。通过本课学习,你将掌握 Yocto 中 Kernel 配置的完整工作流,避免临时修改丢失,实现配置的版本化管理。
目标不是学 Linux Kernel 开发,而是学会 Yocto 如何修改 Kernel 配置。
本课目标
完成以后,你应该能够回答:
Kernel 的 .config 从哪里来的?
menuconfig 修改后如何永久保存?
如何让 Yocto 每次都自动使用你的 Kernel 配置?
第一部分 认识 Kernel 在 Yocto 中的位置
先看看当前使用的是哪个 kernel : bitbake -e virtual/kernel | grep ^PN=
一般 Raspberry Pi 会看到 : PN=“linux-raspberrypi”
再看看 Provider : bitbake -e virtual/kernel | grep ^PREFERRED_PROVIDER_virtual/kernel
应该类似 : linux-raspberrypi
说明:
virtual/kernel
▼
linux-raspberrypi.bb
▼
下载 Raspberry Pi Linux Kernel
第二部分 menuconfig
运行: bitbake virtual/kernel -c menuconfig
第一次会编译 kernel。
最后出现: Linux Kernel Configuration
就是经典的
Device Drivers
Filesystem
Networking
USB
那个菜单。
第三部分 修改一个配置
例如:
进入图形菜单后:
General setup --->
Local version - append to kernel release
默认可能是:()
或者(-yocto-standard)
把它改成:
-mytest保存退出。
这时并没有修改 recipe。
只是修改了:.config
也就是说:
~/yocto/build-rpi2/tmp/work/raspberrypi2-poky-linux-gnueabi/linux-raspberrypi/6.6.63+git/linux-raspberrypi2-standard-build/.config
这是临时文件。
如果:bitbake -c clean virtual/kernel
它就没了。
所以:
menuconfig 默认不会永久保存。
第四部分 查看配置
第五部分 编译 Kernel
退出后:bitbake virtual/kernel
Yocto 会重新编译 kernel。
如果:bitbake myproduct-image
整个 image 也会自动包含新的 kernel。
第六部分 Kernel 配置来源
很多初学者以为:
kernel
|
---> .config
其实不是。
真正流程:
BSP defconfig
▼
kernel 默认配置
▼
Fragments
▼
最终 .config
▼
编译
因此:
.config 是自动生成的,而不是源码仓库中的固定文件。
第七部分 为什么 menuconfig 不推荐直接使用
因为:tmp/work/
是临时目录。
例如:
clean
cleanall
重新编译
升级kernel
都会丢失修改。
正确做法是:
menuconfig
▼
savedefconfig
▼
生成 defconfig
▼
放入自己的 layer
▼
bbappend 引用
这才符合 Yocto 的管理方式。
第八部分 推荐掌握的几个命令
bitbake virtual/kernel -c menuconfig
修改 Kernel 配置 : bitbake virtual/kernel -c devshell
进入 Kernel 构建目录 : bitbake virtual/kernel
重新编译 Kernel : bitbake virtual/kernel -c clean
清除 Kernel 构建结果 : bitbake myproduct-image
生成包含新 Kernel 的镜像。
本课实践建议
建议你做以下几个实验:
1.运行 bitbake virtual/kernel -c menuconfig。
2.将 CONFIG_LOCALVERSION 设置为 -mytest。
3.保存退出。
4.编译 virtual/kernel。
5.生成 myproduct-image。
6.启动 Raspberry Pi,确认新内核正常运行。

610

被折叠的 条评论
为什么被折叠?



