You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yocto构建中添加自定义Bash脚本与Systemd服务配方?

完全可行!这正是Yocto处理纯脚本/配置类软件包的标准方式

当然没问题!对于这类无需编译的bash脚本和systemd服务文件,你只需要在配方里实现do_install()步骤就足够了——Yocto默认的do_compile()是空实现,甚至你都不用特意去覆盖它,直接跳过编译环节完全ok。

给你一个具体的配方示例,你可以基于这个来写custom_1.0.bb(建议改成更有描述性的名字,比如umts-dongle-manager_1.0.bb,方便后期维护):

SUMMARY = "UMTS Dongle管理脚本与systemd服务"
DESCRIPTION = "用于板卡3G UMTS Dongle控制的简易bash脚本及对应systemd服务"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

# 指定你的脚本和服务文件路径(假设文件放在meta-custom/files目录下)
SRC_URI = " \
    file://umts-dongle-script.sh \
    file://umts-dongle.service \
"

# 明确跳过编译步骤(可选,Yocto默认do_compile是空的,这行只是让意图更清晰)
do_compile[noexec] = "1"

do_install() {
    # 创建目标目录并安装bash脚本,赋予可执行权限
    install -d ${D}${bindir}
    install -m 0755 ${WORKDIR}/umts-dongle-script.sh ${D}${bindir}/

    # 安装systemd服务文件到标准路径
    install -d ${D}${systemd_system_unitdir}
    install -m 0644 ${WORKDIR}/umts-dongle.service ${D}${systemd_system_unitdir}/
}

# 如果需要让服务开机自动启动,添加以下配置
inherit systemd
SYSTEMD_SERVICE_${PN} = "umts-dongle.service"
SYSTEMD_AUTO_ENABLE_${PN} = "enable"

几个需要注意的细节:

  • 把你的脚本和systemd服务文件放到meta-custom层的files目录下,这样SRC_URI里的file://才能正确定位到它们;
  • 权限一定要设置对:脚本给0755(保证可执行),systemd服务文件一般给0644;
  • 如果你的脚本依赖其他工具(比如pppd、usb_modeswitch),记得在配方里添加RDEPENDS_${PN} = "pppd usb-modeswitch",确保这些依赖会被打包进镜像;
  • 要是不需要开机自启服务,直接去掉inherit systemd及后面的相关配置就行。

按照这个方式写的配方,就能顺利把你的脚本和服务集成到所有新生成的Yocto镜像里了~

内容的提问来源于stack exchange,提问作者user4851126

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:13:54