我已经提供了一个使用yocto项目构建嵌入式Linux映像的发行版/软件包,但我需要进行一些小的更改。我想通过添加自己的图层来做到这一点。
问题:有一个配方会在fstab文件中附加一行。食谱是:
meta-virtualization/recipes-core/base-files/base-files_3%.bbappend
以及该文件的内容:
do_install_append() {
if echo "${DISTRO_FEATURES}" | grep -q 'xen'; then
echo "xenfs /proc/xen xenfs defaults 0 0" >> ${D}${sysconfdir}/fstab
fi
}
我的要求是这个xenfs行不会在最终图像的fstab文件中结束。
我尝试创建自己的图层和配方来覆盖fstab文件:
meta-mylayer/recipes-core/base-files/base-files_3%.bbappend
meta-mylayer/recipes-core/base-files/base-files/base-files/fstab
内容:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
和
# my fstab to overwrite the one with xenfs
/dev/root / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
tmpfs /var/volatile tmpfs defaults 0 0
然而,这并不起作用,因为xenfs行只是附加到我的fstab文件中!
如何阻止它?
答案 0 :(得分:0)
评论中指出:应该使用cp而不是cat 。这里重要的一点是,在现有的do_install_append()之后调用do_install_append(),这在问题中看到的第一次尝试中并非如此。
我目前的解决方案是第二次写入fstab文件,方式与原始配方相似:
在自定义图层的基础文件中创建两个文件:
meta-mylayer/recipes-core/base-files/base-files_3%.bbappend
meta-mylayer/recipes-core/base-files/base-files/fstab.overwrite
使用base-files_3%.bbappend:
的内容FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += " file://fstab.overwrite"
do_install_append() {
if echo "${DISTRO_FEATURES}" | grep -q 'xen'; then
cp fstab.overwrite ${D}${sysconfdir}/fstab
fi
}
其中fstab.overwrite的内容用不需要的附加替换当前的fstab文件。