Linux GRUB實現(xiàn)雙系統(tǒng)引導(dǎo)之菜鳥教程
根據(jù)網(wǎng)友 Seqic 反映,在安裝了 Linux 和 Windows 雙系統(tǒng)之后,不知如何再啟動 Windows (因為系統(tǒng)使用 Linux 的引導(dǎo)程序了)。通常,這是因為安裝 Linux 時沒有為 GRUB 做好相應(yīng)的配置。
Seqic 使用的是 Fedora 12,不知是這個發(fā)行版默認不對 GRUB 進行配置,還是在單系統(tǒng)時不對 GRUB 進行配置,我在安裝 Fedora 12 時也沒有遇到 GRUB 配置界面。
什么是GRUB
在為系統(tǒng)配置 GRUB 之前,先了解一下 GRUB 比較好,以下是摘自“維基百科”的內(nèi)容:
“GRUB 是 GNU GRUB 的簡稱,是來自 GNU 項目的一個多系統(tǒng)引導(dǎo)程序。它允許用戶可以在計算機內(nèi)同時擁有多個操作系統(tǒng),并在計算機啟動時選擇希望運行的操作系統(tǒng)。
GRUB 非常輕便。它支持多種可執(zhí)行格式,除了可適用于支持多啟動的操作系統(tǒng)外,還通過鏈式啟動功能支持諸如 Windows 和 OS/2 之類的不支持多啟動的操作系統(tǒng)。GRUB 支持所有的 Unix 文件系統(tǒng),也支持 Windows 適用的 FAT 和 NTFS 文件系統(tǒng),還支持 LBA 模式。GRUB允許用戶查看它支持的文件系統(tǒng)里文件的內(nèi)容。”
簡單地講,使用 GRUB 實現(xiàn)多系統(tǒng)引導(dǎo),就是通過編輯 grub.conf 配置文件,使系統(tǒng)啟動時會出現(xiàn)一個多操作系統(tǒng)選擇菜單,選擇 Linux 則啟動 Linux,選擇 Windows 就啟動 Windows,其它系統(tǒng)也一樣 :D
“grub.conf 配置文件的絕對路徑是 /boot/grub/grub.conf,需要 root 權(quán)限才可以讀取和編輯這個文件。”
GRUB配置文件
GRUB 是 Linux 中最主要的多系統(tǒng)引導(dǎo)程序,使用它可以為 Unix、Linux、Windows、OS/2 等操作系統(tǒng)制作多系統(tǒng)引導(dǎo)菜單,并對這些操作系統(tǒng)進行引導(dǎo)啟動。
對于 GRUB 的表現(xiàn)和行為控制,主要通過編輯 grub.conf 配置文件得以實現(xiàn),為了之后更好的自定義引導(dǎo)菜單,我們先通過以下簡單的示例認識 grub.conf 配置文件中的各個選項,以及它們的作用。
- #boot=/dev/sda
- default=0
- timeout=0
- splashimage=(hd0,0)/grub/splash.xpm.gz
- hiddenmenu
- title Fedora (2.6.32.9-67.fc12.i686.PAE)
- root (hd0,0)
- kernel /vmlinuz-2.6.32.9-67.fc12.i686.PAE ro root=/
- initrd /initramfs-2.6.32.9-67.fc12.i686.PAE.img
- title Windows 7
- ...
說明:
default - 默認引導(dǎo)的菜單條目。在本例中,默認引導(dǎo)***個條目 Fedora (2.6.32.9-67.fc12.i686.PAE)。如果將 default 的值改成 1, 則會默認引導(dǎo) Windows 7。
timeout - 自動選擇默認引導(dǎo)前菜單顯示的時間。本例中,如果用戶沒有在 30 秒之內(nèi)選擇操作系統(tǒng),則會默認引導(dǎo)***個條目 (即default 0)
splashimage - 指定 GRUB 引導(dǎo)菜單的界面風(fēng)格。(hd0,0)/grub/splash.xpm.gz,是指在***塊硬盤的***個分區(qū)(hd0,0) 中,使用 grub 目錄下的 splash.xpm.gz 文件作為界面風(fēng)格。一般來講,無需更改這個配置 :D
hiddenmenu - 隱藏 GRUB 引導(dǎo)菜單。如果不想在啟動時顯示 GRUB 引導(dǎo)菜單,則刪除此條目。
系統(tǒng)引導(dǎo)條目
title - 引導(dǎo)條目的名稱。通常使用操作系統(tǒng)的名稱做為標識,你可以自行更改這個名稱,例如使用 "Fedora 12", "Fedora", 或者是 "MyLinux" 都可以。這個標題將顯示在 GRUB 引導(dǎo)菜單中。
root - 操作系統(tǒng)內(nèi)核和引導(dǎo)文件所在的磁盤分區(qū)。(hd0,0) 表示***塊硬盤的***個分區(qū),(hd0,2) 表示***塊硬盤的第3個分區(qū),依次類推。
kernel - 系統(tǒng)內(nèi)核及 boot 命令用到的參數(shù)。
initrd - 系統(tǒng)引導(dǎo)程序
kernel 和 initrd 中指定的文件都是相對于 root 中所設(shè)置的硬盤分區(qū),例如本例中的 (hd0,0) 是機器上的 /boot 分區(qū),kernel 的位置實際上是 /boot/vmlinuz-2.6.32.9-67.fc12.i686.PAE
使用GRUB引導(dǎo)Windows
不像 Unix 和 Linux,Windows 屬于不支持多啟動的操作系統(tǒng),簡單的在 grub.conf 配置文件中使用 kernel 和 init 選項,無法實現(xiàn)對 Windows 的引導(dǎo)。要能夠通過 GRUB 引導(dǎo) Windows,需要使用 GRUB 的鏈式(chain-load)啟動功能。
提醒:查看和編輯 /boot/grub/grub.conf 都需要 root 權(quán)限,并且在編輯 grub.conf 之前,***先為這個文件做一份備份。
對于配置文件的備份,通過使用 cp 命令即可完成
- ~]# cp /boot/grub/grub.conf /boot/grub/grub.conf.bak
一般情況
要使用 GRUB 的鏈式啟動功能引導(dǎo) Windows,一般情況下,只需要向 grub.conf 配置文件中添加以下內(nèi)容即可。
- title Windows 7
- rootnoverify hd(0,0)
- makeactive
- chainloader +1
多硬盤的情況
如果你的機器上有兩塊以上的硬盤,并且 Windows 操作系統(tǒng)安裝在第二塊硬盤上,則還需要在配置中加入 map 命令,它們的作用是更改兩塊硬盤的映射關(guān)系
- title Windows 7
- map (hd0) (hd1)
- map (hd1) (hd0)
- rootnoverify hd(0,0)
- makeactive
- chainloader +1
多主分區(qū)的情況
使用 GRUB 引導(dǎo) Windows 可能出現(xiàn)的另一個問題,是同一塊磁盤上安裝了多個 Windows 操作系統(tǒng),這樣一來硬盤上就會有多個主分區(qū)。要讓 GRUB 正確的引導(dǎo)某個 Windows 操作系統(tǒng),你需要對 GRUB 隱藏不必要的主分區(qū)。假設(shè)在***個分區(qū) hd(0,0) 上安裝了 Windows XP,在第二個分區(qū) hd(0,1) 上安裝了 Windows 7,而你希望引導(dǎo) Windows 7,則應(yīng)該使用以下配置
- title Windows 7
- unhide hd(0,1)
- hide hd(0,0)
- rootnoverify hd(0,1)
- makeactive
- chainloader +1
一般而言,大多數(shù)用戶都屬于***種情況,只需要簡單的幾行配置就能夠?qū)崿F(xiàn) Windows 的引導(dǎo)了。
【編輯推薦】