linux新建一个用户并设置uid_怎样设置嵌入式Linux开机自动运行用户程序?

本文是Linux嵌入式开发日常记录,今天和大家分享下如何让嵌入式Linux系统开机后自动运行用户编写的程序?

644691964bf0d6a5919dfec1c36b705a.png

嵌入式系统的目标是要执行用户编写的、完成指定任务的程序,并且这个用户程序应该在系统启动后自动执行。比如:一个嵌入式Modbus通信控制器,它的任务是与PLC或其它智能设备进行Modbus通信。我们希望这个控制器在上电后比较短的时间(比如10秒)内进入工作状态,能够自动调用并执行其内部的通信程序,而不需要人为干预。要实现这个功能,就要对Linux系统进行配置,使其自动执行用户程序。

根据构建系统的不同,嵌入式Linux有三种初始化程序:

  1. BusyBox init;
  2. System V init;
  3. systemd;

本文介绍的方法是基于Biuldroot构建的、使用BusyBox init作为初始化进程的系统。

在Linux系统目录/etc/init.d/下面有两个脚本程序rcS和rcK。rcS是系统开机后执行的脚本,名称中的"S"是"Start"的意思;rcK是系统收到关机命令后执行的脚本,名称中的"K"是"Kill"的意思;本文只讨论系统开机脚本。

初始化程序init启动后,会执行rcS脚本程序。rcS会查找该目录(/etc/init.d/)下所有名称以"S"开头、并且后面跟随两位数字的脚本。下面这张图是我开发板/et/init.d/目录下的文件:

d78fff56c5d7fdc9df25ad8ce3152c43.png

S后面的数字表示启动的顺序,数字小的先启动。比如"S01logging"会比"S10mdev"先启动;

所以,如果我们想让自己的程序在开机后自动运行,就要写一个脚本程序,将其拷贝到/etc/init.d/目录下,并将其名称修改为"S+两位数字"的方式。

举个简单的例子:

我的Linux开发板有两个LED指示灯,我想让系统启动后自动将其点亮。

首先创建一个myStartOn的脚本,在其中写入如下代码:

a7041bdea70e55073ddd3e0aab7bb9e2.png

保存后为其增加可执行属性:

# chmod +x myStartOn

然后将该脚本拷贝到/etc/init.d/目录下,修改名称为"S99StartOn":

# mv myStartOn S99StartOn

然后重新启动开发板:

# reboot

这样,系统重启后就会自动执行S99StartOn脚本程序,将两个LED点亮了。

好了,关于嵌入式Linux开机自动运行用户程序就先介绍到这里。嵌入式系统将在未来的工业制造中发挥重要的作用,感兴趣的小伙伴和我一起学习吧。

我的新书《西门子S7-200 SMART PLC 应用技术——编程、通信、装调、案例》已经出版,欢迎点击下面的链接查看:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值