我正在使用他们的 BSP 为 Variscite 板构建 yocto。我正在构建 core-image-minimal。该系统不是使用 systemd-networkd 构建的,我正在尝试添加它。
Variscite 层的配方
meta-variscite-bsp/recipes-core/systemd/systemd_%.bbappend
包含以下内容:
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI:append:imx-generic-bsp = " file://imx.conf \
file://0001-units-add-dependencies-to-avoid-conflict-between-con.patch \
file://0002-units-disable-systemd-networkd-wait-online-if-Networ.patch \
"
PACKAGECONFIG:remove = "networkd"
do_install:append:imx-generic-bsp() {
install -Dm 0644 ${WORKDIR}/imx.conf ${D}${sysconfdir}/systemd/logind.conf.d/imx.conf
}
我可以看到他们专门禁用了网络。
我知道如果我注释掉
PACKAGECONFIG:remove = "networkd"
行并重建,我就会按预期获得 systemd 网络。但这似乎不是我想做的事情的正确方法。如果我更新 BSP 层,我将丢失我的更改。正确的方法似乎是添加我自己的图层,我已经这样做了。我添加了 meta-csi/recipes-core/systemd/systemd_%.bbappend
并添加了以下内容:
PACKAGECONFIG:append = "networkd"
但是,当我运行构建时,未添加 systemd-networkd。
我从来没有尝试过撤消其他层之前正在做的事情,而且我对层优先级在这种情况下如何工作知之甚少。如果我添加像这样的 systemd 配方,两个配方都会运行吗?如果是,它们运行的顺序是什么?或者只有其中一个运行?如果是这样的话,我是否必须复制 BSP 配方正在执行的所有操作,但只删除我不想要的行?
当 BSP 层配方删除它时,尝试添加回 systemd-networkd 的最正确方法是什么?
我遇到了和你描述的同样的问题。
我将
PACKAGECONFIG_append = " networkd"
添加到优先级高于 meta-variscite-fslc 层的层。但由于某种原因,networkd 没有在 PACKAGECONFIG 中列出
$ bitbake systemd -e | grep ^PACKAGECONFIG
PACKAGECONFIG=" ldconfig pam kmod lz4 resolved sysusers logind"
我通过将以下内容添加到 systemd_%.bbappend 设法解决了该问题。它将清理配置参数并将网络添加为新标志。
PACKAGECONFIG_CONFARGS_remove = "-Dnetworkd=false"
PACKAGECONFIG[networkd-workaround] = "-Dnetworkd=true,-Dnetworkd=false"
PACKAGECONFIG_append = " networkd-workaround"
可能有更好的方法来处理这个问题,但这无需修改 BSP 层即可完成工作。