打印

如何绕开可恶的Linux系统登录界面?

[复制链接]
102|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子学长|  楼主 | 2018-10-5 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
每次进入Linux的调试界面,都需要输入用户名和密码,产品量产后把产线工人也锻炼成键盘高手了!有没有什么办法可以使系统自动登录?



小编的同事除了键盘高手,还有非常多的编程高手,问题丢给他们马上有了答案:“实现嵌入式linux的自动登录系统,可以直接修改登录的程序源代码,使登录程序自动使用指定的用户名与密码进行登录,从而达到自动登录系统的目的。”





注意:在开始验证自动登录操作之前,请首先确认Linux主机的开发环境。



开发主机环境:



Ubuntu 12.04(64位)、arm-none-linux-gnueabi-gcc系列交叉工具链



硬件清单:



M3352-N128LI 工控核心板与评估板



软件资源:



mingetty-1.07.tar.gz

util-linux-2.13-pre7.tar.bz2



一、编译mingetty登录工具



把源码包mingetty-1.07.tar.gz压缩文件拷贝到“~”目录下,然后使用tar命令进行解压,操作如下:



vmuser@vmhost:~$tar xzvf mingetty-1.07.tar.gz



进入到解压后的mingetty-1.07目录,在mingetty.c文件中,修改第352行的,修改如下:



352         char *logname, *s;

352         char *logname = "root", *s;



注意:蓝色字体为修改后内容。



同时,把mingetty.c文件中的第409~415行注释掉,修改如下:



409         #if 0

410         if (autologin) {

411                 do_prompt (0);

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

413                 logname = autologin;

414         } else

415                 while ((logname = get_logname ()) == 0)

416                         /* do nothing */ ;

417         #endif



修改Makefile文件,设置好交叉编译工具,CC=arm-none-linux-gnueabi-gcc,然后就可以使用make命令进行编译了,操作如下:



vmuser@vmhost:~/mingetty-1.07$ make





图1 编译mingetty程序



如图1所示,mingetty文件即是生成的目标程序,将该程序拷贝到根文件系统的/sbin目录下即可。



二、修改login登录工具



把源码包util-linux-2.13-pre7.tar.bz2压缩文件拷贝到“~”目录下,使用tar命令进行解压,操作如下:



vmuser@vmhost:~$tar xjvf util-linux-2.13-pre7.tar.bz2



解压后生成的目录为util-linux-2.13-pre7,在util-linux-2.13-pre7/login-utils目录下,修改login.c文件中的第345行,修改如下:



345     passwd_req = 1;

345     passwd_req = 0;



注意:蓝色字体为修改后内容。



同时在login.c文件中添加locale.h头文件,修改如下:



118 #include <utmp.h>

119 #include <locale.h>



注意:蓝色字体为修改后内容。



由于login-utils目录下无法直接使用make命令,因此,需要自己编写编译命令来生成login程序,操作如下:



vmuser@vmhost:~/util-linux-2.13-pre7/login-utils$ arm-none-linux-gnueabi-gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../include/





图2 编译login程序



如图2所示,login文件就是生成的目标程序,将该程序拷贝到根文件系统的/bin目录下即可。



三、修改inittab文件



完成上述两点操作之后,最后一步工作就是修改根文件系统下的/etc/inittab文件了,修改如下:



ttyO0::respawn:/sbin/getty -L ttyO0 115200 vt100 # GENERIC_SERIAL

ttyO0::respawn:/sbin/mingetty ttyO0 115200 vt100 # GENERIC_SERIAL



注意:蓝色字体为修改后内容。



将修改后的根文件系统重新下载到系统中即可实现自动登录,不需要再输入用户名和密码了。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

447

帖子

1

粉丝