請問,
同樣前提下,若欲重安 grub
若是以下二方式開機:
1.) Rescue cd (此時hd0不就變成了cd-rom??)
2.) hard disk(選linux)
當執行 grub shell 設定 root 與執行 setup 時,也是以開機碟(primary slave)為 hd0 為原則嗎?
1) GRUB 不支援 CD-ROM,所以 CD-ROM 會被跳過。
2) 只要是 BIOS 裏面設定為第一個開機的硬碟,管他是 IDE/SATA/SCSI,對 GRUB 來講都會是 hd0。
其實 GRUB 支援用做對應表的方式,讓你自己對應 hdX 跟硬碟。比如說讓 hd0 永遠是 /dev/hda。只要製作一個 /boot/grub/device.map 檔案,內容如下:
/dev/hda (hd0)
/dev/hdb (hd1)
GRUB 載入或安裝時會依照這個檔案的來作 mapping。
但不管怎樣,你只要記住 -
在預設的情況下,BIOS 設為第一個開機的硬碟,不管在那裡,對 GRUB 來講就是 (hd0)。
有無工具可得知目前所有硬碟的 MBR 與 Boot Sector 的情形?
例如,由於之前亂裝了一番, grub 可能遍佈 primary master 與 slave 兩顆硬碟的 MBR 與 boot sector,
只是想全清掉重來,確定 grub 是裝在 primary slave 的 boot sector 即可.
你目前 GRUB 應該是裝在 /dev/hdb 的 MBR, 所以你是只想要把它裝在 /dev/hdb1 是嗎?
1. 先將 GRUB 安裝至 (hd0,0)
2. 用
ms-sys將 Windows 用的 MBR 寫入 /dev/hda 跟 /dev/hdb 的 MBR。
ms-sys -m /dev/hda
ms-sys -m /dev/hdb
3. 確定 /dev/hdb1 是設成 active
這樣的話,硬碟的 MBR 跟 bootsector 的狀況變成如下:
/dev/hda Windows MBR
/dev/hda1 Windows bootsector
/dev/hdb Windows MBR
/dev/hdb1 GRUB
有無工具可以檢查 MBR 跟 bootsector 裏面有什麽 bootloader 我就不確定了,看其他人知不知道。
至於上面爲什麽連 /dev/hdb 都要 Windows MBR, 可以順便回答第三個問題:
最後請問之前..曾做過 dd if=/dev/zero of=/dev/hda bs=446 count=1 ,為何還可啟動 primary master 的 windows xp ?
這段是將 /dev/hda MBR 裏面的開機程式碼(Windows MBR)清除。 Windows MBR 唯一會做的一件事就是載入設為 active partition 的 bootsector。
但是 GRUB 可以直接載入 partition 的 bootsector (i.e chainloader),不用經過 Windows MBR,所以這就是爲什麽你把在 /dev/hda 裏面 Windows MBR 清掉也沒關係的原因。
在 /dev/hda 跟 /dev/hdb 都有 Windows MBR 的話,這樣就算你把 /dev/hdb 拔掉,或 BIOS 設 Primary Master(/dev/hda) 開機,Windows 還是可以照常啟動。
/dev/hdb 有 Windows MBR 的時候,開機會呼叫 active partition, 就是 /dev/hdb1 裏面的 GRUB。