6

感谢您的时间和支持

我打算使用 swupdate 进行更新。所以,我需要创建一个额外的分区,我需要在其中存储恢复分区。

poky/meta/classes/image-live.bbclass

是创建分区并刷新根文件系统的类。我已经更新了上面的文件以创建一个更多的分区并存储 swupdate 根文件系统。

我怎样才能在我自己的 BSP 层中覆盖这个类,我不想接触 poky 源代码..

4

3 回答 3

11

一般来说,在Yocto中,没有办法像.bb文件(使用.bbappend )那样覆盖.bbclass文件,以存档复制整个类文件并移动到另一层所需的文件,我可以使用以下配置进行管理:

层结构:

$ tree ../meta-test/
../meta-test/
├── classes
│   └── image-live.bbclass
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-example
    └── example.bb

3 directories, 5 files

example.bb配方的内容:

$ cat ../meta-test/recipes-example/example/example.bb 
LICENSE = "CLOSED"
inherit image-live

最后非常重要的事情*,配置文件conf/bblayers.conf需要使用meta-test/以上meta/层的这个顺序进行配置:

$ tail -n6 conf/bblayers.conf 
BBLAYERS ?= " \
  /home/user/poky/meta-test \
  /home/user/poky/meta \
  /home/user/poky/meta-poky \
  /home/user/poky/meta-yocto-bsp \
  "

$ bitbake -e example -D | grep ^DEBUG:\\sInheriting\\s.*image-live.bbclass\\s\(from
DEBUG: Inheriting /home/user/poky/meta-test/classes/image-live.bbclass (from /home/user/poky/meta-test/recipes-example/example/example.bb:3)

*我不知道为什么bitbake层优先级在这里不起作用,只有在conf/bblayers.conf中修改层顺序才能实现主要目标:

$ bitbake-layers show-layers
NOTE: Starting bitbake server...
layer                 path                                      priority
==========================================================================
meta                  /home/user/poky/meta        5
meta-test             /home/user/poky/meta-test   10
meta-poky             /home/user/poky/meta-poky   5
meta-yocto-bsp        /home/user/poky/meta-yocto-bsp  5

conf/bblayers.conf中meta /下面的层meta-test/

$ tail -n6 conf/bblayers.conf 
BBLAYERS ?= " \
  /home/user/poky/meta \
  /home/user/poky/meta-test \
  /home/user/poky/meta-poky \
  /home/user/poky/meta-yocto-bsp \
  "    

$ bitbake -e example -D | grep ^DEBUG:\\sInheriting\\s.*image-live.bbclass\\s\(from
DEBUG: Inheriting /home/user/poky/meta/classes/image-live.bbclass (from /home/user/poky/meta-test/recipes-example/example/example.bb:3)
于 2018-06-26T06:52:18.633 回答
2

它于 2012 年在 yocto 邮件组上进行了讨论: https ://lists.yoctoproject.org/pipermail/yocto/2012-January/004379.html

仅创建与 astor555 所写相同的类并重新排序层。您的 BSP 层将首先被解析/使用。

于 2018-09-07T10:43:55.690 回答
0

另一种选择是将原始图层复制image-live.bbclass到您自己的现有图层中并将其重命名为有意义的(my-image-live.bbclass),然后在您需要的地方简单地继承它inherit my-image-live

于 2018-11-02T22:58:41.277 回答