yocto添加开机启动编译脚本

您所在的位置:网站首页 嵌入式linux开机启动脚本 yocto添加开机启动编译脚本

yocto添加开机启动编译脚本

2024-07-12 13:28:08| 来源: 网络整理| 查看: 265

yocto添加开机启动脚本

在平台开发时我们经常会遇到在编译时想让一个程序开机就自动启动,且这个程序必须在依赖的程序启动后才启动。比如等模组拨号成功后才开始FOTA的check。

这篇文章将介绍下如何将一个服务程序在一些特定的时候启动

下面将以start_manager_server_le为例,他是一个运行脚本,欲控制开机启动的程序为/usr/bin/qmanager_server。

start_manager_server_le的内容如下:

#! /bin/sh #qmanager_server是你想要开机运行的程序 DAEMON=/usr/bin/qmanager_server set -e case "$1" in start) echo -n "Starting qmanager_server: " echo "QMS:start" > /dev/kmsg start-stop-daemon -S -b -x $DAEMON echo "done" ;; stop) echo -n "Stopping qmanager_server: " rmmod qcom_emac rmmod at803x rmmod qca8337 rmmod of_mdio rmmod libphy start-stop-daemon -K -x $DAEMON echo "done" ;; restart) $0 stop $0 start ;; *) echo "Usage $0 { start | stop | restart}" >&2 exit 1 ;; esac exit 0

在build目录里增加一个bb文件 poky/meta-bsp/recipes-prop/quectel/qmanager_git.bb。bb文件是用来控制编译过程的

DESCRIPTION = " Manager Modules" PR = "r21" DEPENDS = "diag dsutils qmi-framework data" S = "${WORKDIR}/manager" SRC_DIR = "${WORKSPACE}/manager/" INITSCRIPT_NAME = "start_manager_server_le" INITSCRIPT_PARAMS = "start 99 2 3 4 5 ." inherit update-rc.d do_install_append() { install -m 0755 ${WORKDIR}/manager/server/src/start_manager_server_le -D ${D}${sysconfdir}/init.d/start_manager_server_le } FILES_${PN} += "${base_libdir}/firmware/wlan/qca_cld"

其中我们只需要关注下面这三行

INITSCRIPT_NAME = "start_manager_server_le" INITSCRIPT_PARAMS = "start 99 2 3 4 5 ." inherit update-rc.d

这三个参数的介绍如下

# Inherit the update-rc.d.bbclass file located in openembedded/classes/. # This will take care of setting up startup links when the package is # installed. inherit update-rc.d # Tell the update-rc.d package which program will be used as the startup # script. # The script will be called with the "start" command at system # startup, the "stop" command at system shutdown, and the "restart" command # when the package is updated. INITSCRIPT_NAME = "init-example-script" # Run the command at step 90 during startup, and step 10 during shutdown. # Because the numbers go from 00 - 99, larger numbers will be run later on. # If your program is required for system startup, put a low number here. # If it's user-facing or less critical for system startup, put a higher # number here. # As a tradition, the shutdown number should be 100-startup_number. That # way scripts are stopped in the reverse order they were started in. Since # our startup number here is 90, the shutdown number will be 100-90 or 10. INITSCRIPT_PARAMS = "defaults 90 10"

意思是在bb文件里加上这三行后,编译时会调用update-rc.d,在制作的文件系统里的/etc/rcX.d 路径下创建一个指向将 /etc/ini.d/INITSCRIPT_NAME 的软链接(rcX.d里的X是当前系统的runlevel,可以通过runlevel查看,注意不是编译机的runlevel)

其中INITSCRIPT_PARAMS这个参数是执行update-rc.d命令时传递过去的参数

/etc路径下有多个以rc开头的文件夹:

/etc # ls -l |grep rc ls -l |grep rc -rw-r--r-- 1 root root 1633 Aug 9 09:57 inputrc drwxr-xr-x 3 root root 368 Aug 13 01:31 rc.d drwxr-xr-x 2 root root 2656 Aug 9 10:11 rc0.d drwxr-xr-x 2 root root 2136 Aug 9 10:11 rc1.d drwxr-xr-x 2 root root 3456 Aug 9 10:11 rc2.d drwxr-xr-x 2 root root 3456 Aug 9 10:11 rc3.d drwxr-xr-x 2 root root 3384 Aug 9 10:11 rc4.d drwxr-xr-x 2 root root 3760 Aug 9 10:11 rc5.d drwxr-xr-x 2 root root 2592 Aug 9 10:11 rc6.d drwxr-xr-x 2 root root 1648 Aug 9 10:11 rcS.d

rc后面的数字代表的是runlevel,系统在一个时间点只有一个runlevel,可以通过runlevel命令来查看当前系统的runlevel

/etc/rc5.d # runlevel runlevel N 5

linux的runleve有如下类别 在这里插入图片描述

另外在每个runlevel下有很多的sub runlevel,序号从0-99,序号越大启动越靠后。 /etc/rc[runlevel].d/路径下的脚本是会开机启动的。且这个路径下的启动脚本是根据sub runlevel的大小先后启动的

Example: INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."

99代表的是sub runlevel,2代表的是runlevel

因此烧完版本后你可以看到/etc/rc2.d路径下多了一个 S99start_manager_server_le的软连接,软连接前面的S99就是这个脚本的sub runlevel.



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