雙系統安裝的核心挑戰在於開機管理程式的共存。本文採用 Windows ntloader 為主引導 → 載入 Linux 分區的 Grub → 引導 Linux 的鏈式載入架構,優點是不動 Windows MBR,降低風險,日後重裝 Windows 也不會破壞 Linux 開機。
假設環境:
hda1,Grub 表示為 (hd0,0))hdaX(Grub 表示為 (hd0,X-1)),主分區或邏輯分區皆可hdaX 或 (hd0,X-1),勿選 MBR (hda/(hd0))。# 方法 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 等核心檔案。
若曾裝入 MBR 需恢復:
A:\> fdisk /mbrfixmbr。fdisk /mbr。原理:將 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:\
C:\boot.ini 的「隱藏」與「唯讀」屬性。[operating systems] 區段新增:c:\linux.lnx="Grub Menu"timeout=0 改為 timeout=5,啟用選單等待。位於 /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 當作子選單 |
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(Grub for DOS 衍生版)提供 grldr 檔案,無需寫入 MBR 即可由 ntloader 直接啟動 Grub。
grldr 複製到 C:\。boot.ini 加入:c:\grldr="Grub4nt Menu"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 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 成為預設開機選項。configfile 引入子選單,管理多重 Linux 發行版輕鬆。