linux 嵌入式 自启动 系统自动登录-自动启动程序或脚本

2019-07-12 14:40发布

linux嵌入式开发板,设置系统自动登录和自动运行脚本或程序,下面一一进行说明。 一、系统自动登录
 
1.1、在实验板添加logintest脚本

logintest脚本位置:/home/root/        //个人看自己放置位置

logintest内容:

#!/bin/sh   /bin/login -f root
注意修改其执行权限。

1.2、修改/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:/home/root/logintest tty1 9600            //logintest位置随个人系统而定
      这里在/root/下放了一个测试脚本logintest,这样系统启动时就会执行那个脚本,脚本其实就是执行了一个root用户的登陆而已。

  二、自动执行程序或脚本   自动执行程序或脚本有两种思路,第一种思路,系统自动登录后自动执行程序或脚本;第二种,系统运行后不登录root,直接执行脚本。下面仔细分析。

2.1、系统自动登录后自动执行程序或脚本

方法有两种,一种是将要执行的代码放到1.2中的/root/logintest的后面(此法借鉴他人,验证失败);另一种是将要执行的代码放到/etc/profile文件的后面即可。

本文所用实验板,在profile尾部输入代码如下:

cd /home/root/

./test.sh

2.2、系统运行后不登录直接运行程序或脚本

1)写好脚本,如 test.sh,把它放到 /etc/init.d 下,修改属性:

$ sudo chmod x test.sh

下面有这么几个目录值得注意:

rcS.d rc0.d rc1.d ... rc6.d ,

(0,1... 6 代表启动级别 0代表停止,1代表单用户模式,2-5代表多用户模式,6代表重启)

它们的作用就相当于 redhat 下的 rc.d ,

你可以把脚本放到 rcS.d,然后修改文件名,给它一个启动序号,如:S98test.sh

不过最好的办法是放到相应的启动级别下面。具体作法:

2)查看当前系统的启动级别

$ sudo runlevel 

N 5

3)设定启动级别

$ update-rc.d test.sh start 98 2 . 
   
    98 为启动序号,
   
    2是系统的运行级别,可自己调整,
   
    注意不要忘了结尾的句点。

现在我们到 /etc/rc5.d 下,就多了一个 S98test.sh 这样的符号链接。

注:该步骤的真实目的是:在/etc/rc5.d/目录下创建test.sh的符号连接,可用ln -s ***命令实现同样效果。

4)然后启动系统,测试一下设置是否有效。

这样系统会直接运行程序或脚本,而不用登录系统。你可以从网络登录系统进行其它操作,telnet 192.168.**.**。

参考文档:
1、http://www.285868.com/a/xtjc/5803.html

2、http://blog.chinaunix.net/uid-29960065-id-5037303.html