Linux文本模式自动登录,Linux开机自动登录(文本模式)

• Linux系统启动登录过程

以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下:

1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等硬件信息、设备启动顺序、时钟信息等等

2> 根据BIOS的启动顺序信息,依次执行,直到找到引导文件

3> Boot Loader:加载启动引导文件

4> 加载内核,完成Linux核心环境的建立

5> 执行/sbin/init程序,读取配置文件/etc/inittab,设定运行等级,如level 3(这是加载完内核后,系统执行的第一个程序)

6> init程序执行脚本/etc/rc.d/rc.sysinit:设定PATH变量、设定网络配置、启动swap分区、设定/proc等等

7> 依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块

8> 选择的运行等级是3,启动/etc/rc.d/rc.3.d/目录下的脚本程序,就是常说的开机自启服务

9> 执行/etc/rc.local脚本程序

10> 执行/sbin/mingetty程序,读取用户列表,并将用户名转化为/bin/login程序调用的参数

11> 执行/bin/login程序,等待输入并验证用户名和密码

至此,就清楚在level3模式下,想要实现自动登录,就需要在第10和11这两步进行修改。

• 重新编译/sbin/mingetty 程序

1. 查看当前系统的/sbin/mingetty 所属的软件包及其版本(例如:mingetty-1.08-5.el6.x86_64)

rpm -qf /sbin/mingetty

2. 根据当前版本,进入网站http://download.chinaunix.net/,搜索关键字“mingetty”,然后下载对应的源码软件包(由于该网站的相关资源不足,因此就下载mingetty-1.07-5.src.rpm 这个版本,也可直接在当前系统下通过wget 命令直接下载)

wget http://down1.chinaunix.net/distfiles/mingetty-1.07-5.src.rpm

3. 将下载/上传的源码软件包移动到/opt/rh 目录下,然后解压(应当有规划地放置和管理文件)

mv mingetty-1.07-5.src.rpm /opt/rh

cd /opt/rh

rpm2cpio mingetty-1.07-5.src.rpm |cpio -div

tar -zxvf mingetty-1.07.tar.gz

4. 修改文件mingetty-1.07/mingetty.c 中的代码(设置开机自动登录的用户为xxx,其中xxx必须是个可登录的用户):

1) 把第352 行的 char *logname, *s; 修改为 char *logname = "xxx", *s;

2) 把第409~415 行删掉或注释掉:

/*

409 if (autologin) {

410 do_prompt (0);

411 printf ("login: %s (automatic login)\n", autologin);

412 logname = autologin;

413 } else

414 while ((logname = get_logname ()) == 0)

415 /* do nothing */;

*/

5. 编译生成mingetty(编译过程需要时间,切勿中断)

cd /opt/rh/mingetty-1.07/ && make

6. 将make 生成的文件mingetty 强制覆盖到/sbin 目录下,至此,mingetty 的源码更改就完成了。

cp -f /opt/rh/mingetty-1.07/mingetty /sbin

• 重新编译生成/bin/login 程序

1. 查看当前系统的/bin/login 所属的软件包及其版本(例如:util-linux-ng-2.17.2-12.14.el6.x86_64)

rpm -qf /bin/login

2. 根据当前版本,进入网站http://download.chinaunix.net/,搜索关键字“util-linux”,然后下载对应的源码软件包(根据当前系统版本,推荐下载:util-linux-ng-2.17.2.tar.bz2)

cd /opt/rh

wget http://down1.chinaunix.net/distfiles/util-linux-ng-2.17.2.tar.bz2

3. 解压下载/上传的源码软件包

tar -jxvf util-linux-ng-2.17.2.tar.bz2

4. 修改文件util-linux-ng-2.17.2/login-utils/login.c 中的代码

1) 把第434 行的 passwd_req = 1; 修改为 passwd_req = 0;

432 username = tty_name = hostname = NULL;

433 fflag = hflag = pflag = 0;

434 passwd_req = 0;

435

436 while ((ch = getopt(argc, argv, "fh:p")) != -1)

2) 在文件声明部分添加: #include

80 #include 81

82 #include 83

84 #include

5. 先安装gcc 编译器,然后再编译生成login(编译过程需要时间,切勿中断)

yum install gcc

gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../include/

6. 将生成的文件login 强制覆盖到/bin 目录下,至此,login 的源码更改就完成了

cp -f login /bin/login

7. 最后就可以重启机器了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值