Linux kernel “怎么做?”;“bitbake虚拟/内核”;如果内核配方不';是否已将变量设置为虚拟/内核?

Linux kernel “怎么做?”;“bitbake虚拟/内核”;如果内核配方不';是否已将变量设置为虚拟/内核?,linux-kernel,embedded-linux,yocto,bitbake,Linux Kernel,Embedded Linux,Yocto,Bitbake,我试图了解一些与使用bitbake编译linux映像和生成引导映像相关的内容,这些映像将用于闪存到处理器上 为什么bitbake虚拟/内核真的有效?通读一遍,它说recipes使用提供参数来添加额外的提供者,这表示可以通过多种方式调用配方(通过其名称,以及通过提供的任何设置)。但是我检查的内核配方(。/poky/meta-bsp/recipes-kernel)没有提供参数,更不用说设置为虚拟/内核 在运行bitbake virtual/kernel时,为什么会生成一个boot.img,而它只应

我试图了解一些与使用bitbake编译linux映像和生成引导映像相关的内容,这些映像将用于闪存到处理器上

  • 为什么
    bitbake虚拟/内核
    真的有效?通读一遍,它说recipes使用
    提供
    参数来添加额外的提供者,这表示可以通过多种方式调用配方(通过其名称,以及通过
    提供的任何设置)。但是我检查的内核配方(
    。/poky/meta-bsp/recipes-kernel
    )没有
    提供
    参数,更不用说设置为
    虚拟/内核
  • 在运行
    bitbake virtual/kernel
    时,为什么会生成一个
    boot.img
    ,而它只应该生成一个linux二进制文件,例如
    vmlinux
    ? 在一个内核
    .inc
    文件中,我看到:
mkbootimgnative
我认为是指内核配方所依赖的引导映像配方,但它不应该是另一种方式,因为引导映像应该包含内核映像本身吗

  • 最后,是否有一种方法可以将调试打印放在不同的配方文件中,以查看它是否被调用?我尝试了
    echo
    …但没有成功

您检查的食谱可能有
提供的
。大多数(如果不是所有的话)内核配方
继承内核
类(直接或通过一些其他类,如kernelyocto)。kernel.bbclass实际上指定
为您提供
,c.f.)

boot.img
似乎不是为任何机器默认创建的。快速浏览代码后,这似乎是由
wic
为继承
image live
bbclass的图像创建的,或者通过将
live
添加到
image\u FSTYPES
,c.f。 从poky git repo中一个简单的git grep来看,似乎只有
bootimgefi.py
boot.img
上做了一些事情,当
-b
-bootimgdir
参数被传递时,
wic
会调用它。因此,
boot.img
工件可能只为EFI机器和图像创建


如果在任务中使用
echo
printf
或类似的shell函数(或Python任务中的
print
),则只能在配方的
${WORKDIR}/temp/log.do
中看到它们。否则,您可以使用
bbplain
bbnote
bbdebug
bbwarn
bberror
bbfatal
。这将同时打印到日志和控制台(取决于您的日志级别,可通过
-D
(Ds越多,日志级别越高)进行配置。

内核.bbclass
在哪里?在
poky/meta bsp/classes
和其他一些目录下似乎找不到。关于
boot.img
,我做了一些挖掘,发现有一个任务
do\u-bootimg
位于内核目录下的
log.do\u-listtasks
,这意味着每次我运行
bitbake-virtual/kernel1,
do\u-make\u-bootimg`都会被调用,最终生成一个引导映像。作为跟进,您知道编译特定图像时需要运行哪些任务吗?关于打印,
${WORKDIR}/temp/log.do_
->什么是
任务
?它是我使用的
printf
还是
echo
?此外,我确实使用了
bbwarn
和其他工具,但它只给出了我们的语法错误
kernel。bbclass
位于
openembedded core/classes
poky/meta/classes
,正如我粘贴的链接所示。Yocto为任务创建依赖关系树。当您请求运行任务时,它的所有依赖项都会预先运行。当您运行
bitbake my recipe
时,Yocto触发
build
任务,该任务在其依赖关系树中有大部分任务。当您向
dependens
添加配方时,会触发所述包的
do\u populate\u sysroot
。Etc.
task
是添加
echo
printf
语句的任务的名称。如果您尝试使用
bbwarn
但没有成功,也许您也可以要求这样做?以
bbwarn
在poky recipes中的用法为例,如果你仍然找不到问题所在,那么创建一个新的帖子。说明继承指令仅适用于类(在/classes/目录中以.bbclass结尾的文件)。因此,.bbclass将是多余的。
DEPENDS += " mkbootimg-native openssl-native kern-tools-native"
...
FILESPATH =+ "${WORKSPACE}:"
SRC_URI   =  "file://kernel \
              ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://systemd.cfg', '', d)} \
              ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'file://virtualization.cfg', '', d)} \
              ${@bb.utils.contains('DISTRO_FEATURES', 'nand-squashfs', 'file://squashfs.cfg', '', d)} \