0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全志Tina Linux下busybox init简介

冬至子 来源:丨budboool 作者:丨budboool 2023-11-15 14:26 次阅读

一、简介

tina 使用busybox init方式启动,首先调用执行pseudo_init(挂载文件系统,如/proc、/tmp、/sys /etc、/usr),接着会调用/sbin/init进程,而init进程调用的第一个启动脚本为/etc/init.d/rcS。

二、平台的自定义

不同的平台文件系统具有其共性与特殊性。tina/packge/busybox-init-base-files/files下提供了所有平台的基础文件。

而在tina/target/allwinner/XXX/busybox-init-base-files下存放的是平台特性文件,其优先级高于前者,即当前者目录和后者存在有相同文件时,以后者为准。如有以下两个文件:

A:tina/target/allwinner/r11-R11_pref1/busybox-init-base-files/etc/banner
B:tina/package/busybox-init-base-files/files/etc/banner

最终拷贝到文件系统中的为A。

三、pseudo_init与rcS

pseudo_init与rcS文件中存在很多平台共性的代码,避免系统充斥大量冗余代码,以及方便基础文件的维护和开发。所以不允许在特定平台下自定义pseudo_init、rcS文件(必须使用tina/packge/busybox-init-base-files/files下的pseudo_init、rcS)。

如果需要添加平台特定配置(pseudo_init,rcS没有配置),可将其写到rc.preboot,rc.final中,参考第四节。

四、rcS脚本

1.功能描述

(1)执行/etc/init.d/rc.preboot。

为了满足开机快速启动的需求,提供了用户可自定义rc.preboot文件,即在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/目录下创建rc.preboot脚本文件,将会被rcS最先调用执行。

(2)配置打印级别,主机名称。

(3)执行/etc/init.d/rc.log,配置系统log信息

系统默认使用的是tina/package/busybox-init-base-files/files/etc/init.d/rc.log脚本进行配置系统log信息。用户可在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下创建rc.log,自定义rc.log。

如果需要使用默认rc.log,需要在make menuconfig配置。

Base system  --- >
     busybox-init-base-files......................... Busybox init base system  --- >
      [*]   Use the rc.log

(4)挂载UDISK。

(5)执行/etc/init.d/rc.modules,加载内核模块。

系统默认使用的是tina/package/busybox-init-base-files/files/etc/init.d/rc.modules脚本进行内核模块自加载,用户可在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下创建rc.modules,自定义rc.modules。

如果需要使用默认rc.modules,需要在make menuconfig配置如下。

Base system  --- >
     busybox-init-base-files......................... Busybox init base system  --- >
       [*]   Use the rc.modules

(6)启动/etc/rc.d下的脚本。

关于执行rc.d下的启动脚本,目的为兼容procd式的应用脚本。/etc/rc.d下的脚本是链接到/etc/init.d/下,默认情况下只执行adbd,如果需要执行其他脚本,需要在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下,自定义load_script.conf文件,文件内容中写上要启动的应用,如adbd(注意,每一个应用占一行)。可参考:tina/packge/busybox-init-base-files/files/etc/init.d/load_script.conf。

如果需要执行rc.d下的启动脚本,需要在make menuconfig做如下配置。

Base system --->
busybox-init-base-files......................... Busybox init base system --->
[*] Auto load the script in /etc/rc.d

(7)ota初始化。

(8)执行/etc/init.d/rc.final,用户自定义启动脚本。

用户可在tina/packge/busybox-init-base-files/files/etc/init.d/下创建一个rc.final脚本,自定义启动应用程序,该脚本将会被rcS最后调用执行。

2.rc.preboot与rc.final的区别?

rc.preboot比rc.final先运行,在执行rc.preboot脚本的时候,系统的一些初始化操作还没完成,如挂载UDISK、内核模块自加载、ota等等操作。而rc.final执行的时候,以上的初始化操作已经完成。

五.如何写应用的启动脚本

example:开机自启动smartlinkd(tina/package/allwinner/smartlinkd/files/smartlinkd.init)

1.方法一(特定格式要求)

(1)procd式

#!/bin/sh /etc/rc.common   #本质为script脚本,以#!开头, 之后执行/etc/rc.common
START=98        #开机启动优先级(序列) [数值越小, 越先启动]
STOP=98            #关机停止优先级(序列) [数值越小, 越先关闭]

USE_PROCD=1
PROG=smartlinkd

start_service() {    #启动函数
    procd_open_instance
    procd_set_param command $PROG -d
    procd_close_instance
}

shutdown() {
    echo shutdown
}

