Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Windows/Linux 雙系統 Grub 引導安裝全攻略:保護 MBR、Chainloading 與 menu.lst 完整設定

編輯:Linux 教學

前言與架構規劃

雙系統安裝的核心挑戰在於開機管理程式的共存。本文採用 Windows ntloader 為主引導 → 載入 Linux 分區的 Grub → 引導 Linux 的鏈式載入架構,優點是不動 Windows MBR,降低風險,日後重裝 Windows 也不會破壞 Linux 開機。

假設環境:

  • Windows 2000/XP 安裝於第一顆硬碟第一分區(hda1,Grub 表示為 (hd0,0))
  • Linux 安裝於 hdaX(Grub 表示為 (hd0,X-1)),主分區或邏輯分區皆可

一、將 Grub 安裝到 Linux 分區(而非 MBR)

安裝時機選擇

  • Linux 安裝程式階段:選擇 Grub,安裝位置指定為 hdaX 或 (hd0,X-1),勿選 MBR (hda/(hd0))。
  • 若安裝程式無法指定分區:先暫裝 MBR,進入系統後手動移至分區並恢復 MBR(見下文)。

為何不裝 MBR?

  1. 避免 Windows 某些工具(一鍵還原、開機管理程式)修改 MBR 導致衝突。
  2. 重裝 Windows 時 MBR 會被覆寫,Grub 遺失;裝在分區則不受影響。
  3. Grub 早期版本偶有相容性問題,裝在分區隔離風險。

手動將 Grub 裝入分區(LiveCD 環境)

# 方法 1:Grub shell
grub> root (hd0,X-1)
grub> setup (hd0,X-1)
grub> quit

# 方法 2:grub-install 腳本
mount /dev/hdaX /mnt
grub-install --root-directory=/mnt /dev/hdaX

確保分區內 /boot/grub/ 含有 stage1、stage2 等核心檔案。

恢復 Windows MBR

若曾裝入 MBR 需恢復:

  • DOS/Win98 啟動軟碟:A:\> fdisk /mbr
  • 無軟碟機:使用 Windows 2000/XP 安裝光碟進入修復模式,執行 fixmbr。
  • 或用 Vfloppy 虛擬軟碟映像載入 DOS 執行 fdisk /mbr。

二、將 Grub 引導區掛載到 ntloader

原理:將 Linux 分區第一磁區(512 bytes)複製為 Windows 可讀取的檔案,再於 boot.ini 加入選單。

製作引導檔

# LiveCD 環境下
mount -t vfat /dev/hda1 /mnt          # Windows 啟動分區為 FAT32
dd if=/dev/hdaX of=/mnt/linux.lnx bs=512 count=1

若 Windows 為 NTFS,無法直接寫入,改掛載 DOS 格式軟碟:

mount -t msdos /dev/fd0 /mnt
dd if=/dev/hdaX of=/mnt/linux.lnx bs=512 count=1
# 進入 Windows 後將軟碟內的 linux.lnx 複製到 C:\

修改 boot.ini

  1. 取消 C:\boot.ini 的「隱藏」與「唯讀」屬性。
  2. 於 [operating systems] 區段新增:
    c:\linux.lnx="Grub Menu"
  3. 將 timeout=0 改為 timeout=5,啟用選單等待。

三、設定 menu.lst(Grub 選單設定檔)

位於 /boot/grub/menu.lst。若安裝程式已自動產生,通常只需微調;否則參考 LiveCD 或現有範例編寫。

關鍵指令說明

指令用途
default 0預設開機項目(0 為第一個 title)
timeout 5選單等待秒數
title 名稱選單顯示名稱,標示一個開機項目開始
root (hd0,2)指定核心檔案所在分區(Grub 命名法)
kernel /vmlinuz ro root=/dev/hda3載入核心,root= 用 Linux 裝置名稱
initrd /initrd.img載入初始暫存檔系統(如需)
chainloader +1鏈式載入分區首磁區(用於 Windows/其他 Grub)
configfile (hd0,1)/boot/grub/menu.lst引入另一個 menu.lst 當作子選單

範例 menu.lst

default 0
timeout 5
color light-gray/blue black/light-gray

title Ubuntu Linux
root (hd0,2)
kernel /vmlinuz ro root=/dev/hda3

title Ubuntu Linux (Rescue Mode)
root (hd0,2)
kernel /vmlinuz ro root=/dev/hda3 single

title Windows XP
rootnoverify (hd0,0)
chainloader +1

title Other Linux (Submenu)
configfile (hd0,1)/boot/grub/menu.lst

四、進階:使用 grub4nt 直接由 ntloader 載入 Grub

grub4nt(Grub for DOS 衍生版)提供 grldr 檔案,無需寫入 MBR 即可由 ntloader 直接啟動 Grub。

設定步驟

  1. 將 grldr 複製到 C:\。
  2. 修改 boot.ini 加入:c:\grldr="Grub4nt Menu"
  3. C:\menu.lst 或 C:\boot\grub\menu.lst 即為 Grub 設定檔,可直接引用 Linux 分區的 menu.lst:
    title GNU Grub Menu
    configfile (hd0,X)/boot/grub/menu.lst

優點:完全不動 Linux 分區引導區,設定彈性大,支援 FAT32/NTFS。

五、boot.ini 完整範例與說明

[boot loader]
timeout=5
default=c:\grldr

[operating systems]
c:\grldr="Grub4nt Menu"
c:\linux.lnx="Grub on Linux Partition"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP" /fastdetect
  • default 可指向 c:\grldr 使 Grub 成為預設開機選項。
  • 選單順序可隨意調整,只影響顯示順序。

六、總結與建議

  1. 推薦架構:ntloader → Grub(分區引導區或 grldr) → Linux。
  2. Grub 安裝於 Linux 分區首磁區,不碰 MBR,最安全。
  3. 善用 configfile 引入子選單,管理多重 Linux 發行版輕鬆。
  4. 保留 Windows 開機修復光碟/USB,以備 MBR 損壞時恢復。
Copyright © Windows教程網 All Rights Reserved