Yocto项目实战教程‑第6章‑Poky‑镜像菜谱‑机器配置文件‑发行版配置文件‑QEMU
🔍
B站相应的视频教程:
📌 Yocto项目实战教程-第6章-Poky参考发行版
记得三连,标为原始粉丝,感谢大神支持。
在 Yocto 项目中,Poky 既是参考发行版,也是学习和实践的核心起点。作为 OpenEmbedded 构建系统的示例发行版,Poky 提供了完整的层(layers)、配置文件、镜像菜谱和 QEMU 支持,实现了从环境搭建到镜像仿真的一体化流程。本章将围绕 Poky 的发行版特性、镜像菜谱、机器配置文件、发行版配置文件以及 QEMU 仿真,进行系统、深入且清晰的讲解。

6.1 Poky 发行版概述
6.1.1 发行版与特性
Poky 是 Yocto 项目官方提供的参考发行版(Reference Distribution),位于 poky/ 目录下,集成了最常用的层和配置。其核心特性包括:
- 层模型示例:内置 meta-poky、meta-yocto-bsp、meta-yocto等示例层,展示层结构与依赖关系;
- 默认镜像菜谱:如 core-image-minimal、core-image-sato等,覆盖最轻量到图形环境的典型场景;
- 标准化配置:提供示范性的 bblayers.conf、local.conf、poky.conf,帮助快速上手;
- 自动化脚本:oe-init-build-env脚本即可初始化构建环境;
- QEMU 支持:内置多种 QEMU 机器(qemux86、qemuarm等)快速验证镜像。
6.1.2 源代码接口与核心文件
- poky/README:项目介绍与快速上手说明;
- poky/meta-poky/conf/layer.conf:定义层名(- LAYERSERIES_COMPAT_poky)、BBPATH、BBFILES 等;
- poky/meta-poky/conf/machine/:包含示例机器配置文件,如- qemux86.conf;
- poky/meta-poky/conf/distro/poky.conf:发行版策略、包管理器、默认特性定义;
- poky/scripts/oe-init-build-env:环境初始化脚本,自动设置- OECORE_NATIVE_SYSROOT、- TEMPLATECONF等变量。
6.2 镜像菜谱
6.2.1 镜像菜谱详解
镜像菜谱(Image Recipe)以 .bb 为后缀,定义了最终镜像中要包含的包组与功能。例如,core-image-minimal.bb 位于 meta/recipes-core/images/,核心内容如下:
SUMMARY = "Minimal image for testing"
LICENSE = "MIT"
IMAGE_INSTALL = "packagegroup-core-boot"
IMAGE_FEATURES += "ssh-server-openssh"
INHERIT += "core-image"
- IMAGE_INSTALL:指定镜像中安装的包;
- IMAGE_FEATURES:功能特性,如- debug-tweaks、- tools-sdk;
- INHERIT core-image:继承基本镜像类,自动生成打包和构建任务。
6.2.2 镜像菜谱语法
- 变量定义: - IMAGE_INSTALL、- IMAGE_INSTALL_append:安装包列表;
- IMAGE_FSTYPES:输出镜像格式,如- wic、- tar.gz;
 
- 继承机制:inherit core-image或inherit image,调用class中的共通逻辑;
- Image Post-Processing:支持 ROOTFS_POSTPROCESS_COMMAND,可在根文件系统生成后执行自定义操作。
6.2.3 镜像类
- core-image.bbclass:提供基础镜像任务;
- image.bbclass:定义- do_rootfs、- do_build_image等;
- wic.bbclass:支持使用 WIC 工具创建分区镜像。
6.2.4 包组菜谱
包组(Packagegroup)以 packagegroup-*.bb 命名,方便将相关包组合到镜像中,典型示例:
SUMMARY = "Packagegroup for core boot"
RDEPENDS_${PN} = "busybox dropbear-openssh"
RDEPENDS_${PN} += "packagegroup-base-extended"
使用包组可以简化镜像菜谱中的 IMAGE_INSTALL 声明,提高模块化和可维护性。
6.3 机器配置文件
6.3.1 Poky 中的机器配置文件
机器配置文件位于 meta-poky/conf/machine/,每个 .conf 定义对应硬件平台的参数。例如 qemux86.conf 包含:
MACHINE = "qemux86"
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
DISTRO_FEATURES += "x11 wayland"
KERNEL_IMAGETYPE = "bzImage"
6.3.2 机器特性与实现
- MACHINE:定义当前目标机器名称;
- PREFERRED_PROVIDER:指定关键组件(如内核、U-Boot)的首选提供者;
- DISTRO_FEATURES:启用图形、音频等功能;
- SDKMACHINE、QEMU_*参数:影响交叉 SDK 和仿真配置。
6.3.3 选择目标设备
在 local.conf 中设置:
MACHINE ?= "qemux86"
或:
$ source oe-init-build-env build
$ MACHINE=imx8mp-lpddr4-ocean bitbake core-image-minimal
通过 MACHINE 变量,可灵活切换不同机器配置。
6.4 发行版配置文件
6.4.1 指定发行版配置文件
发行版配置位于 meta-poky/conf/distro/。在 local.conf 中,通过 DISTRO 变量引用:
DISTRO ?= "poky"
6.4.2 Poky 中的发行版配置文件
poky.conf 示例如下:
require conf/distro/include/poky-defaults.incDISTRO_NAME = "Poky (Yocto Project Reference Distro)"
LICENSE_FLAGS_WHITELIST = "commercial"
INHERIT += "versioned_static"
该文件将通用默认值包含进来,并定义了发行版名称及特殊特性。
6.4.3 发行版特性与实现
- 包管理器:支持 rpm、deb、ipk;
- LICENSE 管理:通过 LICENSE_FLAGS控制商业许可;
- 默认时间服务:可在 poky.conf中配置EXTRA_IMAGE_FEATURES += "ssh-server-dropbear"等。
6.5 QEMU 仿真
6.5.1 QEMU 简介
QEMU 是一款开源机器仿真工具,Yocto 提供对常见架构(x86、ARM、MIPS)的支持,方便在宿主机上快速验证镜像功能。
6.5.2 设置 QEMU 运行环境
在 local.conf 中启用:
IMAGE_FSTYPES += "tar.bz2"
# 支持 QEMU 仿真
SDKMACHINE ?= "x86_64"
构建完镜像后,运行:
$ runqemu qemux86
该命令自动启动 QEMU 实例,并加载生成的根文件系统。
6.5.3 runqemu 脚本
poky/scripts/runqemu 提供多种选项:
runqemu [MACHINE] [IMAGE] [CMDLINE]
- MACHINE:仿真平台,如- qemux86、- qemuarm;
- IMAGE:指定镜像类型,如- core-image-minimal;
- CMDLINE:可传递额外内核参数。
示例:
$ runqemu qemuarm core-image-minimal nographic console=ttyAMA0
可在无图形模式下通过串口控制台交互。
本章小结
本章系统讲解了 Poky 发行版 的核心组成,包括镜像菜谱、机器配置文件、发行版配置文件与 QEMU 仿真。掌握这些内容后,您可以基于 Poky 快速构建、定制并验证嵌入式 Linux 镜像,为后续的 BSP 层开发和应用集成奠定坚实基础。
🔍
B站相应的视频教程:
📌 Yocto项目实战教程-第6章-Poky参考发行版
记得三连,标为原始粉丝,感谢大神支持。
