GRUB和LILO的區別,這文章就是最好的回答。(轉)
GRUB和LILO的區別,這文章就是最好的回答。(轉)[@more@]從普通的桌面使用者到 Linux?系統管理員,大部分 Linux 使用者都使用過一種名為引導載入程式的工具。此類工具的不同變種會提供不同層次的支援和功能。在很多情況下,Linux 發行版預設安裝的引導載入程式並不總是適合需要;每個引導載入程式的預設設定也是如此。在本文中,Laurence Bonney 討論了兩個流行的引導載入程式 —— LILO 和 GRUB —— 的優點和缺點,並建議了很多配置,以充分發掘機器的潛力。
在不考慮他們的工作或專業情況下,所有 Linux 使用者都會使用的是哪個工具?引導載入程式。透過本文了解引導載入程式的工作原理,認識兩個流行的引導載入程式 LILO(LInux LOader)和 GNU GRUB(GRand Unified Boot loader), 並研究兩者各自的優點和缺點。
什麼是引導載入程式?
最簡單地講,引導載入程式(boot loader) 會引導作業系統。當機器引導它的作業系統時,BIOS 會讀取引導介質上最前面的 512 位元組(即人們所知的 主開機記錄(master boot record,MBR))。在單一的 MBR 中只能儲存一個作業系統的引導記錄,所以當需要多個作業系統時就會出現問題。所以需要更靈活的引導載入程式。
主開機記錄本身要包含兩類內容 —— 部分(或全部)引導載入程式以及分割槽表(其中包含有關於介質其餘部分如何劃分為分割槽的資訊)。當 BIOS 引導時,它會尋找硬碟驅動器第一個扇區(MBR)中儲存的資料;BIOS 使用儲存在 MBR 中的資料啟用引導載入程式。
由於 BIOS 只能訪問很少量的資料,所以大部分引導載入程式分兩個階段進行引導。在引導的第一個階段中,BIOS 引導一部分引導載入程式,即 初始程式載入程式(initial program loader,IPL)。IPL 查詢分割槽表,從而能夠載入位於不同介質上任意位置的資料。首先透過這步操作 來定位第二階段引導載入程式(其中包含載入程式的其餘部分)。
第二階段引導載入程式是引導載入程式的主體;很多人認為這才是引導載入程式的真正部分。它包含有載入程式更需要磁碟空間的部分,比如使用者介面和核心載入程式。從簡單的命令列到繪聲繪色的 GUI,這些使用者介面的範圍很廣泛。
引導載入程式通常配置為兩種方式的其中之一:要麼是作為主引導載入程式(primary boot loader),要麼是作為二級引導載入程式(secondary boot loader)。主載入程式 是安裝在 MBR 上的第一階段引導載入程式(見先前的描述)。 二級引導載入程式 是安裝在可引導分割槽的第一階段引導載入程式。必須在 MBR 上安裝單獨的引導載入程式,並配置它將 控制權轉交給二級引導載入程式。
很多較新的 Linux 引導載入程式特別實用,因為它們提供了不同程度的互動,比如高階的 GUI 和加密的口令,以及透過選擇作業系統進行引導的能力。這樣,可以在具有多個物理磁碟的同一機器上共存多個作業系統。這種設定越來越常見,因為它幫助很多使用者在安裝新的 Linux 時,能夠保留先前由 Windows?機器所生成的寶貴資料資料。我個人認為這種設定非常美妙;只使用一臺機器就可同時擁有 Linux 和 Windows。
隨著時間的推移,引導載入程式已經得到了增強,為使用者引入了大量的功能。各個載入程式的功能和配置存在差異,但基本的目標是相同的。
現在來看兩個較為流行的引導載入程式:LILO 和 GRUB。
LILO
LInux LOader(LILO) 已經成為所有 Linux 發行版的標準組成部分。作為一個 較老的/最老的 Linux 引導載入程式,它那不斷壯大的 Linux 社群支援使它能夠隨時間的推移而發展,並始終能夠充當一個可用的現代引導載入程式。有一些新的功能,比如增強的使用者介面,以及對能夠突破原來 1024-柱面限制的新 BIOS 功能的利用。
雖然 LILO 仍在不斷地發展,但 LILO 工作原理的基本概念保持不變。
使用 LILO 作為引導載入程式
要使用 LILO 作為引導載入程式,需要做的事情取決於是要進行全新安裝還是要讓已經安裝的 Linux 改為使用 LILO。如果是要進行全新安裝,那麼直接跳轉到 配置 LILO 那一節。如果已經安裝了某個 Linux 發行版,那麼通常可以選擇安裝並配置 LILO(並可以將機器引導到新的 Linux 安裝)。
要將現有的 Linux 遷移到 LILO,首先必須獲得最新版本的 LILO(見 參考資料)。在做任何其他事情之前,建議您確保在手邊擁有一張 Linux 引導盤 —— 如果偶而弄錯了某些地方,它可以提供很大的幫助,能夠恢復到初始的 Linux 配置!將 LILO 安裝到系統中之後,讓它接管 MBR 非常簡單。以 root 使用者身份輸入:
CODE:
[Copy to clipboard]
# /sbin/lilo -v -v
這將使用當前的 LILO 預設值,抹去 MBR 中當前所有內容。不過,請閱讀 配置 LILO,以確保能夠按預期引導起來。也要注意,如果想要在同一機器上執行 Windows 和 Linux,那麼應該先安裝 Windows OS,然後再安裝 Linux OS,這樣,在 Linux 安裝中所選擇的引導載入程式就不會被 Windows 引導載入程式所覆蓋。與 Linux 引導載入程式不同,多數 Window 引導載入程式不支援引導 Linux。如果已經先安裝了 Linux,那麼只需要自己建立一張 Linux 引導盤,這樣就可以在安裝完 Windows 之後,回到 Linux 安裝中並重寫 MBR。
配置 LILO
LILO 的配置都是透過位於 /etc/lilo.conf 的一個配置檔案來完成的。清單 1 給出了一個示例配置,使用的是我的家用機器,支援 Linux 和 Windows 機器的雙重引導。瞭解我的工作站的基本配置,就可以想像出這些配置是如何與實際機器相關聯的: 主 HDD(物理磁碟 1)上安裝了 Windows XP(最初機器上只有它)。在 Linux 術語中,這個 HDD 是 /dev/hda(在 GRUB 術語中是 hd0,0)。 從 HDD(物理磁碟 2)上安裝了 Red Hat Linux;root 分割槽位於這個硬碟驅動器的第三個分割槽,即 /dev/hdb3(在 GRUB 術語中是 hd1,3)。
清單 1. lilo.conf 示例檔案
CODE:
[Copy to clipboard]
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
compact
default=Linux
image=/boot/vmlinuz-2.4.18-14
label=Linux
root=/dev/hdb3
read-only
password=linux
other=/dev/hda
label=WindowsXP
清單 1 中的選項:
QUOTE:
boot= 行告訴 LILO 在哪裡安裝引導載入程式。在上面的示例中,將把它安裝到第一塊硬碟的 MBR。也可以選擇將 LILO 安裝到 /dev/hdb3(示例中的 Linux 分割槽),這樣需要向 /dev/hda 安裝另一個引導載入程式,並令其指向 LILO 引導載入程式;然後只需要讓 LILO 作為二級引導載入程式。通常,引導載入程式應該位於 /dev/hda。還可以將這個引數指向軟盤驅動器(最常見的是 /dev/fd0),來製做 LILO 軟盤引導磁碟。 map= 指向引導期間 LILO 內部使用的對映檔案。當使用 /sbin/lilo 命令安裝 LILO 時, 它會自動生成這個檔案,其中包含有描述符表(還有其他內容)。建議不要改動這個檔案!
install= 是 LILO 在引導過程中內部使用的檔案之一。它同時包含有引導載入程式的主要部分和二級部分。boot.b 檔案的 一個片段被寫入到 MBR(引導載入程式的主要部分),它會指向那個對映,接下來指向二級引導載入程式。同樣,不要改動它!
prompt= 告訴 LILO 使用使用者介面(本例中給出了兩個選擇 —— Linux 和 WindowsXP)。除了使用 prompt/user 介面以外,在適當情況下還可以為 Linux 核心等指定具體的引數。如果不在配置檔案中指定此選項,那麼 LILO 將引導到 預設的 OS,不發生任何使用者互動,也不會等待。(但是請注意,如果在引導時按下了 SHIFT,那麼還是可以得到提示,當不想把 引導載入程式暴露給普通使用者時,這非常有用)。
timeout= 是引導提示在自動引導預設 OS(本例中是 Linux)之前的等待時間(以十分之一秒為單位)。 如果在 lilo.conf 沒有指定 prompt,那麼這個引數就會被忽略。
compact 選項可以大大加速引導過程,它會將連續的讀磁碟的請求合併為一個單獨的請求。不過,這可能是 一件禍福參半的事情,因為我在論壇上看到過很多貼子提到了關於此選項的問題。當希望從軟盤引導時,這個選項尤其有用。
default= 選項告訴 LILO 預設使用哪個映像進行引導,比如在等待超時之後。這與 lilo.conf 檔案中的某個映像的 標籤相關聯。如果沒有在配置檔案中指定此選項,那麼它將引導檔案中指定的第一個映像。
對於允許使用者引導到的每一個 Linux 版本,都應該指定 image= 及以下三個選項。image 選項指定希望 引導到的核心版本。 label= 標明瞭在執行期間希望能夠從使用者介面引導的不同 OS。另外,這個標籤用於指定引導的預設 OS。 (注意:標籤名稱中避免出現空格;否則,引導那個檔案時會出現無法預期的錯誤。)
root= 告訴 LILO OS 檔案系統實際所在的位置。在我們的示例中為 /dev/hdb3,即第二塊硬碟上的第三個分割槽。
read-only 告訴 LILO 以只讀的方式初始引導到檔案系統。OS 一旦完全引導起來,就會以讀寫方式掛載。
password= 允許您為將要引導到的特定 OS 設定口令。不幸的是,這個口令是以可讀文字的方式儲存在 lilo.conf 檔案中,所以,所有人都能夠讀取它。如果需要,還可以對想要引導自的每個作業系統設定口令(在我們的示例中,只為 Linux 的引導 設定了一個口令)。
other= 的動作類似於 image 和 root 選項的組合,但是用於除了 Linux 以外的其他作業系統。 在我們的示例中,它告訴 LILO 到哪裡去找到 Windows OS(位於第一塊硬碟的第一個分割槽)。如果先安裝 Windows,後安裝 Linux,通常會是這樣。
label= 與所有其他 label 選項相同。
在 lilo.conf 檔案中可以使用很多其他引數,不過清單 1 中的引數就足以讓機器可用了。要獲得關於 lilo.conf 的這些以及其他引數的 進一步資料,請參考手冊頁(man lilo.conf)。由於在引導時不會讀取 lilo.conf,所以,當這個檔案有改動時,需要“更新”MBR。 如果不完成此步驟就重新引導,那麼對 lilo.conf 的修改不會在啟動中反映出來。與先前將 LILO 寫入 MBR 類似,需要執行:
CODE:
[Copy to clipboard]
$ /sbin/lilo -v -v
-v -v 標記會為您給出非常詳細的輸出。當像我們那樣執行 LILO 時,有很多引數可以指定。 參閱手冊頁以獲得更進一步的資訊(man lilo)。
初始引導過程
當 LILO 初始引導時,它會按次序列印出每個字母 —— L-I-L-O。如果所有字母都顯示出來,那麼第一階段引導就成功了。缺少任何內容 都表示出現了問題: L:第一階段引導載入程式已經被載入。如果 LILO 停止在這裡,那麼是在引導第二階段引導載入程式時出現了問題。這通常會伴隨有一個錯誤程式碼。 在這個階段的常見問題是介質問題,或者在 lilo.conf 檔案中指定了不正確的磁碟引數。
QUOTE:
LI:第二階段引導載入程式已經被載入。LILO 在此處停止表示第二階段引導載入程式不能被執行。同樣,這可能是因為出現了與只顯示 L 類似的問題: 正在載入,或者因 boot.b 檔案被破壞、移動或刪除而不能載入。
LIL:第二階段引導載入程式正在被執行。此時,可能會再次出現介質問題,或者對映檔案(如 lilo.conf 檔案中所指定的)在尋找描述符表時 可能會出現問題。
LIL?:載入到與上面相同的階段。這通常意味著載入第二階段引導載入程式使用了錯誤的地址,最常見的原因是 boot.b 所在的位置與 lilo.conf 檔案所指定的不同。
LIL-:載入到與上面相同的階段。載入描述符表時出現問題,最常見的原因是描述符表錯誤。
LILO:LILO 成功被載入,沒有出現任何錯誤。
引導時的附加配置
LILO 被成功載入後,將看到 LILO 提示符。還是使用前面的示例 lilo.conf 檔案,此時將有兩個選擇,可能對 LILO 新手來說並不直觀。首先,可以 讓 LILO 超時(10 秒後),這將引導 /dev/hdb3,即 Linux 分割槽。另外,可以按下 TAB 鍵,這將列出將要引導的作業系統選項。在我們的示例 lilo.conf 中, 將得到的選項是 “Linux” 和 “Windows”。輸入哪一個,就會引導到哪個 OS。指定載入 Linux 選項,會提示輸入一個口令,在本例中是 linux。如果輸入的口令有誤,則會返回 LILO 提示符。
不幸的是,LILO 不支援引導期間的互動式配置,所以,只能在 lilo.conf 中或者執行 /sbin/lilo 時指定選項。
關於第一次嘗試 LILO 的最後一點建議是:我發現使用軟盤引導磁碟比使用硬碟實現 LILO 配置更為安全。為此,必須在 lilo.conf 檔案中使用 boot=/dev/fd0 替換 boot=/dev/hda。那樣,如果弄亂了 lilo.conf 檔案 中的任何配置,都可以取出引導磁碟並像先前一樣引導到 Linux。當使用軟盤進行引導一切正常以後,可以將 lilo.conf 修改回 boot=/dev/hda,然後最後一次執行 /sbin/lilo 來上傳修改。
GNU GRUB
近來,GRand Unified Boot loader(通常稱為 GRUB)似乎要取代 LILO 在引導載入程式方面的統治地位。GNU GRUB 基於原來的 GRUB 程式(最初由 Erich Stefan Boleyn 所建立),正在由自由軟體基金會(Free Software Foundation)進行積極開發。
使用 GRUB 作為引導載入程式
與使用 LILO 相同,使用 GRUB 作為活動的引導載入程式所需要的步驟,取決於是安裝全新的 OS 還是已經安裝了 Linux 並計劃轉移到 GRUB。 如果是進行全新安裝,那麼可以直接跳轉到 配置 GRUB 那一節。如果已經安裝了某個 Linux 發行版,那麼通常可以選擇 安裝並配置 GRUB(並可以將機器引導到新的 Linux 安裝)。
計劃遷移到 GRUB 的當前 Linux 使用者需要去獲得最新版本的 GRUB(見 參考資料)。同樣, 與 LILO 相同,在做任何其他事情之前,需要在手邊準備一張 Linux 引導盤。使用互動模式(後面將描述)則不需要這張磁碟, 不過最好擁有一張以備急需時使用。將 LILO 安裝到系統中之後,讓它接管 MBR 非常簡單。以 root 使用者身份輸入:
CODE:
[Copy to clipboard]
# /boot/grub/grub
這樣將載入一個類似於 BASH 的命令提示符,可以在這裡使用 GRUB 命令:
CODE:
[Copy to clipboard]
grub>; install (hd1,3)/boot/grub/stage1 (hd0) (hd1,3)/boot/grub/stage2 p (hd1,3)/boot/grub/menu.conf
這個命令使用了 GRUB 安裝命令,需要為它給出第一階段映像的位置以及 MBR 的位置(install (hd1,3)/boot/grub/stage1 (hd1))。 也要給出第二階段映像的位置((hd1,3)/boot/grub/stage2)。最後,可選項 p (hd1,3)/boot/grub/menu.conf 告訴 GRUB GUI 選單配置檔案的位置。
在前面的示例中,hd1 是我的 Linux Disk,hd0 是我的 Windows 磁碟。這樣將使用當前 GRUB 預設值,並抹去 MBR 中當前所有內容(請閱讀 配置 GRUB,以確保能夠按預期引導起來)。
配置 GRUB
GRUB 的配置都是透過位於 /boot/grub/grub.conf 的一個配置檔案來完成的。清單 2 給出了一個示例配置,使用的是我的家用機器,支援 Linux 和 Windows 機器的雙重引導:
清單 2. grub.conf 示例檔案
CODE:
[Copy to clipboard]
default=0
timeout=10
splashimage=(hd1,3)/grub/splash.xpm.gz
password --md5 $opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1
root (hd1,3)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
title Windows XP
password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1
rootnoverify (hd0,0)
chainloader +1
清單 2 中的選項:
QUOTE:
default= 選項通知 GRUB 在超時之後預設使用哪個映像進行引導。這一選項與 grub.conf 檔案中的某個映像相關聯。 0 表示指定了第一個,1 表示指定了第二個,依次類推。如果沒有在配置檔案指定此選項,那麼它將引導檔案中指定的第一個映像。
timeout= 是在自動引導預設 OS(在本例中是 Red Hat Linux)之前引導提示會等待多少秒。
splashimage= 是用作 GRUB GUI 背景的圖片所在的位置。
password 選項指定了使用 MD5 加密的口令,用於訪問 GRUB 的互動式引導選項。注意,這不會阻止使用者選擇 引導已經定義的 OS;需要為 每一個 -title 設定它。為了生成一個 md5 口令, 請執行 GRUB 所附帶的 grub-md5-crypt 工具(以 root 身份)。它將提示輸入一個希望加密的口令。然後輸出使用 MD5 加密的口令。將這個口令複製到 grub.conf 中 password -md5 之後,但是要在同一行上。通常這個口令可以設定為 root 口令,因為無論如何也只有 root 才可以讀取 grub.conf 檔案。
title 標明瞭在執行期間能夠從使用者介面引導的具體 OS。 與 LILO 不同,在這個名稱中可以有空格。
password 的設定方式與前面的 password 相同。如果計劃與其他使用者共享此機器,那麼不要將這個口令設定為 root 口令。
root 告訴 GRUB OS 檔案系統的實際位置。可見,GRUB 引用介質的方式與 LILO 不同。在 LILO 示例中, /dev/hdb3 是第二塊硬碟中的第三個分割槽。Grub 將此硬碟引用為(hd1,3),即第二塊硬碟的第三個分割槽(disk 0 是第一塊硬碟)。
kernel:vmlinuz-X.X.XX-XX 是 root 目錄中預設引導映像的名稱。
initrd:initrd-X.X.XX-XX.img 是 root 目錄中預設 initrd 映像的名稱。
title 與所有其他 title 選項相同。
password:見其他口令選項。
rootnoverify 告訴 GRUB 不要嘗試去改變 OS 的 root。這樣,當檔案系統不被 GRUB 所支援時,不會出現引導錯誤。
chainloader +1 告訴 GRUB 使用一個鏈式載入程式來載入這個 OS,載入 Windows 時需要這個選項。
在 grub.conf 檔案中可以使用很多其他引數,不過清單 2 中的引數就足以讓機器可用了。 要獲得關於 grub.conf 的這些以及其他引數的進一步資料,請參考手冊頁(man grub.conf)。
與 LILO 的配置檔案不同,grub.conf 會在引導時被讀取,當被修改時不必去更新 MBR。
初始引導過程
與 LILO 類似,當 GRUB 初始載入時,從 MBR 載入第一階段程式。載入後,它進入第一階段和第二階段引導載入程式之間的中間階段(為了方便討論,可稱為第 1.5 階段)。 之所以存在第 1.5 階段,是為了能夠對 /boot/grub 中的 GRUB 配置檔案進行常規的檔案系統訪問,而不是去訪問磁碟塊。然後進入引導載入程式的第二階段,GRUB 載入 grub.conf 檔案。
現在應該能夠看到 GRUB GUI 了。對於熟悉 Windows 的使用者來說,這看起來感覺比 LILO 更友好。不過,不要因為 GRUB 擁有 GUI 就認為它是一個不能 處理資料的引導載入程式。可選項多得驚人。(見 引導時的附加配置 中的提示。)
如果像我那樣配置,那麼現在應該能看到螢幕中有兩個選項:引導到 Red Hat Linux 或者引導到 Windows XP。預設情況下,它將載入 Linux。選擇任意一個的結果不言而喻。
現在來看一些好東西。
引導時的附加配置
在 GRUB GUI 中,按下任何鍵都會停止超時的計時。然後按下 P 鍵,可以輸入 GRUB 口令,並獲得對 GRUB 互動式引導選項的完全訪問許可權。 按下以下其中一個鍵,應該能夠使用三個選項之中的一個:
要在引導之前編輯命令,請按下 E。這將讓您能夠為當前選中的 OS 編輯具體的選項。GRUB 只會顯示出與那個 OS 的引導相關的選項, 然後您可以恰當地進行編輯。當為 root 檔案系統指定了錯誤的 HDD 時,這尤其有用。如果需要以單使用者模式訪問機器(不需要指定口令 就能夠讓您獲得 root 訪問許可權!),那麼在 GRUB 主螢幕上選擇 Linux OS。然後與前面一樣,按下 E,並移到核心那一行( 在我的示例中是 kernel /vmlinuz-2.4.18-14 ro root=LABEL=/)。然後在那一行最後新增 single,並按下 B 來使用修改過的 grub.conf 進行引導。在編輯模式下所做的任何修改都不會 儲存到 grub.conf 檔案中。
要修改核心引數,請按下 A。如果您是一位經驗豐富的 Linux 使用者,可以根據需要調整核心引數。 要獲得類似於 BASH 的命令列介面,請按下 C。這個小型的命令列介面允許您在系統中查詢 GRUB 配置檔案,載入另外的配置檔案, 編輯配置檔案中的行,以及直接輸入 GRUB 命令。如果配置的變化(比如刪除了某個分割槽)讓系統無法引導,那麼可能會用到這個介面。 如果需要將系統引導為單使用者模式,或者要讓執行級別為 3 而不是普通的執行級別,也可能會使用到它。
這些選項有很多用途,但超出了本文的範圍。
可見,GRUB 真正開放了引導期間的可能性。不過,這可能是一件好壞參半的事情,因為 GRUB 也潛在地允許攻擊者在 OS 載入之前訪問系統。 會被誤用的主要開放領域是:
訪問單使用者模式。所有載入到單使用者模式的人都會得到 root 訪問許可權,使得 Linux 可被隨意濫用。
訪問其他作業系統。任何配置為不需要口令的可引導作業系統,比如 DOS,都將是開放的。
訪問 GRUB 編輯器。這允許使用者獲得修改 GRUB 配置的完全訪問許可權。
在 GRUB 配置中,設定安全性非常重要;設定口令,並使用 MD5 加密,可以保證整個系統的安全。
GRUB 的未來
GRUB 將要被 GRUB2 所取代。原來的 GRUB 將要被重新命名為 GRUB Legacy;除了修復 bug 以外,不會再對它進行積極開發。GRUB2 將是對原來 GRUB 的完全重寫。到目前為止,以下特性是變化的核心部分:
透過建立壓縮的核心映像取代了第 1.5 階段
支援核心映像的動態載入
爭取讓整個 GRUB 框架成為物件導向的
支援國際化,比如 非-ASCII 字符集
支援不同硬體體系結構和不同平臺(不同於 Linux 的平臺)
GRUB 與 LILO 的比較
如本文開始處所述,所有引導載入程式都以類似的方式工作,滿足共同的目的。不過,LILO 和 GRUB 之間有很多不同之處:
LILO 沒有互動式命令介面,而 GRUB 擁有。
LILO 不支援網路引導,而 GRUB 支援。
LILO 將關於可以引導的作業系統位置的資訊物理上儲存在 MBR 中。如果修改了 LILO 配置檔案,必須將 LILO 第一階段引導載入 程式重寫到 MBR。相對於 GRUB,這是一個更為危險的選擇,因為錯誤配置的 MBR 可能會讓系統無法引導。使用 GRUB,如果配置檔案配置 錯誤,則只是預設轉到 GRUB 命令列介面。
結束語
與所有軟體相同,對某個使用者來說是最好的選擇,並不是對所有人來說都是最好的。至於這裡所涉及的兩個引導載入程式,我個人喜歡的是 GNU GRUB。它是一個非常好的全面的載入程式,組合了靈活的使用者介面和大量的功能。但是,還有很多使用過並忠愛 LILO 的人仍然選擇 LILO 作為引導載入程式。幸運的是,如果您剛剛開始接觸 Linux 引導載入,使用哪個都不會有太大問題。
關於安全性,任何可以接觸到引導磁碟/CD 的人,只需要使用沒有設定安全性的 grub.conf 或 lilo.conf,就可以繞過本文中提及的所有安全措施。 特別是使用 GRUB 時,因為能夠引導到單使用者模式,所以是一個嚴重的安全漏洞。解決此問題的一個簡單方法是在機器的 BIOS 中禁止透過 CD 和軟盤進行 引導,並確保為 BIOS 設定了一個口令,使得其他人不能修改這些設定。
祝您好運! 來自:IBM developerWorks Linux 專區
在不考慮他們的工作或專業情況下,所有 Linux 使用者都會使用的是哪個工具?引導載入程式。透過本文了解引導載入程式的工作原理,認識兩個流行的引導載入程式 LILO(LInux LOader)和 GNU GRUB(GRand Unified Boot loader), 並研究兩者各自的優點和缺點。
什麼是引導載入程式?
最簡單地講,引導載入程式(boot loader) 會引導作業系統。當機器引導它的作業系統時,BIOS 會讀取引導介質上最前面的 512 位元組(即人們所知的 主開機記錄(master boot record,MBR))。在單一的 MBR 中只能儲存一個作業系統的引導記錄,所以當需要多個作業系統時就會出現問題。所以需要更靈活的引導載入程式。
主開機記錄本身要包含兩類內容 —— 部分(或全部)引導載入程式以及分割槽表(其中包含有關於介質其餘部分如何劃分為分割槽的資訊)。當 BIOS 引導時,它會尋找硬碟驅動器第一個扇區(MBR)中儲存的資料;BIOS 使用儲存在 MBR 中的資料啟用引導載入程式。
由於 BIOS 只能訪問很少量的資料,所以大部分引導載入程式分兩個階段進行引導。在引導的第一個階段中,BIOS 引導一部分引導載入程式,即 初始程式載入程式(initial program loader,IPL)。IPL 查詢分割槽表,從而能夠載入位於不同介質上任意位置的資料。首先透過這步操作 來定位第二階段引導載入程式(其中包含載入程式的其餘部分)。
第二階段引導載入程式是引導載入程式的主體;很多人認為這才是引導載入程式的真正部分。它包含有載入程式更需要磁碟空間的部分,比如使用者介面和核心載入程式。從簡單的命令列到繪聲繪色的 GUI,這些使用者介面的範圍很廣泛。
引導載入程式通常配置為兩種方式的其中之一:要麼是作為主引導載入程式(primary boot loader),要麼是作為二級引導載入程式(secondary boot loader)。主載入程式 是安裝在 MBR 上的第一階段引導載入程式(見先前的描述)。 二級引導載入程式 是安裝在可引導分割槽的第一階段引導載入程式。必須在 MBR 上安裝單獨的引導載入程式,並配置它將 控制權轉交給二級引導載入程式。
很多較新的 Linux 引導載入程式特別實用,因為它們提供了不同程度的互動,比如高階的 GUI 和加密的口令,以及透過選擇作業系統進行引導的能力。這樣,可以在具有多個物理磁碟的同一機器上共存多個作業系統。這種設定越來越常見,因為它幫助很多使用者在安裝新的 Linux 時,能夠保留先前由 Windows?機器所生成的寶貴資料資料。我個人認為這種設定非常美妙;只使用一臺機器就可同時擁有 Linux 和 Windows。
隨著時間的推移,引導載入程式已經得到了增強,為使用者引入了大量的功能。各個載入程式的功能和配置存在差異,但基本的目標是相同的。
現在來看兩個較為流行的引導載入程式:LILO 和 GRUB。
LILO
LInux LOader(LILO) 已經成為所有 Linux 發行版的標準組成部分。作為一個 較老的/最老的 Linux 引導載入程式,它那不斷壯大的 Linux 社群支援使它能夠隨時間的推移而發展,並始終能夠充當一個可用的現代引導載入程式。有一些新的功能,比如增強的使用者介面,以及對能夠突破原來 1024-柱面限制的新 BIOS 功能的利用。
雖然 LILO 仍在不斷地發展,但 LILO 工作原理的基本概念保持不變。
使用 LILO 作為引導載入程式
要使用 LILO 作為引導載入程式,需要做的事情取決於是要進行全新安裝還是要讓已經安裝的 Linux 改為使用 LILO。如果是要進行全新安裝,那麼直接跳轉到 配置 LILO 那一節。如果已經安裝了某個 Linux 發行版,那麼通常可以選擇安裝並配置 LILO(並可以將機器引導到新的 Linux 安裝)。
要將現有的 Linux 遷移到 LILO,首先必須獲得最新版本的 LILO(見 參考資料)。在做任何其他事情之前,建議您確保在手邊擁有一張 Linux 引導盤 —— 如果偶而弄錯了某些地方,它可以提供很大的幫助,能夠恢復到初始的 Linux 配置!將 LILO 安裝到系統中之後,讓它接管 MBR 非常簡單。以 root 使用者身份輸入:
CODE:
[Copy to clipboard]
# /sbin/lilo -v -v
這將使用當前的 LILO 預設值,抹去 MBR 中當前所有內容。不過,請閱讀 配置 LILO,以確保能夠按預期引導起來。也要注意,如果想要在同一機器上執行 Windows 和 Linux,那麼應該先安裝 Windows OS,然後再安裝 Linux OS,這樣,在 Linux 安裝中所選擇的引導載入程式就不會被 Windows 引導載入程式所覆蓋。與 Linux 引導載入程式不同,多數 Window 引導載入程式不支援引導 Linux。如果已經先安裝了 Linux,那麼只需要自己建立一張 Linux 引導盤,這樣就可以在安裝完 Windows 之後,回到 Linux 安裝中並重寫 MBR。
配置 LILO
LILO 的配置都是透過位於 /etc/lilo.conf 的一個配置檔案來完成的。清單 1 給出了一個示例配置,使用的是我的家用機器,支援 Linux 和 Windows 機器的雙重引導。瞭解我的工作站的基本配置,就可以想像出這些配置是如何與實際機器相關聯的: 主 HDD(物理磁碟 1)上安裝了 Windows XP(最初機器上只有它)。在 Linux 術語中,這個 HDD 是 /dev/hda(在 GRUB 術語中是 hd0,0)。 從 HDD(物理磁碟 2)上安裝了 Red Hat Linux;root 分割槽位於這個硬碟驅動器的第三個分割槽,即 /dev/hdb3(在 GRUB 術語中是 hd1,3)。
清單 1. lilo.conf 示例檔案
CODE:
[Copy to clipboard]
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
compact
default=Linux
image=/boot/vmlinuz-2.4.18-14
label=Linux
root=/dev/hdb3
read-only
password=linux
other=/dev/hda
label=WindowsXP
清單 1 中的選項:
QUOTE:
boot= 行告訴 LILO 在哪裡安裝引導載入程式。在上面的示例中,將把它安裝到第一塊硬碟的 MBR。也可以選擇將 LILO 安裝到 /dev/hdb3(示例中的 Linux 分割槽),這樣需要向 /dev/hda 安裝另一個引導載入程式,並令其指向 LILO 引導載入程式;然後只需要讓 LILO 作為二級引導載入程式。通常,引導載入程式應該位於 /dev/hda。還可以將這個引數指向軟盤驅動器(最常見的是 /dev/fd0),來製做 LILO 軟盤引導磁碟。 map= 指向引導期間 LILO 內部使用的對映檔案。當使用 /sbin/lilo 命令安裝 LILO 時, 它會自動生成這個檔案,其中包含有描述符表(還有其他內容)。建議不要改動這個檔案!
install= 是 LILO 在引導過程中內部使用的檔案之一。它同時包含有引導載入程式的主要部分和二級部分。boot.b 檔案的 一個片段被寫入到 MBR(引導載入程式的主要部分),它會指向那個對映,接下來指向二級引導載入程式。同樣,不要改動它!
prompt= 告訴 LILO 使用使用者介面(本例中給出了兩個選擇 —— Linux 和 WindowsXP)。除了使用 prompt/user 介面以外,在適當情況下還可以為 Linux 核心等指定具體的引數。如果不在配置檔案中指定此選項,那麼 LILO 將引導到 預設的 OS,不發生任何使用者互動,也不會等待。(但是請注意,如果在引導時按下了 SHIFT,那麼還是可以得到提示,當不想把 引導載入程式暴露給普通使用者時,這非常有用)。
timeout= 是引導提示在自動引導預設 OS(本例中是 Linux)之前的等待時間(以十分之一秒為單位)。 如果在 lilo.conf 沒有指定 prompt,那麼這個引數就會被忽略。
compact 選項可以大大加速引導過程,它會將連續的讀磁碟的請求合併為一個單獨的請求。不過,這可能是 一件禍福參半的事情,因為我在論壇上看到過很多貼子提到了關於此選項的問題。當希望從軟盤引導時,這個選項尤其有用。
default= 選項告訴 LILO 預設使用哪個映像進行引導,比如在等待超時之後。這與 lilo.conf 檔案中的某個映像的 標籤相關聯。如果沒有在配置檔案中指定此選項,那麼它將引導檔案中指定的第一個映像。
對於允許使用者引導到的每一個 Linux 版本,都應該指定 image= 及以下三個選項。image 選項指定希望 引導到的核心版本。 label= 標明瞭在執行期間希望能夠從使用者介面引導的不同 OS。另外,這個標籤用於指定引導的預設 OS。 (注意:標籤名稱中避免出現空格;否則,引導那個檔案時會出現無法預期的錯誤。)
root= 告訴 LILO OS 檔案系統實際所在的位置。在我們的示例中為 /dev/hdb3,即第二塊硬碟上的第三個分割槽。
read-only 告訴 LILO 以只讀的方式初始引導到檔案系統。OS 一旦完全引導起來,就會以讀寫方式掛載。
password= 允許您為將要引導到的特定 OS 設定口令。不幸的是,這個口令是以可讀文字的方式儲存在 lilo.conf 檔案中,所以,所有人都能夠讀取它。如果需要,還可以對想要引導自的每個作業系統設定口令(在我們的示例中,只為 Linux 的引導 設定了一個口令)。
other= 的動作類似於 image 和 root 選項的組合,但是用於除了 Linux 以外的其他作業系統。 在我們的示例中,它告訴 LILO 到哪裡去找到 Windows OS(位於第一塊硬碟的第一個分割槽)。如果先安裝 Windows,後安裝 Linux,通常會是這樣。
label= 與所有其他 label 選項相同。
在 lilo.conf 檔案中可以使用很多其他引數,不過清單 1 中的引數就足以讓機器可用了。要獲得關於 lilo.conf 的這些以及其他引數的 進一步資料,請參考手冊頁(man lilo.conf)。由於在引導時不會讀取 lilo.conf,所以,當這個檔案有改動時,需要“更新”MBR。 如果不完成此步驟就重新引導,那麼對 lilo.conf 的修改不會在啟動中反映出來。與先前將 LILO 寫入 MBR 類似,需要執行:
CODE:
[Copy to clipboard]
$ /sbin/lilo -v -v
-v -v 標記會為您給出非常詳細的輸出。當像我們那樣執行 LILO 時,有很多引數可以指定。 參閱手冊頁以獲得更進一步的資訊(man lilo)。
初始引導過程
當 LILO 初始引導時,它會按次序列印出每個字母 —— L-I-L-O。如果所有字母都顯示出來,那麼第一階段引導就成功了。缺少任何內容 都表示出現了問題: L:第一階段引導載入程式已經被載入。如果 LILO 停止在這裡,那麼是在引導第二階段引導載入程式時出現了問題。這通常會伴隨有一個錯誤程式碼。 在這個階段的常見問題是介質問題,或者在 lilo.conf 檔案中指定了不正確的磁碟引數。
QUOTE:
LI:第二階段引導載入程式已經被載入。LILO 在此處停止表示第二階段引導載入程式不能被執行。同樣,這可能是因為出現了與只顯示 L 類似的問題: 正在載入,或者因 boot.b 檔案被破壞、移動或刪除而不能載入。
LIL:第二階段引導載入程式正在被執行。此時,可能會再次出現介質問題,或者對映檔案(如 lilo.conf 檔案中所指定的)在尋找描述符表時 可能會出現問題。
LIL?:載入到與上面相同的階段。這通常意味著載入第二階段引導載入程式使用了錯誤的地址,最常見的原因是 boot.b 所在的位置與 lilo.conf 檔案所指定的不同。
LIL-:載入到與上面相同的階段。載入描述符表時出現問題,最常見的原因是描述符表錯誤。
LILO:LILO 成功被載入,沒有出現任何錯誤。
引導時的附加配置
LILO 被成功載入後,將看到 LILO 提示符。還是使用前面的示例 lilo.conf 檔案,此時將有兩個選擇,可能對 LILO 新手來說並不直觀。首先,可以 讓 LILO 超時(10 秒後),這將引導 /dev/hdb3,即 Linux 分割槽。另外,可以按下 TAB 鍵,這將列出將要引導的作業系統選項。在我們的示例 lilo.conf 中, 將得到的選項是 “Linux” 和 “Windows”。輸入哪一個,就會引導到哪個 OS。指定載入 Linux 選項,會提示輸入一個口令,在本例中是 linux。如果輸入的口令有誤,則會返回 LILO 提示符。
不幸的是,LILO 不支援引導期間的互動式配置,所以,只能在 lilo.conf 中或者執行 /sbin/lilo 時指定選項。
關於第一次嘗試 LILO 的最後一點建議是:我發現使用軟盤引導磁碟比使用硬碟實現 LILO 配置更為安全。為此,必須在 lilo.conf 檔案中使用 boot=/dev/fd0 替換 boot=/dev/hda。那樣,如果弄亂了 lilo.conf 檔案 中的任何配置,都可以取出引導磁碟並像先前一樣引導到 Linux。當使用軟盤進行引導一切正常以後,可以將 lilo.conf 修改回 boot=/dev/hda,然後最後一次執行 /sbin/lilo 來上傳修改。
GNU GRUB
近來,GRand Unified Boot loader(通常稱為 GRUB)似乎要取代 LILO 在引導載入程式方面的統治地位。GNU GRUB 基於原來的 GRUB 程式(最初由 Erich Stefan Boleyn 所建立),正在由自由軟體基金會(Free Software Foundation)進行積極開發。
使用 GRUB 作為引導載入程式
與使用 LILO 相同,使用 GRUB 作為活動的引導載入程式所需要的步驟,取決於是安裝全新的 OS 還是已經安裝了 Linux 並計劃轉移到 GRUB。 如果是進行全新安裝,那麼可以直接跳轉到 配置 GRUB 那一節。如果已經安裝了某個 Linux 發行版,那麼通常可以選擇 安裝並配置 GRUB(並可以將機器引導到新的 Linux 安裝)。
計劃遷移到 GRUB 的當前 Linux 使用者需要去獲得最新版本的 GRUB(見 參考資料)。同樣, 與 LILO 相同,在做任何其他事情之前,需要在手邊準備一張 Linux 引導盤。使用互動模式(後面將描述)則不需要這張磁碟, 不過最好擁有一張以備急需時使用。將 LILO 安裝到系統中之後,讓它接管 MBR 非常簡單。以 root 使用者身份輸入:
CODE:
[Copy to clipboard]
# /boot/grub/grub
這樣將載入一個類似於 BASH 的命令提示符,可以在這裡使用 GRUB 命令:
CODE:
[Copy to clipboard]
grub>; install (hd1,3)/boot/grub/stage1 (hd0) (hd1,3)/boot/grub/stage2 p (hd1,3)/boot/grub/menu.conf
這個命令使用了 GRUB 安裝命令,需要為它給出第一階段映像的位置以及 MBR 的位置(install (hd1,3)/boot/grub/stage1 (hd1))。 也要給出第二階段映像的位置((hd1,3)/boot/grub/stage2)。最後,可選項 p (hd1,3)/boot/grub/menu.conf 告訴 GRUB GUI 選單配置檔案的位置。
在前面的示例中,hd1 是我的 Linux Disk,hd0 是我的 Windows 磁碟。這樣將使用當前 GRUB 預設值,並抹去 MBR 中當前所有內容(請閱讀 配置 GRUB,以確保能夠按預期引導起來)。
配置 GRUB
GRUB 的配置都是透過位於 /boot/grub/grub.conf 的一個配置檔案來完成的。清單 2 給出了一個示例配置,使用的是我的家用機器,支援 Linux 和 Windows 機器的雙重引導:
清單 2. grub.conf 示例檔案
CODE:
[Copy to clipboard]
default=0
timeout=10
splashimage=(hd1,3)/grub/splash.xpm.gz
password --md5 $opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1
root (hd1,3)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
title Windows XP
password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1
rootnoverify (hd0,0)
chainloader +1
清單 2 中的選項:
QUOTE:
default= 選項通知 GRUB 在超時之後預設使用哪個映像進行引導。這一選項與 grub.conf 檔案中的某個映像相關聯。 0 表示指定了第一個,1 表示指定了第二個,依次類推。如果沒有在配置檔案指定此選項,那麼它將引導檔案中指定的第一個映像。
timeout= 是在自動引導預設 OS(在本例中是 Red Hat Linux)之前引導提示會等待多少秒。
splashimage= 是用作 GRUB GUI 背景的圖片所在的位置。
password 選項指定了使用 MD5 加密的口令,用於訪問 GRUB 的互動式引導選項。注意,這不會阻止使用者選擇 引導已經定義的 OS;需要為 每一個 -title 設定它。為了生成一個 md5 口令, 請執行 GRUB 所附帶的 grub-md5-crypt 工具(以 root 身份)。它將提示輸入一個希望加密的口令。然後輸出使用 MD5 加密的口令。將這個口令複製到 grub.conf 中 password -md5 之後,但是要在同一行上。通常這個口令可以設定為 root 口令,因為無論如何也只有 root 才可以讀取 grub.conf 檔案。
title 標明瞭在執行期間能夠從使用者介面引導的具體 OS。 與 LILO 不同,在這個名稱中可以有空格。
password 的設定方式與前面的 password 相同。如果計劃與其他使用者共享此機器,那麼不要將這個口令設定為 root 口令。
root 告訴 GRUB OS 檔案系統的實際位置。可見,GRUB 引用介質的方式與 LILO 不同。在 LILO 示例中, /dev/hdb3 是第二塊硬碟中的第三個分割槽。Grub 將此硬碟引用為(hd1,3),即第二塊硬碟的第三個分割槽(disk 0 是第一塊硬碟)。
kernel:vmlinuz-X.X.XX-XX 是 root 目錄中預設引導映像的名稱。
initrd:initrd-X.X.XX-XX.img 是 root 目錄中預設 initrd 映像的名稱。
title 與所有其他 title 選項相同。
password:見其他口令選項。
rootnoverify 告訴 GRUB 不要嘗試去改變 OS 的 root。這樣,當檔案系統不被 GRUB 所支援時,不會出現引導錯誤。
chainloader +1 告訴 GRUB 使用一個鏈式載入程式來載入這個 OS,載入 Windows 時需要這個選項。
在 grub.conf 檔案中可以使用很多其他引數,不過清單 2 中的引數就足以讓機器可用了。 要獲得關於 grub.conf 的這些以及其他引數的進一步資料,請參考手冊頁(man grub.conf)。
與 LILO 的配置檔案不同,grub.conf 會在引導時被讀取,當被修改時不必去更新 MBR。
初始引導過程
與 LILO 類似,當 GRUB 初始載入時,從 MBR 載入第一階段程式。載入後,它進入第一階段和第二階段引導載入程式之間的中間階段(為了方便討論,可稱為第 1.5 階段)。 之所以存在第 1.5 階段,是為了能夠對 /boot/grub 中的 GRUB 配置檔案進行常規的檔案系統訪問,而不是去訪問磁碟塊。然後進入引導載入程式的第二階段,GRUB 載入 grub.conf 檔案。
現在應該能夠看到 GRUB GUI 了。對於熟悉 Windows 的使用者來說,這看起來感覺比 LILO 更友好。不過,不要因為 GRUB 擁有 GUI 就認為它是一個不能 處理資料的引導載入程式。可選項多得驚人。(見 引導時的附加配置 中的提示。)
如果像我那樣配置,那麼現在應該能看到螢幕中有兩個選項:引導到 Red Hat Linux 或者引導到 Windows XP。預設情況下,它將載入 Linux。選擇任意一個的結果不言而喻。
現在來看一些好東西。
引導時的附加配置
在 GRUB GUI 中,按下任何鍵都會停止超時的計時。然後按下 P 鍵,可以輸入 GRUB 口令,並獲得對 GRUB 互動式引導選項的完全訪問許可權。 按下以下其中一個鍵,應該能夠使用三個選項之中的一個:
要在引導之前編輯命令,請按下 E。這將讓您能夠為當前選中的 OS 編輯具體的選項。GRUB 只會顯示出與那個 OS 的引導相關的選項, 然後您可以恰當地進行編輯。當為 root 檔案系統指定了錯誤的 HDD 時,這尤其有用。如果需要以單使用者模式訪問機器(不需要指定口令 就能夠讓您獲得 root 訪問許可權!),那麼在 GRUB 主螢幕上選擇 Linux OS。然後與前面一樣,按下 E,並移到核心那一行( 在我的示例中是 kernel /vmlinuz-2.4.18-14 ro root=LABEL=/)。然後在那一行最後新增 single,並按下 B 來使用修改過的 grub.conf 進行引導。在編輯模式下所做的任何修改都不會 儲存到 grub.conf 檔案中。
要修改核心引數,請按下 A。如果您是一位經驗豐富的 Linux 使用者,可以根據需要調整核心引數。 要獲得類似於 BASH 的命令列介面,請按下 C。這個小型的命令列介面允許您在系統中查詢 GRUB 配置檔案,載入另外的配置檔案, 編輯配置檔案中的行,以及直接輸入 GRUB 命令。如果配置的變化(比如刪除了某個分割槽)讓系統無法引導,那麼可能會用到這個介面。 如果需要將系統引導為單使用者模式,或者要讓執行級別為 3 而不是普通的執行級別,也可能會使用到它。
這些選項有很多用途,但超出了本文的範圍。
可見,GRUB 真正開放了引導期間的可能性。不過,這可能是一件好壞參半的事情,因為 GRUB 也潛在地允許攻擊者在 OS 載入之前訪問系統。 會被誤用的主要開放領域是:
訪問單使用者模式。所有載入到單使用者模式的人都會得到 root 訪問許可權,使得 Linux 可被隨意濫用。
訪問其他作業系統。任何配置為不需要口令的可引導作業系統,比如 DOS,都將是開放的。
訪問 GRUB 編輯器。這允許使用者獲得修改 GRUB 配置的完全訪問許可權。
在 GRUB 配置中,設定安全性非常重要;設定口令,並使用 MD5 加密,可以保證整個系統的安全。
GRUB 的未來
GRUB 將要被 GRUB2 所取代。原來的 GRUB 將要被重新命名為 GRUB Legacy;除了修復 bug 以外,不會再對它進行積極開發。GRUB2 將是對原來 GRUB 的完全重寫。到目前為止,以下特性是變化的核心部分:
透過建立壓縮的核心映像取代了第 1.5 階段
支援核心映像的動態載入
爭取讓整個 GRUB 框架成為物件導向的
支援國際化,比如 非-ASCII 字符集
支援不同硬體體系結構和不同平臺(不同於 Linux 的平臺)
GRUB 與 LILO 的比較
如本文開始處所述,所有引導載入程式都以類似的方式工作,滿足共同的目的。不過,LILO 和 GRUB 之間有很多不同之處:
LILO 沒有互動式命令介面,而 GRUB 擁有。
LILO 不支援網路引導,而 GRUB 支援。
LILO 將關於可以引導的作業系統位置的資訊物理上儲存在 MBR 中。如果修改了 LILO 配置檔案,必須將 LILO 第一階段引導載入 程式重寫到 MBR。相對於 GRUB,這是一個更為危險的選擇,因為錯誤配置的 MBR 可能會讓系統無法引導。使用 GRUB,如果配置檔案配置 錯誤,則只是預設轉到 GRUB 命令列介面。
結束語
與所有軟體相同,對某個使用者來說是最好的選擇,並不是對所有人來說都是最好的。至於這裡所涉及的兩個引導載入程式,我個人喜歡的是 GNU GRUB。它是一個非常好的全面的載入程式,組合了靈活的使用者介面和大量的功能。但是,還有很多使用過並忠愛 LILO 的人仍然選擇 LILO 作為引導載入程式。幸運的是,如果您剛剛開始接觸 Linux 引導載入,使用哪個都不會有太大問題。
關於安全性,任何可以接觸到引導磁碟/CD 的人,只需要使用沒有設定安全性的 grub.conf 或 lilo.conf,就可以繞過本文中提及的所有安全措施。 特別是使用 GRUB 時,因為能夠引導到單使用者模式,所以是一個嚴重的安全漏洞。解決此問題的一個簡單方法是在機器的 BIOS 中禁止透過 CD 和軟盤進行 引導,並確保為 BIOS 設定了一個口令,使得其他人不能修改這些設定。
祝您好運! 來自:IBM developerWorks Linux 專區
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-941726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉發和重定向的區別?
- 物件和函式的區別就是物件可以儲存狀態物件函式
- 女朋友看了會生氣的回答 URI和URL有什麼區別?
- 轉發和重定向的過程和區別
- 【轉】理解 CI 和 CD 之間的區別
- Vue中computed和watch的區別(轉載)Vue
- input屬性disabled和readonly的區別(轉)
- 【財富空間】不管你做什麼工作,這5項能力必須掌握;“做完”和“做好”的區別,就是人生的差別!...
- 一篇文章告訴你Dalvik 和JVM的區別JVM
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ../和./和/的區別
- 幽默:好的程式碼本身就是最好的文件 - CodeWisdom
- ||和??的區別
- /*和/**的區別
- String.valueOf和強制型別轉換(String)的區別型別
- 強制型別轉換(int)、(int&)和(int*)的區別型別
- JAVA下唯一一款搞定OLTP+OLAP的強型別查詢這就是最好用的ORM相見恨晚Java型別ORM
- GO語言中string和[]byte的區別及轉換Go
- 塊元素和行內元素的區別與轉換
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- OData API 和 Restful API 這兩個概念的區別和聯絡APIREST
- VUE的兩種跳轉push和replace對比區別Vue
- PHP 中的 -> 和 :: 的區別PHP
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- law和statute的區別
- thorough和comprehensive的區別
- Velocity和speed的區別
- prerogative和privilge的區別
- postEvent 和 sendEvent的區別dev
- foster和nurture的區別
- @Valid和@Validated的區別
- url和uri的區別
- BeanFactory 和 ApplicationContext 的區別BeanAPPContext