Yocto开发¶
如何定制添加layer¶
即使你只有一两个配方文件,还是建议你创建自己的层,而不是把配方添加到OE-Core或者Yocto项目层,随着你的配方越来越多,这种好处更能体现出来,且容易迁移到你的其它 项目中去。你可以修改配置文件,使你的层添加到项目中。还可以用yocto-layer脚本来创建层。
通常一个layer的结构包含3个文件夹:conf、classes、recipes-xxx。开发人员可以自行创建recipes-*文件夹,存放其他软件包的bb文件。recipes-xxx目录仅用于区分 不同类型的软件包/特性,实际可以作为一个recipes目录存放的。classes目录和poky原生的目录类似,主要存放自研的bbclass。conf目录是必须存在的,用于配置此layer的 信息。
classes: 类文件(.bbclass)中提供了一些可以和其他配方(和类文件在同一层中)共享的功能,多个配方可以从同一个类文件继承一些配置和功能。
conf: 这个区域包含了针对这个层和发行相关的配置信息(比如说conf/layer.conf)。local.conf和bblayers.conf的定制模板也可以放在此目录,构建时通过 TEMPLATECONF变量指定。
recipes-xx: 包含了一些会影响全局的配方文件和配方追加文件。其中一些配方和追加文件被用来增加初始化脚本,特定发行版的配置和自定义的配方等文件。recepies-xx 目录的例子就是recipes-core和recipes-kernel。不同recepies-*目录下的内容和结构也会有所不同。通常来说,这些目录下含了配方文件(*.bb)和配方追加文件(*.bbappend), 还有一些针对发行版的配置文件和其他文件。
添加新层可以通过以下步骤完成:
创建新层文件夹meta-xxx
创建新层配置文件conf/layer.conf。
告诉 Bitbake 关于新层bblayers.conf
根据层类型,添加内容。如果层添加了对机器的支持,则在层内的 conf/machine/ 文件中添加机器配置。如果层添加了发行版策略,则在层内的 conf/distro/ 文件中添加发行版配置。如果层引入了新的配方,则将需要的配方放在该层内的 recipes-* 子目录中。
以下是一个层的主要目录结构:
./
├── build/ 编译目录
│ ├── bitbake.lock
│ └── conf/
│ ├── local.conf
│ └── bblayers.conf
├── meta-openeuler/ 新层
│ ├── classes/ 如果需要提供公共类,则添加
│ ├── recipe-core/
│ ├── glibc/
│ ├── files/
│ ├── glibc_2.31.bb
│ └── glibc.inc
│ └── conf/
│ ├── machine/ **按需添加** ,新硬件平台则需要
│ ├── qemu_arm.conf
│ └── qemu_aarch64.conf
│ ├── distro/ **按需添加** ,新的发行版
│ └── openeuler.conf
│ ├── local.conf.sample
│ ├── layer.conf
│ └── bblayers.conf.sample
└── meta/ 原始yocto社区poky下
├── classes/
│ └── base.bbclass
└── conf/
├── bitbake.conf
└── layer.conf
通过TEMPLATECONF变量指向新层的conf目录,yocto会自动将.sample赋值到build目录 当前也可以通过yocto提供的工具添加新的基础layer:
bitbake-layers create-layer ../layers/meta-hello
创建层bitbake-layers add-layer meta-hello
将层添加到conf/bblayers.conf