=====DEY文件系统定制===== **关于Recipe** Yocto中的菜谱Recipes描述了如何获取,配置,编译,安装各种包。在Poky,meta-openembedded等定义了许多Recipes,但默认地它们并不编译。镜像菜谱(Image Recipes)定义了一个这些可用Recipes的子集,以包含到你的rootfs镜像中。默认预编译镜像dey-image-qt,这个Recipe其实是在meta-digi这个layer下定义的。如果仔细检查路径,发现它在DEY安装路径下sources/meta-digi/meta-digi-dey/recipes-core/dey-image-qt.bb。 **用项目配置文件添加软件包** 在项目所在的配置目录conf下,有几个文件,其中bblayers.conf定义了默认项目用到的一些layer,大量的包其实就在这些layer里定义,我们可以很简单地通过local.conf来添加一些包。Yocto不同版本中的语法有些变化,请根据版本来选择: * 添加一个新的包 编辑/conf/local.conf: \\ DEY3.2和之前的版本,用: IMAGE_INSTALL_append = "mtd-utils" DEY4.0开始的版本,用 IMAGE_INSTALL:append = "mtd-utils" * 移除一个包 编辑/conf/local.conf: \\ DEY3.2和之前的版本,用: IMAGE_INSTALL_remove = "alsa-utils-speakertest" DEY4.0开始的版本,用 IMAGE_INSTALL:remove = "alsa-utils-speakertest" 编译image镜像 \\ # bitbake dey-image-qt 当然项目配置的layer中,支持哪些包,可以用下面命令查询: # bitbake-layers show-recipes 因为不同版本的包名,甚至嵌入式和桌面不同发行版有时包名会有此差异,因此可以按上面方法找到正确的包名。比如要安装pyserial,你可能不知道包名,会直接尝试pyserial这个名称,编译出错时,你应该用上面方法找到正确的包名: # bitbake-layers show-recipes |grep pyserial 这样就会搜索出带有pyserial的包名,我们发现正确的包名其实是:python-pyserial 在另外一些场景,你所要添加到包并不在DEY项目默认镜像配置用到的layer中,但它也是DEY layer的一部分,也同样可以通过配置来添加到rootfs中。 举个例子,我们想添加mpg123(一个命令行的mp3播放器),需要这么做: * 添加recipe对应的layer到项目的bblayers.conf中去 在/conf/bblayers.conf中,添加下面内容 /sources/meta-openembedded/meta-multimedia * 添加要安装的包到项目的local.conf中去 DEY3.2和之前的版本,用: IMAGE_INSTALL_append = "mpg123" DEY4.0开始的版本,用 IMAGE_INSTALL:append = "mpg123" * 编译image镜像 # bitbake dey-image-qt 如果你要添加的内容比较特别,没有包含在DEY的默认安装中,在自己动手写一个Recipe之前,还有一个机会是: 到Openembedded Layer Index中检索一下,是否有您要找的内容: http://layers.openembedded.org/layerindex/branch/master/layers/ 如果找到相关内容,把包含您需要的Recipe的layer拷贝到DEY安装目录/sources/下,然后就和上面一样操作,把相应的layer或包名添加到项目配置文件中,再编译镜像。 **用项目配置文件添加软件包集** 这个在local.conf中是这样配置的 EXTRA_IMAGE_FEATURES = "" 选项包括: dey-audio: Adds audio support to a platform. dey-gstreamer: Adds the gstreamer framework to a platform. dey-network: Adds network applications and tools. dey-wireless: Includes wireless applications and drivers. dey-bluetooth: Adds Bluetooth support. dey-debug: Adds DEY debugging applications as memwatch and fbtest. dey-examples: Adds DEY example applications. dey-qt: Adds QT support. 可以在meta-digi中找到相关的定义,比如常用的dey-examples,实际上位于:meta-digi/meta-digi-dey/recipes-digi/dey-examples **文件系统的高级定制** 更进一步的高级定制,您可以创建一个meta-custom的layer,它可以: \\ * 包含新的recipes,比如添加新的应用程序或是新的文件到文件系统当中 * 通过添加一个.bbappend的recips来修改已经存在的recipes,通常用这种方法修改文件系统中已经存在的文件,像配置文件之类的。 * 创建一个新的目标镜像 * 创建新的机器配置 * 为新平台提供默认的内核配置或是增加配置等 深入学习,请参考英文教材: {{ digi:arm-embedded:linux:dey:embedded_linux_projects_using_yocto_project_cookbook.pdf |}}