啟動層級為3時自動登入的實現(共需2個步驟,第一個步驟參考網上資料,第二個網上說的太麻煩,其實非常簡單即可實現)
1、mingetty-1.00-3.src.rpm軟體包
對於啟動層級為3的自動登入的實現,仍然需要考察/etc/inittab指令碼,
3:123:respawn:/sbin/mingetty tty3
因此,如果想在啟動層級3的情況下實現自動登入,必須要瞭解mingetty的功能,甚至要修改mingetty的代碼。用命令
rpm -qf /sbin/mingetty 可知redhat 8.0版本的mingetty包含在mingetty-1.00-3.src.rpm
軟體包中,下載該軟體包,安裝原始碼,預設情況下,代碼會安裝在/usr/src/redhat/下,我們關心的只是mingetty.c源檔案。
mingetty.c約有五百行代碼,主要實現如下功能:
開啟指定的tty(由參數指定);
提示使用者登入(login:);
獲得登入使用者名稱;
把使用者登入名稱作為參數,調用/bin/login。
我們所關心的部分實質上只有以下三行:
... ...
438while ((logname = get_logname ()) == 0);//mingetty.c檔案438行
439execl (_PATH_LOGIN, _PATH_LOGIN, "--", logname, NULL);
440error ("%s: can't exec " _PATH_LOGIN ": %s", tty, sys_errlist[errno]);
... ...
第一行的功能是輸出login提示,並獲得使用者輸入的登入使用者名稱,登入使用者名稱由logname返回。因此,可作如下修改
... ...
438// while ((logname = get_logname ()) == 0);//注釋掉本行,不再提示login:
439logname = "root";//添加本行代碼
440execl (_PATH_LOGIN, _PATH_LOGIN, "--", logname, NULL);
441error ("%s: can't exec " _PATH_LOGIN ": %s", tty, sys_errlist[errno]);
... ...
注意,這裡假定使用者以超級使用者身份登入。
第二行以使用者登入名稱為參數,調用/bin/login程式,進一步實現登入。
第三行為出錯處理。
2、步驟1解決了登陸linux輸入使用者名稱的問題,此時登陸系統時只會提示你輸入密碼,因此步驟2即解決輸入密碼問題。
只用如下命令列即可快速實現:
passwd -d root(因為預設超級使用者登陸,故此處刪除超級使用者的密碼)
3、在/etc/inittab中修改系統層級為3
重啟即可自動登入系統