安裝 XP 以後再安裝 Ubuntu 基本上會相安無事,不過 XP 經常有事沒事就需要重灌,重灌完 MBR 被洗掉 Ubuntu 就進不去了。目前參考網路上的作法,讓使用者可以用 XP 的開機程式開啟 Ubuntu,且重灌時備份也很方便。
測試環境:
- IDE Master:Windows XP
- IDE Slave:Ubuntu
先安裝完 XP 以後再安裝 Ubuntu 到兩個不同的硬碟後,正常情況下應該會看到 Ubuntu GRUB 的開機選單,這時先進入 Ubuntu 內。
第一件事情,就是先把 Ubuntu 建立的 MBR 開機程式複製出來。
開啟終端機 (應用程式選單 => 附屬應用程式 => 終端機),先用 fdisk 看一下自己的硬碟在 Ubuntu 上面的編號:
zero@zero-desktop:~$ sudo fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd011d011
所用裝置 Boot Start End Blocks Id System
/dev/sda1 * 1 1043 8377866 7 HPFS/NTFS
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000ea8c9
所用裝置 Boot Start End Blocks Id System
/dev/sdb1 1 993 7976241 83 Linux
/dev/sdb2 994 1044 409657+ 5 延伸的
/dev/sdb5 994 1044 409626 82 Linux swap / Solaris
可以看到我的 XP 是安裝在 /dev/sda1,開機程式也會在這個硬碟上,所以接下來用 dd 備份 MBR:
zero@zero-desktop:~/桌面$ sudo dd if=/dev/sda1 of=~/桌面/Ubuntu.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000470415 s, 1.1 MB/s
這一步做完最難的部份也結束了。
再來使用 Windows XP 開機光碟還原成 Windows 的 MBR 開機程式。
使用修復模式進入 command line
使用 fixmbr 將開機程式寫入 MBR
最後把 Ubuntu.img 這個檔案複製 Windows XP 的 C 槽根目錄,打開 boot.ini 修改開機設定:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:Ubuntu.img="我的 Ubuntu"
改好存檔以後,重新開機應該就會看到以下的畫面,選擇「我的 Ubuntu」就會跳到 GRUB 開機選單,也可以啟動 Ubuntu。
以後重灌 Windows 只要記得備份 Ubuntu.img,重灌完只要修改 boot.ini 就可以開啟 Ubuntu 了。
參考資料:
用Windows內建的boot.ini做多重開機Linux + XP
http://www.wretch.cc/blog/mezl/20241371
Jserv’s blog: Linux/x86 開機流程:自 MBR 到 init
http://blog.linux.org.tw/~jserv/archives/001714.html
異動:
2009.11.05 更新:補上還原 Windows MBR 部份。
原來是從 Wubi 那邊學來的 XD