请参考我们BSP manual中的描述:

http://www.phytec.de/documents/l-813e-5-yocto-reference-manual/#How_to_add_Linux_Firmware_Files_to_the_Root_Filesystem


点击下载例子:meta-example.tar.gz

上面是一个例子,它将files中的test.bin文件复制到目标文件系统的/usr/bin/中。
该文件为一个layer,包含一个recipe,使用时请把解压缩得到的 meta-example 文件夹放在 yocto根目录下sources文件夹中,如:

% ls sources -l
total 32
drwxr-xr-x  5 bob bob 4096 7月  11  2017 meta-example  < -- 增加的文件夹
drwxr-xr-x  6 bob bob 4096 10月 12  2017 meta-gstreamer1.0
drwxr-xr-x  6 bob bob 4096 10月 12  2017 meta-nodejs
drwxr-xr-x 18 bob bob 4096 10月 12  2017 meta-openembedded
drwxr-xr-x 16 bob bob 4096 10月 12  2017 meta-phytec
drwxr-xr-x 11 bob bob 4096 10月 12  2017 meta-qt5
drwxr-xr-x 20 bob bob 4096 10月 12  2017 meta-yogurt
drwxr-xr-x 12 bob bob 4096 10月 12  2017 poky

需要在build/local.conf中增加(注意bbexample前的空格)

IMAGE_INSTALL_append = ' bbexample'

需要在build/bblayers.conf中增加

BBLAYERS += "\
	${OEROOT}/../meta-gstreamer1.0 \
	${OEROOT}/../meta-nodejs \
	${OEROOT}/../meta-phytec \
	${OEROOT}/../meta-qt5 \
	${OEROOT}/../meta-yogurt \
	${OEROOT}/../meta-example \  <-- 增加这一行
	"   

配置完后直接编译即可。

如果需要更新文件,直接将新的文件覆盖,然后再次用(image_name是你用来编译镜像的名称,如phytec-qt5demo-image)

bitbake image_name

编译即可,文件系统就会更新,但不会在build/deploy/machin_name/中保留之前生成文件系统。

recipe文件编写可以参考其他包的方法
https://layers.openembedded.org/layerindex/branch/krogoth/layer/openembedded-core/ 
recipe复制文件请参考
https://wiki.yoctoproject.org/wiki/TipsAndTricks/Packaging_Prebuilt_Libraries 
建立一个新的recipe和layer请参考
https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles 
关于其中用到的install指令,该指令为linux自带,可以在host中做实验
http://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html 


recipe中的变量可以参考

http://www.embeddedlinux.org.cn/OEManual/recipes_directories.html

http://www.embeddedlinux.org.cn/OEManual/recipes_variables.html

http://www.embeddedlinux.org.cn/OEManual/recipes_versioning.html


如果需要增加的文件放在开发板系统其他位置,编译过程中可能出现类似以下错误

ERROR: networkdcfg-1.0-r0 do_package: QA Issue: networkdcfg: Files/directories were installed but not shipped in any package:
  /lib
  /lib/systemd
  /lib/systemd/network
  /lib/systemd/network/10-eth1.network
  /lib/systemd/network/10-eth0.network
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
networkdcfg: 5 installed and not shipped files. [installed-vs-shipped]
ERROR: networkdcfg-1.0-r0 do_package: Fatal QA errors found, failing task.
ERROR: networkdcfg-1.0-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /mnt/work/home/nzhang/bsp/mx7/PD18.1.1/build/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/networkdcfg/1.0-r0/temp/log.do_package.21818
ERROR: Task (/mnt/work/home/nzhang/bsp/mx7/PD18.1.1/sources/meta-custom/recipes-netcfg/networkdcfg/networkdcfg_1.0.bb:do_package) failed with exit code '1'

遇到这种问题需要在recipes的bb文件中, 增加包的安装路径

FILES_${PN} += " /lib/*"



我们还有一个教程是关于怎样直接修改文件系统的。

怎样在Linux中重新制作文件系统镜像 / How to rebuild rootfs in linux


  • No labels