在使用Linux系統嵌入式開發時,每每須要設備繞過Linux的登陸系統使其自動啓動,好比咱們經常使用的SSH客戶端等。網上確實有不少方法,不知道是由於咱們的ARM9板子是私人訂製的緣故仍是什麼緣由,試了不少方法都不行,只有一種方法可行,特此記錄。html
1、更新mingetty:linux
一、到網站http://www.filewatcher.com/m/mingetty-1.07.tar.gz.13435-html下載mingetty-1.07.tar.gz;網站
二、解壓:tar -zxvf mingetty-1.07.tar.gz,進入解壓後的目錄;spa
三、修改mingetty.c中的代碼,僅需兩步:htm
(1)第352行的 char *logname,*s 更改成 char *logname = "root",*s;開發
(2)把第409-415行註釋掉,以下代碼:get
/* if (autologin) {源碼
do_prompt(0);it
printf("login:%s(automatic login)\n",autologin);編譯
logname = autologin;
}else
while((logname = get_logname()) == 0)
/* do nothing */ /* ; */
四、修改 makefile:
CC = arm-none-lonux-gnueabi-gcc;(此處應是交叉編譯的安裝路徑)
五、編譯生成mingetty:# make;
六、更新mingetty程序拷貝到根文件系統的 /sbin 目錄下,mingetty的源碼就更改完成了。
2、更新login:
一、到網站:http://www.filewatcher.com/_/?q=util-linux-2.13-pre7.tar.bz2下載源代碼;
二、解壓:tar -jxvf util-linux-2.13-pre7.tar.bz2,解壓後的文件夾爲 util-linux-2.13-pre7,進入此目錄,其中login的源碼目錄爲 util-linux-2.13-pre7/login-utils,然而 login-utils 文件中不存在make 文件,所以須要本身編寫命令生成 login;
三、修改login.c中的代碼:
(1)把第344行的 passwd_req = 1 更改成 passwd_req = 0;
(2)在文件中添加 locale.h 頭文件: #include <locale.h>;
四、編譯生成 login :
# arm-none-linux-gnueabi-gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../inlucde/ ;
五、更新 login :
將生成的 login 程序拷貝到根文件系統的 /bin 目錄下。
3、修改 inittab 文件:
將根文件系統 /etc/inittab 文件中的最後的登陸語句 #S2:2345:respawn:/sbin/getty 115200 ttyS2 改成 S2:2345:respawn:/sbin/mingetty ttyS2;
將修改後的根文件系統從新下載到系統中,系統啓動時就會直接登陸,不須要輸入用戶名和密碼了。