Linux啟動流程與Grub的配置(轉)

BSDLite發表於2007-08-15
Linux啟動流程與Grub的配置(轉)[@more@]一、Linux的啟動流程
1. 從BIOS到KERNEL
BIOS自檢->MBR(GRUB)->KERNEL->KERNEL自解壓->核心初始化->核心啟動
2. 核心啟動:建立1#程式並執行,由它建立若干核心執行緒(kernel thread),然後裝入並執行程式/sbin/init(變成一個使用者程式

)。此後,init根據/etc/inittab配置檔案來執行相應的指令碼進行系統初始化,如設定鍵盤、字型,裝載模組,設定網路等
對於Redhat來說,執行的順序為:
/etc/rc.d/rc.sysinit # 由init執行的第一指令碼
/etc/rc.d/rc $RUNLEVEL # init執行指定執行級別($RUNLEVEL為預設的執行模式)的各指令碼;
/etc/rc.d/rc.local #執行模式2、3、5時會執行的指令碼
/sbin/mingetty(或getty) # 等待使用者登入

/etc/inittab中指定了系統的執行級別(RUNLEVEL),init根據執行級別啟動相關的服務(一些後臺程式),實現不同的功能。
RUNLEVEL值為:0-6
0:halt, 1:單使用者,2:多使用者,3:多使用者並啟動NFS服務
4:保留,5:執行xdm(X window)以圖形介面方式登入
6:reboot
3、/etc/inittab檔案

/etc/inittab的檔案內容如下:
# 設定系統開機預設的RUNLEVEL:
id:3:initdefault:

# 開始進行RUNLEVEL的服務啟動前,使用來偵測與初始化系統環境的設定檔案:
si::sysinit:/etc/rc.d/rc.sysinit

# 7 個不同 run level 的,需要啟動的服務的 scripts 放置路徑:
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# 是否允許按下 [ctrl]+[alt]+[del] 就重新開機的設定專案:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# 本機端終端機啟動的個數:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# 在 X Window (RUNLEVEL 5) 環境下的啟動 script 設定專案:
x:5:once:/etc/X11/prefdm -nodaemon

這個檔案的語法是這樣的:

識別符號:級別:init 的動作行為:指令專案
1. 識別符號:
最多四個字元,代表 init 的主要工作專案,只是一個簡單的代表說明。
2. 級別:
該專案在哪些 run level 底下進行的意思。如果是 35 則代表 runlevel 3 與 5 都會執行。
3. init 的動作行為:
主要可以進行的動作專案意義有:
initdefault :代表預設的 run level 設定值;
sysinit :代表系統初始化的動作專案;
ctrlaltdel :代表 [ctrl]+[alt]+[del] 三個按鍵是否可以重新開機的設定;
wait :代表後面接的指令專案必須要執行完畢才能繼續後面的動作;
respawn :代表後面接的, init 仍會主動的『重新』啟動。
更多的設定專案請參考 man inittab 的說明。
4. 指令專案:
亦即應該可以進行的指令,通常是一些 script 囉。

說明:如根據上面的檔案,init程式執行時根據/etc/inittab檔案的內容,完成以下功能
(1)獲取RUNLEVEL(檔案中的這一行 id:3:initdefault:)為3
(2)執行rc.sysinit(檔案中的這一行 si::sysinit:/etc/rc.d/rc.sysinit)
(3)執行/etc/rc.d/rc3.d目錄中的指令碼(檔案中的這一行 l3:3:wait:/etc/rc.d/rc 3,且因為本例RUNLEVEL為3)
(4)然後設定是否允許按下 [ctrl]+[alt]+[del] 就重新開機(檔案中的這一行 ca::ctrlaltdel:/sbin/shutdown -t3 -r now

,當然如果不允許,可把此行註釋掉)
(5)啟動六個終端介面tty1-tty6
(6)最後如果我們使用的是 run level 5 ,那麼除了這六個終端機之外, init 還會執行 /etc/X11/prefdm -nodaemon 其主要

的功能就是在啟動 X Window 啦!

二、GRUB及其配置
1.GRUB(啟動引導器程,低版本的為lilo,其配置檔案為:/etc/lilo.conf)簡介
安裝Linux後GRUB位於硬碟0柱面,0磁軌,1扇區。是計算機啟動過程中執行的第一個真正的軟體,通常計算機啟動時在透過BIOS自

檢後讀取並執行硬碟的主引導扇中的啟動引導器程式,啟動引導器再負責載入啟動硬碟分割槽中的作業系統。
2.GRUB的配置檔案—grub.conf
可透過/boot/grub/grub.conf配置GRUB,其檔案內容大致如下:

default 0 ----設定GRUB的預設啟動項
splashimage (hd0,0)/boot/grub/splash.xpm.gz ----用於指定某一個檔案作為啟動選單的背景圖象
timeout 30 ----設定選單的啟動延時

title=Boot Linux using initrd ----選單項名稱
root (hd0,0) ----設定GRUB的根裝置(root)為linux核心所在的分割槽
kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gz ----使用kernel命令後跟linux核心檔案作為引數,載入

linux的核心檔案
initrd /initdisk.gz ----使用initrd命令載入映象檔案
title=Windows NT ----選單項名稱
root (hd0,1) ----設定Windows NT系統所在的分割槽
makeactive ----設定根裝置為活動分割槽(針對windows不能從非活動分割槽啟動)
chainloader +1 ----使用chainloader命令呼叫windows分割槽的啟動引導器引導windows系統,+1表示第一個扇區
3.忘記根口令時的設定
啟動計算機,在顯示GRUB選單時---按e鍵,進入編輯---選kernel項---按e鍵---輸入空格+single 回車---按b鍵,重啟系統進入單用

戶模式,輸入以下命令更改口令:
#passwd root
#reboot
4.為grub設定口令
為防止使用者在顯示grub選單時進入編輯,以單使用者模式啟動更改root使用者口令,可給grub設定口令。
修改/boot/grub/grub.conf檔案,加上:password 口令
(假設密碼為123456)
(1)設定全域性口令
password 123456
default=1
timeout=10
……
(2)可使用全域性口令鎖定啟動選單項
緊跟在title命令之後新增lock命令
password 123456
default=1
timeout=10
splashimage=(hd0,7)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
lock
root (hd0,7)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img

(3)設定獨立的口令鎖定啟動選單項,在選單項中使用password命令
可實現全域性口令和選單項口令的分級管理。
password 123456
default=1
timeout=10
splashimage=(hd0,7)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
password 67890
root (hd0,7)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
(4)可以使用MD5L加密口令
採用#grub-md5-crypt
或 #grub
grub>md5crypt
Password:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960408/,如需轉載,請註明出處,否則將追究法律責任。

相關文章