+ -
当前位置:首页 → 问答吧 → 请教lfs中自动登录的问题(结贴)

请教lfs中自动登录的问题(结贴)

时间:2008-11-20

来源:互联网

如何实现刚刚搭建好的lfs,启动后不输入用户root和密码,运行.bash_profile
试过很多方式,修改过util-linux-2.12r/login-utils/下的源文件,并编译

在agetty.c的源代码中的第366行和367行
366 while ((logname = get_logname(&options, &chardata, &termio)) == 0)
367 next_speed(&termio, &options);
此处调用了get_logname得到用户输入的用户名,get_logname在1014行调用了do_prompt函数,输出了登录的提示符,类似于“login:”。这里,我们把366和367行注释,直接赋值logname为root:
366 //while ((logname = get_logname(&options, &chardata, &termio)) == 0)
367 // next_speed(&termio, &options);
368 logname = “root”;

修改源login命令的源代码
login程序在getty的同一个进程空间中运行,接受getty传来的用户名参数作为登录的用户名。
在login.c的源代码中的第407行:
407 passwd_req = 1;
通过对源代码的分析,此处为密码是否需要验证的一个开关。我们修改此处,把密码需要验证的开关直接关闭:
407 //passwd_req = 1;
408 passwd_req = 0;

结果为用户名可以不输入,但是登陆提示输入密码。
请大虾们讨论如何解决这个问题?

作者: figured69   发布时间: 2008-11-20

问题解决,结贴。
方法同上
利用lfs中编译util-linux-2.12r的命令编译出agetty
然后make clean
./configure
cd login-utils
make login
编译出login放入/bin/
重启,自动进入bash。

作者: figured69   发布时间: 2008-11-21

感谢共享,谢谢!

作者: hongfeng   发布时间: 2008-11-21

引用:
作者: figured69
问题解决,结贴。
方法同上
利用lfs中编译util-linux-2.12r的命令编译出agetty
然后make clean
./configure
cd login-utils
make login
编译出login放入/bin/
重启,自动进入bash。
这里应该不用make clean的
LFS中使用的是shadow包中的login,所以在login-utils包中修改login源码,就需要进入login-utils目录编译生成login
在新版本中configure是加上--enable-login-utils就可以了

作者: lofeng410   发布时间: 2008-11-27

我采用了新版本的util-linux来尝试,出了点问题,系统启动不来了
现在只好用livecd来上网
提示错误:
INIT:ID "6" respawning too fast:disabled for 5 minutes
INIT:no more processes left in this runlevel

作者: lofeng410   发布时间: 2008-11-27

这个问题也有人出过,他的是/etc/inittab表写错了点东西,不知道你的是不是?

作者: ti8er   发布时间: 2008-11-27

我的inittab文件没有写错什么东西
只是把默认的runlevel改为3,其他的没有动。
我实在centos5.2中替换的,还好有备份,已经恢复过来了~~

作者: lofeng410   发布时间: 2008-11-27

给你个更直接了当的:

代码:
 kernel /boot/kernel root=/dev/hd rw init=/bin/bash --rcfile /etc/profile
看截屏
上传的图像
bash.JPG (66.4 KB, 18 次查看)

作者: ServerOnly   发布时间: 2008-11-28

这不就是传说中的单用户登录模式?好像是忘记root密码时用的一招。

作者: ti8er   发布时间: 2008-11-28