【技術(shù)貼】如何繞開可惡的Linux系統(tǒng)登錄界面?
小編的同事除了鍵盤高手,還有非常多的編程高手,問題丟給他們馬上有了答案:“實(shí)現(xiàn)嵌入式linux的自動登錄系統(tǒng),可以直接修改登錄的程序源代碼,使登錄程序自動使用指定的用戶名與密碼進(jìn)行登錄,從而達(dá)到自動登錄系統(tǒng)的目的?!?/p>
注意:在開始驗(yàn)證自動登錄操作之前,請首先確認(rèn)Linux主機(jī)的開發(fā)環(huán)境。
開發(fā)主機(jī)環(huán)境:
Ubuntu 12.04(64位)、arm-none-linux-gnueabi-gcc系列交叉工具鏈
硬件清單:
M3352-N128LI 工控核心板與評估板
軟件資源:
mingetty-1.07.tar.gz
util-linux-2.13-pre7.tar.bz2
1.1編譯mingetty登錄工具
把源碼包mingetty-1.07.tar.gz壓縮文件拷貝到“~”目錄下,然后使用tar命令進(jìn)行解壓,操作如下:
vmuser@vmhost:~$tar xzvf mingetty-1.07.tar.gz
進(jìn)入到解壓后的mingetty-1.07目錄,在mingetty.c文件中,修改第352行的,修改如下:
352 char *logname, *s;
352 char *logname = "root", *s;
注意:紅色字體為修改后內(nèi)容。
同時(shí),把mingetty.c文件中的第409~415行注釋掉,修改如下:
修改Makefile文件,設(shè)置好交叉編譯工具,CC=arm-none-linux-gnueabi-gcc,然后就可以使用make命令進(jìn)行編譯了,操作如下:
vmuser@vmhost:~/mingetty-1.07$ make
圖1 編譯mingetty程序
如圖1所示,mingetty文件即是生成的目標(biāo)程序,將該程序拷貝到根文件系統(tǒng)的/sbin目錄下即可。
1.2修改login登錄工具
把源碼包util-linux-2.13-pre7.tar.bz2壓縮文件拷貝到“~”目錄下,使用tar命令進(jìn)行解壓,操作如下:
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;
注意:紅色字體為修改后內(nèi)容。
同時(shí)在login.c文件中添加locale.h頭文件,修改如下:
118 #include
119 #include
注意:紅色字體為修改后內(nèi)容。
由于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文件就是生成的目標(biāo)程序,將該程序拷貝到根文件系統(tǒng)的/bin目錄下即可。
1.3修改inittab文件
完成上述兩點(diǎn)操作之后,最后一步工作就是修改根文件系統(tǒng)下的/etc/inittab文件了,修改如下:
ttyO0::respawn:/sbin/getty -L ttyO0 115200 vt100 # GENERIC_SERIAL
ttyO0::respawn:/sbin/mingetty ttyO0 115200 vt100 # GENERIC_SERIAL
注意:紅色字體為修改后內(nèi)容。
將修改后的根文件系統(tǒng)重新下載到系統(tǒng)中即可實(shí)現(xiàn)自動登錄,不需要再輸入用戶名和密碼了。