Linux 如何覆盖另一个.bbappend

Linux 如何覆盖另一个.bbappend,linux,yocto,dhcp,openembedded,Linux,Yocto,Dhcp,Openembedded,我已经用systemd和dhcp客户端构建了一个映像。在meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp中的配方dhcp中有一个bbappend,它创建了一个dhclient.service。我想修改(或覆盖)此文件,但启动bitbake时,出现一个错误,告诉我应用修补程序0001-dhclient-modify-interface.patch在输入行5找不到要修补的文件 这是我的dhclient.service修补

我已经用
systemd
dhcp客户端构建了一个映像。在
meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp
中的配方
dhcp
中有一个bbappend,它创建了一个dhclient.service。我想修改(或覆盖)此文件,但启动bitbake时,出现一个错误,告诉我应用修补程序0001-dhclient-modify-interface.patch在输入行5找不到要修补的文件

这是我的dhclient.service修补程序:

Index: 4.3.3-r0/dhclient.service
===================================================================
--- 4.3.3-r0.orig/dhclient.service
+++ 4.3.3-r0/dhclient.service
@@ -6,7 +6,7 @@ After=syslog.target network.target
 Type=forking
 PIDFile=/var/run/dhclient.pid
 EnvironmentFile=-/etc/default/dhcp-client
-ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $INTERFACES
+ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases eth0

 [Install]
 WantedBy=multi-user.target
和我的dhcp附加:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://dhclient.service"
我还试图覆盖该文件,但它似乎完全忽略了我的文件


我想在默认情况下启用此选项,但如何将此对齐(位于dhcp文件夹中)覆盖到
启用
系统自动启用\u dhcp-client=“disable”

嗯,您无法轻松修补该文件,因为它不是源文件的一部分

但是,添加一个
.bbappend
就足够了

FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SYSTEMD_AUTO_ENABLE_dhcp-client = "enable"
然后将
dhclient.service
放在您的层中的
recipes-core/dhcp/dhcp/dhclient.service


这假设您的层与meta systemd相比具有更高的优先级。另一种解决方案对我有效,即首先禁用原始bbappend,然后添加您自己的bbappend

BBMASK=“meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/original.bbappend”
放入您的
build/conf/layers.conf
以禁用原始上游bbappend,然后在您自己的配方中创建新的bbappend。这样可以“覆盖”bbappend


这更灵活,可以应用于不受您的情况限制的更多场景。

请说明您使用的OpenEmbedded版本。