gpt4 book ai didi

Yocto:根据机器类型或目标图像安装不同的配置文件

转载 作者:行者123 更新时间:2023-12-04 14:33:09 25 4
gpt4 key购买 nike

我有几个硬件平台(相同的 CPU 等)需要不同的 asound.conf 文件。

我控制目标平台的方式是通过 MACHINE 变量和目标图像(即 MACHINE=machine_1 nice bitbake machine-1-bringup-image)

通常,如果只是替换 conf 文件,我只会创建一个 alsa-state.bbappend 并创建一个 do_install_append 函数来替换它。

然而,由于不同的硬件平台需要不同的 conf 文件,我不确定如何处理它。

我已经尝试将一些逻辑放入附加文件 do_install_append 函数中,但它不起作用。它并不总是选择正确的文件(就像它认为没有任何改变,所以它使用以前缓存的 conf?)

这是我尝试过的附加文件之一的示例:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI += " \ file://asound_MACHINE1.conf \
file://asound_MACHINE2.conf \ "

do_install_append() {

echo " alsa-state.bbappend MACHINE: ${MACHINE}"
if [ "${MACHINE}" = "machine_1" ]; then
echo " machine_1"
echo " installing ${WORKDIR}/asound_MACHINE1.conf to ${D}${sysconfdir}/asound.conf"

install -m 644 ${WORKDIR}/asound_MACHINE1.conf {D}${sysconfdir}/asound.conf

else
echo " installing ${WORKDIR}/asound_MACHINE2.conf to ${D}${sysconfdir}/asound.conf"
install -m 644 ${WORKDIR}/asound_MACHINE2.conf ${D}${sysconfdir}/asound.conf

fi

}

我可以根据逻辑在日志中看到正确的回声。

无论如何,我不认为我要走的路是解决这个问题的最好方法。

是否有一种“标准”方式可以根据目标图像或 MACHINE 变量安装不同的文件?

最佳答案

在您的特定情况下,您可以在特定于机器的目录中拥有配置文件(只是每台机器的特定配置文件)。 OpenEmbedded 将获取最具体的一个。您的配方目录中的目录结构将如下所示:

files/<machine1>/asound.conf
files/<machine2>/asound.conf

还有您的 alsa-state.bbappend将只包含一行(您不需要更改 do_install 因为 alsa-state.bb 已经安装了 asound.conf ):
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

顺便说一句:我们正在使用该设置来获得特定的 asound.state我们项目中每台机器的文件。

此外,OpenEmbedded 将检测 SRC_URI 包含机器特定文件并相应地更改 PACKAGE_ARCH,请参阅: https://www.yoctoproject.org/docs/2.5/mega-manual/mega-manual.html#var-SRC_URI_OVERRIDES_PACKAGE_ARCH

关于机器、发行版或架构特定文件的更多信息:OE 正在尝试获取 file:// 中最具体的文件取物者。它还在以发行版(例如 files/<distro>/asound.conf )和架构(例如 armv7a、arm)命名的目录中搜索。如果您想要特定于某些设备的文件,这可能很有用。更多信息: https://www.yoctoproject.org/docs/2.5/mega-manual/mega-manual.html#var-FILESOVERRIDES还有 https://www.yoctoproject.org/docs/2.5/mega-manual/mega-manual.html#best-practices-to-follow-when-creating-layers (“将特定于机器的文件放置在特定于机器的位置”部分)

关于Yocto:根据机器类型或目标图像安装不同的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com