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"
一点评论:
- PACKAGE_ARCH 必须正确设置。在我的例子中,当我没有它时,由于某种原因没有设置脚本文件的执行权限。
- do_install() 必须创建所需的每个目录。即使我知道,在我的 rootfs 中会有 /etc 目录,我也必须创建它。而且我不确定是否有必要,但最好在安装目录的末尾加上斜线,以防万一。
- 启动时要安装的初始化脚本也必须安装;)
- 脚本必须设置适当的权限。
我的目标是创建 Bitbake 配方,它将在 /etc 目录中安装配置文件,以及将此配置应用到 /ect/init.d 目录(并调用 update-rc-d)的脚本。
我已经看到另一个类似的问题 (
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"
一点评论:
- PACKAGE_ARCH 必须正确设置。在我的例子中,当我没有它时,由于某种原因没有设置脚本文件的执行权限。
- do_install() 必须创建所需的每个目录。即使我知道,在我的 rootfs 中会有 /etc 目录,我也必须创建它。而且我不确定是否有必要,但最好在安装目录的末尾加上斜线,以防万一。
- 启动时要安装的初始化脚本也必须安装;)
- 脚本必须设置适当的权限。