我们知道yocto是基于源码构建的工具,如果我们在开发系统的时候,直接使用全部构建的方式来生成操作系统,那代价将会异常的大。所以可以通过二进制安装
默认情况下,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} }
我们知道yocto分如下步骤:
对于此,我们需要将此流程定制,inherit 我们自己的kylin.bbclass,如下:
在我们的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} }
最后我们通过命令即可构建
bitback kylin
至此,yocto可以具备通过安装二进制的方式来构建系统环境。