集成了自定义配方,但在闪烁后看不到 rootfs 的任何变化
Integrated a custom recipe but don't see any changes in rootfs after flashing
我创建了一个自定义配方,其中包含一些作为 sysfs 一部分的服务文件,尽管我能够构建整个映像并刷新它,但我只是看不到 rootfs 中的任何变化。
bitbake-layers show-recipes | grep <recipe-name>
// i see the newly added recipe here
食谱bb文件中的do_install_append()
如下:
do_install_append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}/etc/initscripts
install -d ${D}${systemd_unitdir}/system
mv ${D}/etc/init.d/<daemon_file> ${D}/etc/initscripts/<daemon_file>
install -m 0644 ${WORKDIR}/<recipe>/<service_file> ${D}${systemd_unitdir}/system/<service_file>
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants/
ln -sf ${systemd_unitdir}/system/<service_file> ${D}${systemd_unitdir}/system/multi-user.target.wants/<service_file>
fi
}
我进入 /etc/initscripts/
并没有看到 <daemon_file>
例如。
因为构建本身运行良好,我还应该研究其他任何问题来调试问题吗?
你的食谱没有问题。
这里有几点需要考虑:
- 仅当
systemd
在 DISTRO_FEATURES
中时,您的 do_install_append
才复制文件。
为确保这一点,请检查:
bitbake -e | grep ^DISTRO_FEATURES=
或将 bbwarn "Message"
添加到您的配方中以确保块已执行。
- 确保将文件添加到
FILES_${PN}
:
FILES_${PN} += "/etc/initscripts/<daemon_file> \
${systemd_unitdir}/system/<service_file> \
${systemd_unitdir}/system/multi-user.target.wants/<service_file>"
- 在构建完整图像之前检查配方的
${D}
文件夹。
$ bitbake -e <recipe> | grep ^D=
D=".../tmp/work/.../<recipe>/<version>/image"
$ cd <path>
$ tree .
要激活 systemd
使用:
INIT_MANAGER = "systemd"
你真的把这个秘诀创建的包安装到镜像中了吗?只是因为你 bitbake 一个食谱并不意味着内容进入每个图像,你还需要将包名称添加到 IMAGE_INSTALL
。
我创建了一个自定义配方,其中包含一些作为 sysfs 一部分的服务文件,尽管我能够构建整个映像并刷新它,但我只是看不到 rootfs 中的任何变化。
bitbake-layers show-recipes | grep <recipe-name>
// i see the newly added recipe here
食谱bb文件中的do_install_append()
如下:
do_install_append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}/etc/initscripts
install -d ${D}${systemd_unitdir}/system
mv ${D}/etc/init.d/<daemon_file> ${D}/etc/initscripts/<daemon_file>
install -m 0644 ${WORKDIR}/<recipe>/<service_file> ${D}${systemd_unitdir}/system/<service_file>
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants/
ln -sf ${systemd_unitdir}/system/<service_file> ${D}${systemd_unitdir}/system/multi-user.target.wants/<service_file>
fi
}
我进入 /etc/initscripts/
并没有看到 <daemon_file>
例如。
因为构建本身运行良好,我还应该研究其他任何问题来调试问题吗?
你的食谱没有问题。
这里有几点需要考虑:
- 仅当
systemd
在DISTRO_FEATURES
中时,您的do_install_append
才复制文件。
为确保这一点,请检查:
bitbake -e | grep ^DISTRO_FEATURES=
或将 bbwarn "Message"
添加到您的配方中以确保块已执行。
- 确保将文件添加到
FILES_${PN}
:
FILES_${PN} += "/etc/initscripts/<daemon_file> \
${systemd_unitdir}/system/<service_file> \
${systemd_unitdir}/system/multi-user.target.wants/<service_file>"
- 在构建完整图像之前检查配方的
${D}
文件夹。
$ bitbake -e <recipe> | grep ^D=
D=".../tmp/work/.../<recipe>/<version>/image"
$ cd <path>
$ tree .
要激活 systemd
使用:
INIT_MANAGER = "systemd"
你真的把这个秘诀创建的包安装到镜像中了吗?只是因为你 bitbake 一个食谱并不意味着内容进入每个图像,你还需要将包名称添加到 IMAGE_INSTALL
。