+ -
当前位置:首页 → 问答吧 → 【求助】我裁剪了LFS,现在想去掉登陆部分,让我的程序一开机就跑起来,怎么做?

【求助】我裁剪了LFS,现在想去掉登陆部分,让我的程序一开机就跑起来,怎么做?

时间:2007-11-29

来源:互联网

各位好:如题,
我裁剪了LFS大概40M,放在CF卡里,可以启动起来

1,现在想去掉登陆部分,(开机后不用登陆)

2,让我的程序一开机就跑起来,(我的程序成为一个自动运行的服务)





怎么做?谢谢各位

作者: 信天游   发布时间: 2007-11-29

研究一下系统的启动脚本吧

作者: csfrank   发布时间: 2007-11-29

1.我想可能需要改动一些软件包的源码,比如shadow包里的一些源码,还有sysvinit,util-linux等等的源码。或找一些其他可替代的包。只是改动启动脚本我认为不可行。

作者: hohoxu_hao115   发布时间: 2007-11-29

昨天我看了一下源码,只是改动util-linux里的agetty.c和shadow里的login.c就基本可以做到了,不过可能导致其他问题。

登录过程大概是这样的kernel->init->agetty->login

首先,根据/etc/inittab,init启动agetty(似乎是通过读写/dev/initctl这个管道设备,没仔细看),然后agetty获取登录用户名,以此为参数调用/bin/login,login获取密码,进行验证。如果登录失败,则login程序循环,获取用户名和密码,进行登录,直到达到最大次数。

因此,去掉用户输入过程(可以通过文件获取要登录用户名,或写死在程序里),取消密码验证,就可以直接登录了。

作者: hohoxu_hao115   发布时间: 2007-11-30

下面这种方法简单实用:

Linux的一个非常重要的特点就是多用户和其安全性能的特点.笔者在工作的时候发现,工控领域的控制器由于需要控制现场,因此发生故障,机器自动重启时,要求其能自动执行相应的应用程序执行工作,这时候登陆程序变成绊脚石,需要去掉.

笔者在网上查找相关资料的时候发现,大多是要更改原代码,或者配置文件,更改相当麻烦.笔者通过阅读mingetty源程序,发现该程序的参数已经支持了自动登陆的功能.

下面我将详细解说mingetty程序的参数意义:Software:mingetty-1.07

参数 意义
-a 自动登陆,后面参数为用户名
-d 延时,后面参数为延时时间
-l 所使用的登陆程序,后面参数为所使用的登陆程序名
-n 优先级,设定优先级
-r 根文件系统
-w 更改当前工作目录

修改/etc/inittab文件,在相应行行尾,增加:
1:2345:respawn:/sbin/mingetty tty1 -a root
2:2345:respawn:/sbin/mingetty tty2 -a root
3:2345:respawn:/sbin/mingetty tty3 -a root
4:2345:respawn:/sbin/mingetty tty4-a root
5:2345:respawn:/sbin/mingetty tty5 -a root
6:2345:respawn:/sbin/mingetty tty6 -a root

重新启动机器测试
来源:Linux公社 作者:Linuxidc

作者: 信天游   发布时间: 2007-11-30