Linux GRUB實現雙系統引導之菜鳥教程

來源:互聯網
上載者:User

根據網友 Seqic 反映,在安裝了 Linux 和 Windows 雙系統之後,不知如何再啟動 Windows (因為系統使用 Linux 的引導程式了)。通常,這是因為安裝 Linux 時沒有為 GRUB 做好相應的配置。

Seqic 使用的是 Fedora 12,不知是這個發行版預設不對 GRUB 進行配置,還是在單系統時不對 GRUB 進行配置,我在安裝 Fedora 12 時也沒有遇到 GRUB 配置介面。

什麼是GRUB

在為系統配置 GRUB 之前,先瞭解一下 GRUB 比較好,以下是摘自“維基百科”的內容:

“GRUB 是 GNU GRUB 的簡稱,是來自 GNU 項目的一個多系統引導程式。它允許使用者可以在電腦內同時擁有多個作業系統,並在電腦啟動時選擇希望啟動並執行作業系統。

GRUB 非常輕便。它支援多種可執行格式,除了可適用於支援多啟動的作業系統外,還通過鏈式啟動功能支援諸如 Windows 和 OS/2 之類的不支援多啟動的作業系統。GRUB 支援所有的 Unix 檔案系統,也支援 Windows 適用的 FAT 和 NTFS 檔案系統,還支援 LBA 模式。GRUB允許使用者查看它支援的檔案系統裡檔案的內容。”

簡單地講,使用 GRUB 實現多系統引導,就是通過編輯 grub.conf 設定檔,使系統啟動時會出現一個多作業系統選擇菜單,選擇 Linux 則啟動 Linux,選擇 Windows 就啟動 Windows,其它系統也一樣 :D

“grub.conf 設定檔的絕對路徑是 /boot/grub/grub.conf,需要 root 許可權才可以讀取和編輯這個檔案。”

GRUB設定檔

GRUB 是 Linux 中最主要的多系統引導程式,使用它可以為 Unix、Linux、Windows、OS/2 等作業系統製作多系統引導菜單,並對這些作業系統進行引導啟動。

對於 GRUB 的表現和行為控制,主要通過編輯 grub.conf 設定檔得以實現,為了之後更好的自訂引導菜單,我們先通過以下簡單的樣本認識 grub.conf 設定檔中的各個選項,以及它們的作用。

 
  1. #boot=/dev/sda  
  2. default=0 
  3. timeout=0 
  4. splashimage=(hd0,0)/grub/splash.xpm.gz  
  5. hiddenmenu  
  6.  
  7. title Fedora (2.6.32.9-67.fc12.i686.PAE)  
  8.         root (hd0,0)  
  9.         kernel /vmlinuz-2.6.32.9-67.fc12.i686.PAE ro root=/  
  10.         initrd /initramfs-2.6.32.9-67.fc12.i686.PAE.img  
  11.  
  12. title Windows 7  
  13. ...  
  14.  

說明:

default - 預設引導的菜單條目。在本例中,預設引導第一個條目 Fedora (2.6.32.9-67.fc12.i686.PAE)。如果將 default 的值改成 1, 則會預設引導 Windows 7。

timeout - 自動選擇預設引導前菜單顯示的時間。本例中,如果使用者沒有在 30 秒之內選擇作業系統,則會預設引導第一個條目 (即default 0)

splashimage - 指定 GRUB 引導菜單的介面風格。(hd0,0)/grub/splash.xpm.gz,是指在第一塊硬碟的第一個分區(hd0,0) 中,使用 grub 目錄下的 splash.xpm.gz 檔案作為介面風格。一般來講,無需更改這個配置 :D

hiddenmenu - 隱藏 GRUB 引導菜單。如果不想在啟動時顯示 GRUB 引導菜單,則刪除此條目。

系統引導條目

title - 引導條目的名稱。通常使用作業系統的名稱做為標識,你可以自行更改這個名稱,例如使用 "Fedora 12", "Fedora", 或者是 "MyLinux" 都可以。這個標題將顯示在 GRUB 引導菜單中。

root - 作業系統核心和引導檔案所在的磁碟分割。(hd0,0) 表示第一塊硬碟的第一個分區,(hd0,2) 表示第一塊硬碟的第3個分區,依次類推。

kernel - 系統核心及 boot 命令用到的參數。

initrd - 系統引導程式

kernel 和 initrd 中指定的檔案都是相對於 root 中所設定的硬碟分區,例如本例中的 (hd0,0) 是機器上的 /boot 分區,kernel 的位置實際上是 /boot/vmlinuz-2.6.32.9-67.fc12.i686.PAE

使用GRUB引導Windows

不像 Unix 和 Linux,Windows 屬於不支援多啟動的作業系統,簡單的在 grub.conf 設定檔中使用 kernel 和 init 選項,無法實現對 Windows 的引導。要能夠通過 GRUB 引導 Windows,需要使用 GRUB 的鏈式(chain-load)啟動功能。

提醒:查看和編輯 /boot/grub/grub.conf 都需要 root 許可權,並且在編輯 grub.conf 之前,最好先為這個檔案做一份備份。

對於設定檔的備份,通過使用 cp 命令即可完成

 
  1. ~]# cp /boot/grub/grub.conf /boot/grub/grub.conf.bak  
  2.  

一般情況

要使用 GRUB 的鏈式啟動功能引導 Windows,一般情況下,只需要向 grub.conf 設定檔中添加以下內容即可。

 
  1. title Windows 7  
  2. rootnoverify hd(0,0)  
  3. makeactive  
  4. chainloader +1  

多硬碟的情況

如果你的機器上有兩塊以上的硬碟,並且 Windows 作業系統安裝在第二塊硬碟上,則還需要在配置中加入 map 命令,它們的作用是更改兩塊硬碟的映射關係

 
  1. title Windows 7  
  2. map (hd0) (hd1)  
  3. map (hd1) (hd0)  
  4. rootnoverify hd(0,0)  
  5. makeactive  
  6. chainloader +1  
  7.  

多主要磁碟分割的情況

使用 GRUB 引導 Windows 可能出現的另一個問題,是同一塊磁碟上安裝了多個 Windows 作業系統,這樣一來硬碟上就會有多個主要磁碟分割。要讓 GRUB 正確的引導某個 Windows 作業系統,你需要對 GRUB 隱藏不必要的主要磁碟分割。假設在第一個分區 hd(0,0) 上安裝了 Windows XP,在第二個分區 hd(0,1) 上安裝了 Windows 7,而你希望引導 Windows 7,則應該使用以下配置

 
  1. title Windows 7  
  2. unhide hd(0,1)  
  3. hide hd(0,0)  
  4. rootnoverify hd(0,1)  
  5. makeactive  
  6. chainloader +1  
  7.  

一般而言,大多數使用者都屬於第一種情況,只需要簡單的幾行配置就能夠實現 Windows 的引導了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.