开机后自动运行用户的应用程序或启动系统服务的命令保存在开发板根文件系统的/usr/etc/rclocal文件中。有的开发板开机后自动运行图形界面程序,需要按住ctrl+c让开发板进入到linux的SHELL提示符界面。其实可通过注释掉rclocal文件中调用图形界面的命令,增加运行用户应用程序的命令,达到开机自动运行用户应用程序的目的。
下面以我做的实验为例,描述具体的实现步骤。该方法源于网络,我加以验证,稍做修改,此文相当于转载。
1.进入pc机的linux
*** 作系统,在/nfs/usr/下通过mkdir
lz
命令新建一个名为lz的文件夹,进入lz文件夹,通过mkdir
hello新建一个hello文件夹用来存放我们将要编写的helloc文件和编译生成的可执行文件。
2.在/nfs/usr/lz/hello下通过vi
helloc命令新建helloc文件,编辑如下测试程序:
#include
int
main(){
printf("Hello,test
arm-linux!");
return
0;
}
完成编辑后通过:wq保存后退出。
3.主机通过如下命令交叉编译环境编译helloc:
#arm-linux-gcc
o
hello
helloc
4.通过ls
命令可以看到在/nfs/usr/lz/hello/下已经生成了hello可执行文件,我们可以在开发板上通过/hello来测试自己编写的helloc执行情况
5.修改rclocal文件,在文件的最后通过‘#’释掉启动图形界面的指令,增加执行用户应用程序hello的指令,具体实现如下:
#export
PATH=$QPEDIR/bin:$PATH
#qtopia
#/usr/qtopia/bin/qtopia
/usr/lz/hello//hello
注:前三行是注释掉启动图形界面,最后一行是添加的执行用户的hello测试程序。
6.重启开发板,通过vivi参数配置让开发板通过nfs挂载主机上的文件系统,这时我们就可以通过超级终端看到开发板已经运行了我们编写的hello程序。
嵌入式 Linux 如何以root身份自动登录 并开机自动执行脚本文件
下面 *** 作步骤记录如下:
要设置自启动程序需要解决两个问题:1、系统自动登录;2、自动执行脚本,
1)系统自动登录
(1)修改/etc/inittab
在inittab中,有如下配置
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
表示系统可以有六个控制台,可以用ALT+(F1~F6)来切换。而/sbin/agetty就是一个登陆验证程序,执行它,会提示用户输入用户名和密码,然后启动一个指定的shell(在passwd文件中指定的)。
所以,我们只需将其修改为不执行agettty,而是执行自己编写的一个脚本,就可以跳过用户名和密码的输入。修改如下:
1:2345:respawn:/root/logintest tty1 9600
这里我在/root/下放了一个测试脚本,这样系统启动时就会执行那个脚本,脚本内容:
#!/bin/sh
/bin/login -f root
脚本其实就是执行了一个root用户的登陆而已。
2)自动执行程序
方法有两种,一种是将要执行的代码放到1)中的/root/logintest的后面;
另一种是将要执行的代码放到/etc/profile文件的后面即可。
linux中设置自动启动可以编辑/etc/rcd/rclocal文件,使用vim在/etc/rcd/rclocal添加你需要启动的内容即可。
rclocal在在系统启动后执行,在用户登陆前执行
rclocal脚本是一个在各运行级别里到rcd目录的rclocal脚本的软链接,编号最大,所以被rc脚本执行时在各运行级别的初始化末尾进行。
在rclocal里设置是系统级别而非用户级别,因为启动脚本的初始化与用户无关(启动脚本初始化完成后,才进入用户登录界面)。与用户相关的设置shell的配置文件如: ~/bash_profile。
我在本教程中将介绍如何在各种Linux桌面环境下,自动启动某个程序。
GNOME桌面环境
在终端中运行这个命令,启动"Startup Applications Preferences"(启动应用程序首选项)GUI。
$ gnome-session-properties
点击"Add"(添加)按钮,即可配置一个新的启动应用程序。分别往"Name"(名称)栏和"Command"(命令)栏里面键入该应用程序的名称和该应用程序的CLI命令。往"Comment"(注释)栏里面键入可选的描述。
Unity桌面环境
在Unity Dash中键入"startup"(启动)。一旦"Startup Application"(启动应用程序)图标出现,就点击该图标。
一旦"Startup Applications Preferences"(启动应用程序首选项)窗口打开,输入"Name"(名称)、"Command"(命令)和"Comment"(注释),即可配置自动启动的某个程序。
KDE桌面环境
首先,打开"System Settings"(系统设置)窗口。你会在System Administration(系统管理)下面找到"Startup and Shutdown"(启动和关闭)图标。点击该图标。
系统会要求你从一系列已知的应用程序中选择自动启动的某个应用程序。如果你的程序没有列出来,在上面空白区输入该应用程序的名称。如果该程序(比如CLI命令)将在终端中运行,就要选中"Run in terminal"(终端中运行)复选框。点击"OK"(确定)按钮。
下一步,系统要求你输入该应用程序的详细信息,包括名称、命令和描述。
之后,你会看到该程序已完成配置,可自动运行。想配置额外的启动程序/脚本,你可以点击右边侧边栏中的"Add Program"(添加程序)按钮或"Add Script"(添加脚本)按钮。
MATE桌面环境
在MATE桌面上,依次进入到"Applications"(应用程序)-> "Preferences(首选项)-> "Startup Applications"(启动应用程序)。
你会看到"Startup Applications Preferences"(启动应用程序首选项)窗口。点击"Add"(添加)按钮。
输入启动应用程序的详细信息:"Name"(名称)、"Command"(命令)和"Comment"(注释)。
Xfce桌面环境
从Xfce桌面菜单中选择"Settings Manager"(设置管理器)。在"Settings"(设置)窗口中,点击"Session and Startup"(会话和启动)图标。
在"Application Autostart"(应用程序自动启动)选项卡下,点击底部的"Add"(添加)按钮。
输入自动启动的某个程序的详细信息:"Name"(名称)、"Command"(命令)和"Description"(描述)。
LXDE桌面环境
想在LXDE桌面环境下配置启动应用程序,只需在终端中运行下面几个命令。
$ mkdir -p ~/config/lxsession/Lubuntu/ $ touch ~/config/lxsession/Lubuntu/autostart $ leafpad autostart
然后,把下面这一项添加到已创建的自动启动文件中:
@conky
这里,"conky"是登录后,我想自动运行的那个CLI命令的名称。
保存并关闭。
创建脚本,文件后缀 sh
创建 systemd 启动服,文件后缀 service
从服务的内容可以看出来,最终还是会调用 /home/luckyboy/auto_run_scriptsh 这个脚本。
实现方式1(高大上方式):通过在/etc/initd下添加启动/停止脚步,并在相应运行级别的/etc/rcd/rcXd目录下建立相应软连接的方式。这是LInux标准服务的启动方式,同时也支持采用service XXX start的方式启动和关闭。
1 在/etc/initd下放置相应启动程序的脚本,脚本必须实现start, stop, restart三和 *** 作。可以参考该目录已有的脚本,改写一下就行。
2 在/etc/rcd/rcXd(如rc3d)目录下用ln建立命令建立相应的link文件,K开头为关机时调用的,S开头为开机时使用的,后面接的数字表明这个服务相对于其它服务的启动优先级。可以参考该目录已有的连接文件名,ln一下就行。
实现方式2(菜鸟方式): 修改/etc/rcd/rclocal。这个文件一般会放一些用户个性化的命令。
有点像早期 DOS 年代的 autoexecbat 与 configsys, 它就是一个脚本,在里头添上你的应用就行了。
以上就是关于ARM Linux开机后自动运行特定程序的方法全部的内容,包括:ARM Linux开机后自动运行特定程序的方法、嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件、linux 怎么设置程序关闭后自启动等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)