Petalinux 添加自定义启动后自动执行脚本


前言

Petalinux 终归是属于Linux的其中一个发行版,也就是说它可以像绝大多数发行版本一样,向/etc/init.d目录添加自己的脚本,然后更改部分系统文件来实现。如果你的想法是这样,可以参考文章:Linux—添加开机启动(服务/脚本)

本文所介绍的方法,主要是用于在编译Petalinux镜像的时候,就将其添加进去。好处就是 Build Once ,Use All


一、操作步骤

  1. 初始化 PetaLinux 运行环境:
source <PetaLinux-安装目录>/settings.sh
  1. 创建自动执行脚本相关文件:
cd <工程根目录>
petalinux-create -t apps --template install -n <自定义脚本名字> --enable
  1. 修改 Bitbake 脚本文件: <工程根目录>/project-spec/meta-user/recipes-apps/<自定义脚本名字>/<自定义脚本名字>.bb
#
# This file is the <自定义脚本名字> recipe.
#

SUMMARY = "Simple <自定义脚本名字> application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://<自定义脚本名字> \
    "

S = "${WORKDIR}"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

inherit update-rc.d

INITSCRIPT_NAME = "<自定义脚本名字>"

INITSCRIPT_PARAMS = "start 99 S ."

do_install() {
        install -d ${D}${sysconfdir}/init.d
        install -m 0755 ${S}/<自定义脚本名字> ${D}${sysconfdir}/init.d/<自定义脚本名字>
}

FILES_${PN} += "${sysconfdir}/*"
  1. 修改修改目标脚本文件<工程根目录>/project-spec/meta-user/recipes-apps/<自定义脚本名字>/files/<自定义脚本名字> ,比如
#!/bin/sh

echo "Hello World!"
  1. 重新编译
petalinux-build

二、细节讲解

1.Petalinux 命令

petalinux-create -t apps --template install -n <自定义脚本名字> --enable

-t:创建的类型,自启动脚本文件在这其中是以app形式添加进去(表述不准确,有想深入了解请看UG1144)
--template:样板工程

2.Bitbake食谱

协议声明和工程文件地址,不重要

#
# This file is the <自定义脚本名字> recipe.
#

SUMMARY = "Simple <自定义脚本名字> application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://<自定义脚本名字> \
    "

重点

# 源目录
S = "${WORKDIR}"

# 脚本目录
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

# Bitbake类文件包含了一些bitbake任务的定义,例如怎么配置、怎么安装。
# 配方(recipes)文件继承类文件,就继承了这些任务的定义。
# 我们现在需要增加一个使用update-rc.d来配置自启程序,只要在配方(recipes)文件中继承。使用方法如下。
inherit update-rc.d

# 至于为什么是update-rc.d,可以在网上查到,该命令就是用于配置linux中自启动程序,
# 所以下面两项的意思就很简单了,就是update-rc.d的两个参数。
# 至于启动项“99”后面又跟的S,其实是指Linux里面的运行级别。1|2|3|4|5|6|0|S
INITSCRIPT_NAME = "<自定义脚本名字>"

INITSCRIPT_PARAMS = "start 99 S ."

# 1为单用户模式
# 2-4是文本模式,一般不用图形界面的话用3就行了,3是多用户字符界面模式
# 5是多用户图形模式
# 0关机
# 6重启
# S就是全都有

安装目录

do_install() {
        install -d ${D}${sysconfdir}/init.d
        install -m 0755 ${S}/<自定义脚本名字> ${D}${sysconfdir}/init.d/<自定义脚本名字>
}

FILES_${PN} += "${sysconfdir}/*"
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值