编辑
2025-01-22
记录知识
0
请注意,本文编写于 156 天前,最后修改于 59 天前,其中某些信息可能已经过时。

目录

一、提供sysroot环境
二、提供安装类bbclass
三、设置bb file
四、构建recipes

我们知道yocto是基于源码构建的工具,如果我们在开发系统的时候,直接使用全部构建的方式来生成操作系统,那代价将会异常的大。所以可以通过二进制安装

一、提供sysroot环境

默认情况下,yocto会根据编译来构建一个sysroot,而每个程序都有自己单独的sysroot作为隔离。这种情况下,如果我们不需要通过构建的方式产生sysroot,我们需要如下:

在meta-kylin下定义一个recipes-debootstrap 运行debootstrap命令,通过麒麟发布的源地址,构建一个chroot环境,此环境是SYSROOT_DESTDIR环境变量 yocto默认使用此sysroot作为版本构建 对于的bb如下:

do_build() { sudo -E debootstrap --variant=minibase --include=systemd,apt kylin ${SYSROOT_DESTDIR} ${KYLIN_REPO} sudo -E chroot ${SYSROOT_DESTDIR} apt-get update sudo -E chroot ${SYSROOT_DESTDIR} apt-get install -y ${DEPENDS} }

二、提供安装类bbclass

我们知道yocto分如下步骤:

image.png 对于此,我们需要将此流程定制,inherit 我们自己的kylin.bbclass,如下:

  • do_fetch : 设置为noexec
  • do_unpack: 设置为noexec
  • do_patch: 设置为noexec
  • do_configure:设置为noexec
  • do_compile:设置为noexec
  • do_install: 集成kylin的bbclass,实现chroot到系统中,apt-get install 的方式安装
  • do_package:设置为noexec

三、设置bb file

在我们的layer中的bb file,需要inherit kylindeb这样的类,这样默认就指向了我们自己的流程

我们在do_install中会进入chroot环境中进行apt-get 安装包,这里bb file需要提供一个packages-list文件,用于解析packages-list里面的包列表,用于安装,如下示例:

PACKAGE_LIST = "ukui-tablet-desktop ukui-control-center ukui-menu" do_install() { apt-get update apt-get install -y ${PACKAGE_LIST} }

四、构建recipes

最后我们通过命令即可构建

bitback kylin

至此,yocto可以具备通过安装二进制的方式来构建系统环境。