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