🔍
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.inc
DISTRO_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参考发行版
记得三连,标为原始粉丝,感谢大神支持。