yocto-第31篇-Linux kernel相关的任务

By: fu linux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎点赞和订阅!
你的喜欢就是我写作的动力!

在这里插入图片描述

Linux 内核相关任务

以下篇幅讲述适用于Linux内核recipe的任务。有看过本专栏《yocto-第23篇-BitBake全过程》系列的盆友知道,一般recipe项目bitbake的过程基本上都会有如下几个基本的过程:

do_patch
do_configure
do_compile
do_install
do_package

但是linux内核有其自身特有的性质,有其特殊的task任务,比如我们配置内核的适合于使用的:

make menuconfig
  • 1

对应的任务就是do_menuconfig。
在这里插入图片描述
退出menuconfig窗口时, 选择exit.

do_kernel_menuconfig任务

类似我们平时在内核源码目录中执行make menuconfig命令,参考如下:

$ bitbake linux-yocto -c menuconfig
  • 1

需要在ubuntu桌面环境下,因为该命令会调用do_termainl函数来打开另一个终端窗口显示menuconfig,打开终端 (Ctrl + Alt + T),如下:

do_compile_kernelmodules任务

运行构建Linux内核模块的步骤,通常构建模块包括两个步骤:

  1. 编译生成vmlinux文件;
  2. 编译模块(即make modules);
$ bitbake linux-yocto -c compile_kernelmodules #加-f强制执行
  • 1

但是我们好像没有那个必要单独去编译这个任务。

do_diffconfig任务

当由用户调用时,此任务创建一个文件用于保存do_kernel_configme任务生成的原始配置与用户使用其他方法(比如do_kernel_menuconfig)所做的更改之间的差异内容,类似与diff命令。一旦创建了差异文件,就可以使用它来创建只包含差异的配置片段。
可以从命令行调用此任务,如下所示:

$ bitbake linux-yocto -c diffconfig
  • 1

后续我还好结合实例讲解,先记着有这么回事就可以。

do_kernel_checkout任务

将新解压的内核源代码转换为OpenEmbedded build system可以使用的形式。由于内核源代码可以通过几种不同的方式获取(.tar.bz2源码包和git方式),do_kernel_checkout任务确保为后续任务提供一个干净的内核工作目录副本,并切换到正确的分支。

do_kernel_configcheck任务

验证do_kernel_menuconfig任务生成的配置。当请求的配置没有出现在最终的.config文件中,或者当您重写硬件配置片段中的策略配置时,do_kernel_configcheck任务会生成警告。可以使用以下命令显式运行此任务并查看输出:

do_kernel_configme任务

在内核被do_patch任务修补后,do_kernel_configme任务将所有内核配置片段集合并到一个配置中,然后将这些片段传递到相应的内核配置阶段。

do_savedefconfig任务

当由用户调用下面的命令时,将创建一个defconfig文件,该文件可用于代替默认的defconfig。保存的defconfig包含默认defconfig与用户使用其他方法(例如do_kernel_menuconfig任务)所做更改之间的区别。

$ bitbake linux-yocto -c savedefconfig
  • 1

do_shared_workdir任务

在编译内核之后,但在编译内核模块之前,此任务将模块构建所需的文件以及从内核构建生成的文件复制到共享工作目录中。成功复制了这些副本后,do_compile_kernelmodules任务就可以在构建的下一步中成功地构建内核模块。

do_sizecheck任务

在构建内核之后,此任务将根据KERNEL_IMAGE_MAXSIZE变量检查stripped后的内核映像的大小。如果设置了该变量,并且内核的大小超过了该值时,则内核构建会产生一个警告。
做过linux移植的盆友知道,我们分配给Linux内核分区大小通常是固定的,为避免成功分区大小,可以参考该任务。