【发布时间】:2022-10-20 11:10:33
【问题描述】:
我正在开发一个脚本来在使用 yocto 开发的 linux 映像中安装软件包。目前,我通过 scp 将 .sh 脚本与 linux 映像一起发送到我的设备,但我想将此脚本直接安装在 linux 映像中,以及设备何时启动时具有 .sh 文件。我怎样才能在 yocto 中做到这一点?我需要为此脚本创建一个配方吗?
【问题讨论】:
标签: embedded embedded-linux yocto
我正在开发一个脚本来在使用 yocto 开发的 linux 映像中安装软件包。目前,我通过 scp 将 .sh 脚本与 linux 映像一起发送到我的设备,但我想将此脚本直接安装在 linux 映像中,以及设备何时启动时具有 .sh 文件。我怎样才能在 yocto 中做到这一点?我需要为此脚本创建一个配方吗?
【问题讨论】:
标签: embedded embedded-linux yocto
如果需要,您应该创建一个配方和一个 systemd 服务以启用它的启动时间。 架构应该是这样的:
my_script/
├── files
│ ├── my_script.service
│ └── my_script.sh
└── my_recipe.bb
你的食谱应该是这样的,
我的食谱.bb:
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
SRC_URI = "file://myscript.service"
SRC_URI += "file://myscript.sh"
inherit systemd
do_install() {
install -Dm0755 ${WORKDIR}/my_script.sh ${D}/usr/bin/my_script.sh
install -Dm0644 ${WORKDIR}/my_script.service ${D}${systemd_system_unitdir}/my_script.service
}
SYSTEMD_SERVICE_${PN} = "my_script.service"
当然,这应该在您的 conf/bblayers.conf 中已经存在的元层中 否则创建它并手动添加它。
【讨论】:
@amolina 我猜您需要将 shell 脚本添加到 /etc/init.d 以便在操作系统启动时运行它。
您可以继承 update-rc.d 类并在中定义 INITSCRIPT_NAME/PARAMS 你的食谱。
更多细节可以在这个链接中找到yocto manual
【讨论】: