標籤:
• Linux系統啟動登入過程
Linux系統從啟動到登入的整個過程大致如下:
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)
rpm -qf /sbin/mingetty
2. 根據目前的版本,進入網站http://download.chinaunix.net/,搜尋索引鍵“mingetty”,然後下載對應的源碼軟體包(由於該網站的相關資源不足,因此就下載mingetty-1.07-5.src.rpm 這個版本,也可在工作站下通過wget 命令直接下載)
wget http://down1.chinaunix.net/distfiles/mingetty-1.07-5.src.rpm
3. 將下載/上傳的源碼軟體包移動到/opt/rh 目錄下,然後解壓(養成一個分類放置和管理良好的習慣)
mv mingetty-1.07-5.src.rpm /opt/rhcd /opt/rhrpm2cpio mingetty-1.07-5.src.rpm |cpio -divtar -zxvf mingetty-1.07.tar.gz
4. 修改檔案mingetty-1.07/mingetty.c 中的代碼(設定開機自動登入的使用者為XXX,且該使用者必須存在):
5. 編譯產生mingetty(編譯過程需要時間,切勿中斷)
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. 根據目前的版本,進入網站http://download.chinaunix.net/,搜尋索引鍵“util-linux”,然後下載對應的源碼軟體包(根據當前工作站版本,推薦下載:util-linux-ng-2.17.2.tar.bz2)
1 cd /opt/rh2 wget http://down1.chinaunix.net/distfiles/util-linux-ng-2.17.2.tar.bz2
3. 解壓下載/上傳的源碼軟體包
1 tar -jxvf util-linux-ng-2.17.2.tar.bz2
4. 修改檔案util-linux-ng-2.17.2/login-utils/login.c 中的代碼
5. 先安裝gcc 編譯器,然後再編譯產生login(編譯過程需要時間,切勿中斷)
1 yum install gcc2 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. 最後就可以重啟機器了
RHEL/CentOS純文字模式下的開機自動登入