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