Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
请参考我们BSP manual中的描述:
点击下载例子: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