Bitbake 没有在我的 rootfs 中安装我的文件

Bitbake does not install my files in my rootfs

我的目标是创建 Bitbake 配方,它将在 /etc 目录中安装配置文件,以及将此配置应用到 /ect/init.d 目录(并调用 update-rc-d)的脚本。 我已经看到另一个类似的问题 ()。我几乎完全按照这个人所做的做了,但不幸的是它没有用。 问题是 Bitbake 没有抱怨任何事情,只是没有将这些文件添加到 rootfs。 这是我目前的食谱。我还将我的脚本和配置文件放在两个目录中:files 和 alsa-config,它位于 recipe 目录中。

SUMMARY = "Alsa Config"
DESCRIPTION = "Adds alsa configuration file, and startup script that applies it."

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI += " \
           file://my-alsa-config \
           file://asound.state \
"

PACKAGE_ARCH = "${MACHINE_ARCH}"

S = "${WORKDIR}"

INITSCRIPT_NAME = "my-alsa-config"
INITSCRIPT_PARAMS = "defaults 99 01"

inherit autotools update-rc.d

do_install() {
install -m 0644 ${WORKDIR}/asound.state ${D}${sysconfdir}
}

FILES_${PN} += "${sysconfdir}/asound.state"

在我的 local.conf 中,我添加了行:

CORE_IMAGE_EXTRA_INSTALL += "alsa-config "

拜托,有人可以帮忙吗?

幸运的是,我能够解决问题。这是解决方案:

SUMMARY = "Alsa Config"
DESCRIPTION = "Adds alsa configuration file, and startup script that applies it."

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI += " \
           file://my-alsa-config \
           file://asound.state \
"
PACKAGE_ARCH = "${MACHINE_ARCH}"

S = "${WORKDIR}"

INITSCRIPT_NAME = "my-alsa-config"
INITSCRIPT_PARAMS = "defaults 99 01"

inherit autotools update-rc.d

do_install() {
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/my-alsa-config ${D}${sysconfdir}/init.d/
install -m 0644 ${WORKDIR}/asound.state ${D}${sysconfdir}/
}

FILES_${PN} += "${sysconfdir}/asound.state \
                ${sysconfdir}/my-alsa-config"

一点评论:

  1. PACKAGE_ARCH 必须正确设置。在我的例子中,当我没有它时,由于某种原因没有设置脚本文件的执行权限。
  2. do_install() 必须创建所需的每个目录。即使我知道,在我的 rootfs 中会有 /etc 目录,我也必须创建它。而且我不确定是否有必要,但最好在安装目录的末尾加上斜线,以防万一。
  3. 启动时要安装的初始化脚本也必须安装;)
  4. 脚本必须设置适当的权限。