歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 引導加載程序之爭:了解LILO和GRUB

引導加載程序之爭:了解LILO和GRUB

日期:2017/2/27 14:27:29   编辑:更多Linux
  從普通的桌面用戶到 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 用戶身份輸入:    代碼:    # /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 示例文件    代碼:    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 中的選項:    引用:    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(位於第一塊硬盤的第一個分區)。如果先




Copyright © Linux教程網 All Rights Reserved