2021-05-12 14:32:11
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)
1
|
rpm -qf /sbin/mingetty |
2. 根據當前版本,進入網站http://download.chinaunix.net/,搜尋鍵碼“mingetty”,然後下載對應的原始碼軟體包(由於該網站的相關資源不足,因此就下載mingetty-1.07-5.src.rpm 這個版本,也可直接在當前系統下通過wget 命令直接下載)
1
|
wget http: //down1 .chinaunix.net /distfiles/mingetty-1 .07-5.src.rpm |
3. 將下載/上傳的原始碼軟體包移動到/opt/rh 目錄下,然後解壓(應當有規劃地放置和管理檔案)
1
2
3
4
|
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(編譯過程需要時間,切勿中斷)
1
|
cd /opt/rh/mingetty-1 .07/ && make |
6. 將make 生成的檔案mingetty 強制覆蓋到/sbin 目錄下,至此,mingetty 的原始碼更改就完成了。
1
|
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)
1
|
rpm -qf /bin/login |
2. 根據當前版本,下載對應的原始碼軟體包(根據當前系統版本,推薦下載:util-linux-ng-2.17.2.tar.bz2)
Linux公社資源站下載:
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
使用者名稱與密碼都是www.linuxidc.com
具體下載目錄在 /2016年資料/4月/20日/Linux開機自動登入(文字模式)/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
1
|
cd /opt/rh |
3. 解壓下載/上傳的原始碼軟體包
1
|
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 <locale.h>
80 #include <sys/param.h> 81 82 #include <locale.h> 83 84 #include <stdio.h> |
5. 先安裝gcc 編譯器,然後再編譯生成login(編譯過程需要時間,切勿中斷)
1
2
|
yum install gcc gcc -o login login.c .. /lib/setproctitle .c checktty.c -Wall -lcrypt -I .. /include/ |
6. 將生成的檔案login 強制覆蓋到/bin 目錄下,至此,login 的原始碼更改就完成了
1
|
cp -f login /bin/login |
7. 最後就可以重新啟動機器了。
相關文章