Yocto理论基础之定制镜像
一、使用local.conf定制
最简单的方式就是通过conf/local.conf文件来定制image的组件,比如:
IMAGE_INSTALL:append = " strace"
注意名字前面的空格是必须的!推荐使用append而不是+=来添加组件。
这个方式添加的组件会在编译所用image时都生效,如果你只想特定的image添加功能组件可以这么写:
IMAGE_INSTALL:append:pn-core-image-minimal = " strace"
这样只有在编译core-image-minimal 的时候才会添加strace组件到image中。
二、 使用IMAGE_FEATURES 和 EXTRA_IMAGE_FEATURES定制
另外一种定制image的方法就是通过IMAGE_FEATURES 和EXTRA_IMAGE_FEATURES这两个变量来定制系统,这两个变量作用几乎相同,但是惯例我们通常在recipes中使用IMAGE_FEATURES,而在local.conf中使用EXTRA_IMAGE_FEATURES。
通常一个feature会关联一系列package groups,常见的feature可以查看meta/classes-recipe/image.bbclass文件。比如常用的“debug-tweaks”feature就是一系列调试工具的合集。
三、通过Custom .bb文件定制
你也可以通过定义一个image的bb文件来实现系统定制,这时候通常需要继承core-image,然后添加自己定义的组件包:
inherit core-image
IMAGE_INSTALL = "packagegroup-core-x11-base package1 package2"
如果追加组件包可以使用+=:
IMAGE_INSTALL += "strace"
四、定制包组packagegroups
对于相对复杂的组件包来说可能很多个组件形成一个逻辑功能组,比如qt的组件包有很多,我们就可以根据自己的需求选择需要哪些组件,然后放到一个包组给我们的image bb文件调用,常见的包组格式如下:
DESCRIPTION = "My Custom Package Groups"
inherit packagegroup
PACKAGES = "\
${PN}-apps \
${PN}-tools \
"
RDEPENDS:${PN}-apps = "\
dropbear \
portmap \
psplash"
RDEPENDS:${PN}-tools = "\
oprofile \
oprofileui-server \
lttng-tools"
RRECOMMENDS:${PN}-tools = "\
kernel-module-oprofile"
五、定制系统名hostname
通常情况下linux的系统名和MACHINE 的变量名一致,如果希望自定义系统名可以设置如下变量:
hostname = "myhostname"