(2)Sys式

#!/bin/sh /etc/rc.common
START=98
STOP=98

PROG=smartlinkd

start() {
  smartlinkd -d &
}

使用上述procd式和sys式脚本,既能兼容procd init启动和busybox init的启动方式。
另外如果使用的是busybox init的启动方式,还需要在load_script.conf文件中换行添加内容:smartlinkd

2.方法二(无特定格式要求)

创建rc.preboot或者rc.final脚本,添加启动smartlinkd的内容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    589

    浏览量

    27302
  • RCS
    RCS
    +关注

    关注

    0

    文章

    57

    浏览量

    12672
收藏 人收藏

    评论

    相关推荐

    V853的ARM A7和RISC-V E907之间的通信

    作者:DOT小文哥 V853芯片包含两个CPU。一个是主核心Arm A7 CPU,运行Tina Linux自研Linux)系统,为芯片
    发表于 07-27 15:32 1193次阅读
    <b class='flag-5'>全</b><b class='flag-5'>志</b>V853的ARM A7和RISC-V E907之间的通信

    D1-H tina Docker 编译环境制作和使用

    /bash# 第一次执行的时候,需要下载镜像,会耗时比较久一点# 执行完上面 docker 命令后, 会将本机 /opt/tina-sdk 映射到 docker 中的 /sdk ,就可以在 docker
    发表于 03-14 11:26

    Tina Linux的Ubuntu20.04交叉编译OpenCV 4.5.2

    /libatomic.so* (target_path)2. diff如何应用?- 百度一: linux patch用法原贴链接:https://bbs.aw-ol.com/topic/221/志在线开发者交流企鹅
    发表于 03-14 11:36

    R329Tina安全启动校验linux/rootfs失败直接重启如何解决?

    问题描述客户发现在安全启动时,如果uboot中校验linux、rootfs失败,会进入uboot控制台,不符合他们的安全要求。他们希望校验失败重启或停止运行。问题分析默认情况Tina安全启动中
    发表于 03-15 10:04

    全新Tina Linux v5.0释放!带来全新AIoT产品开发体验

    Tina Linux基于linux内核深度定制开发的AIoT系统。“Tina”取“Tin
    发表于 07-12 18:25

    【免费试用04期】V853开发板试用活动

    】编译 Tina Linux部分之openWrt 编译【V853开发板试用】编译 Tina Linu
    发表于 07-21 10:27

    V853开发板试用之一(Tina Linux 5.0编译 和NPU使用)

    Tina Linux 5.0编译 和 基于NPU的YOLOV3模型使用。一、Tina Linux 5.0编译(一)下载源码V853的Tina
    发表于 08-21 23:40

    V853开发板试用】开箱及初识之美

    , 同时支持供电和数据传输PMU:AXP2101板身大小:长 118mm宽 75mmPCB板层:4层板系统配置官方支持Tina Linux系统,基于
    发表于 08-21 23:47

    V853开发板试用】编译 Tina Linux部分之buildroot 编译

    继【V853开发板试用】编译 Tina Linux部分之openWrt 编译之后,开始buildroot 编译buildroot 的编译大致分为以下流程:(1) ./build.s
    发表于 09-01 22:57

    V853如何实现mpp sample外编?

    V853开发板购买链接:https://item.hqchip.com/2500385672.html1.主题V系列多媒体mpp sample外编方法2.问题背景用户希望Tina SDK 能提供
    发表于 01-29 10:42

    V853芯片 如何在Tina V85x平台切换sensor?

    V853开发板购买链接:https://item.hqchip.com/2500386536.html目的V85x某方案目前默认Sensor是GC2053。实际使用时若需要用到GC4663(比如
    发表于 02-13 11:03

    Tina Linux 启动优化

    本文转载自V853在线文档:https://v853.docs.aw-ol.com/soft/tina_boottime/ Tina Lin
    发表于 05-24 10:32

    Tina Linuxbusybox init 简介

    一、简介 tina 使用busybox init方式启动,首先调用执行pseudo_init(挂载文件系统,如/proc、/tmp、/sys
    发表于 11-15 09:36

    Linux系统init进程的前世今生

    Linux系统中的init进程(pid=1)是除了idle进程(pid=0,也就是init_task)之外另一个比较特殊的进程,它是Linux内核开始建立起进程概念时第一个通过
    发表于 04-28 17:23 955次阅读

    AW_R329_Tina_Linux_开发入门_v0.5

    AW_R329_Tina_Linux_开发入门_v0.5
    发表于 10-19 15:11 3次下载