轻松学习yocto:17-menuconfig

第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,确认新内核正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值