Yocto boot分区与根文件系统下/boot目录的区别及相关问题咨询
/boot目录的作用与必要性
- 如果你使用的设备 bootloader(如U-Boot)是直接从独立boot分区读取.itb、内核、设备树等启动文件,根文件系统里的/boot目录不是运行时必需项。
- 你看到的两边文件内容一致是默认构建逻辑导致的:独立boot分区和根文件系统/boot目录下的文件,都是从内核编译的输出产物中直接拷贝的,所以默认完全相同。
生成/boot目录的组件与调用场景
该目录由Yocto的kernel.bbclass、kernel-devicetree.bbclass等内核相关构建类生成,默认会把内核相关的启动文件安装到根文件系统的/boot路径下,主要适配两个场景:
- 无独立boot分区的设备,bootloader直接读取根文件系统/boot路径下的文件启动
- 运行态内核升级场景,无需额外挂载boot分区即可直接更新启动文件
关闭根文件系统/boot目录生成的配置方法
你可以在自定义层的内核配方,或者构建配置local.conf中添加以下配置,删除根文件系统下的/boot目录:
# 调整内核镜像安装临时路径避免生成/boot KERNEL_IMAGEDEST = "/tmp" do_install:append:pn-linux-yocto() { rm -rf ${D}/boot } # 如果启用了bootimg相关配置可同步移除 PACKAGECONFIG:remove:pn-linux-yocto = "bootimg"
配置生效后重新构建镜像,根文件系统下就不会再生成/boot目录,你可以直接把独立boot分区挂载到/boot路径使用。
内容的提问来源于stack exchange,提问作者gcb
相关产品推荐
相关产品推荐

