酷!學園

精華區 => 酷!學園 精華區 => 主題作者是: b90220208 於 2009-05-08 09:11

主題: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-08 09:11
1.
xp 先安於 hda
linux 後裝於 hdb, 而 grub 安裝時選擇裝於 boot sector 而非 MBR
--> 如何啟動 linux ?

2.
之後採取如下動作:
dd if=/dev/zero of=/dev/hda bs=446 count=1
linux-rescue mode 下作 grub-install /dev/hda
--> 重開機後於grub選單選windows,但無法啟動...請問這是哪兒出了問題?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-09 02:22
spfdisk 做完後,與grub一樣的結果,windows還是無法開機...

看了一下鳥哥的網站,我的理解若有錯誤還望指正:

因為我後來將grub裝於hda的MBR,所以開機會以grub為首個 boot loader 並調選單供 user 選擇.而若是我選擇 xp 開機,則 grub 會轉交控制權給另一個 loader(即xp的loader)去啟動 xp.

換句話說,我硬碟的 xp 的 boot loader 可能已損毀....若真為如此,不知有何解決之道?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-09 03:25
上面的 dd 已經將 hda 的 mbr 摧毀了。
直接將 grub 裝到 mbr 就好了,不需要用 spfdisk ,用 rescue disk 進去跑 grub 安裝就好。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-09 11:54
感謝 netman 大!  :)

不好意思,可我現況就是已經在 linux-rescue mode 下作過 grub-install /dev/hda
xp啟動不了(僅到出現F8畫面),此動作不就是將GRUB安裝到MBR,難道是我誤解了?

不知 windows boot loader 可否重安裝?另外請教如當我們安裝windows xp時其loader預設是否僅安裝到hda的MBR中?...若是,那隨後在裝linux時,若grub亦裝於hda的MBR,那豈不是會覆蓋掉windows boot loader,根據鳥哥網站說法(http://linux.vbird.org/linux_basic/0130designlinux.php#partition_mbr),那 grub 如何找到 windows loader 並將控制權交給它去繼續啟動 windows ?

主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: darkranger2009-05-09 17:10

不好意思,可我現況就是已經在 linux-rescue mode 下作過 grub-install /dev/hda
xp啟動不了(僅到出現F8畫面),此動作不就是將GRUB安裝到MBR,難道是我誤解了?
F8畫面?什麼意思?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-09 18:55
sorry,是安全模式的menu畫面.

果然真不是loader的問題,而是usb外接硬碟造成.不大清楚原因(??),將其拔掉後windows就可正常啟動.

但是我接著嘗試將 grub 裝於 hdb 的 boot sector:
grub> root (hd1,0) #我的/boot是獨立的partition
grub> setup (hd1,0)
安裝過程正常: stage1,stage2,kernel image都有被找到.

bios 也設定以 hdb 為開機碟...但啟動linux時卻出現錯誤訊息:
先列出 grub.conf (我是用rhel5)的設定,然後顯示 - couldn't mount selected filesystem
確定設定無誤...我系統多為LVM filesystem,但/boot的partition則是ext3,在grub shell設定 root (hd1,0) 時,其出現的結果竟是ext2 的檔案系統....不知問題是否與此有關?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-09 22:30
跑一下 pvscan 跟 vgscan ,找出 VG 之後:
vgchange -a y VG_NAME
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-10 20:07
跑一下 pvscan 跟 vgscan ,找出 VG 之後:
vgchange -a y VG_NAME
感謝 netman 大,但不大懂您的意思..
先請教一下該 error message :couldn't mount selected filesystem -> 指的是哪個 filesystem ?

以下 result 是當我將 grub 改裝於 hda 的 MBR 後,可正常啟動時的情形:
其中 /dev/hdb1 為 /boot  且其並非 LVM! 另外, 我所有的 VG 皆已 active !

...不懂為何只要當我將 grub 改裝至 /dev/hdb boot  sector 時就啟動失敗(掛載不了)?

===========================================
   Device Boot      Start         End      Blocks       Id    System
/dev/hdb1   *           1          13      104391      83    Linux
/dev/hdb2              14         535     4192965     fd    Linux raid autodetect
/dev/hdb3             536        1057     4192965    fd    Linux raid autodetect
/dev/hdb4            1058        2498    11574832+   5    Extended
/dev/hdb5            1058        1579     4192933+   8e   Linux LVM
/dev/hdb6            1580        2101     4192933+   8e    Linux LVM
/dev/hdb7            2102        2228     1020096     fd    Linux raid autodetect
/dev/hdb8            2229        2355     1020096     fd    Linux raid autodetect
/dev/hdb9            2356        2498     1148616     8e    Linux LVM

[root@server1 ~]# lvscan
  ACTIVE            '/dev/VolGroup01/LogVol00' [1.88 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol00' [6.62 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [2.00 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol02' [4.00 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol03' [4.00 GB] inherit
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-10 22:55
哦,還以為你要 mount 的 LVM 還沒 active 呢。
原來不是,那我所答的就不對了。

或許看看 menu.lst 的設定是否也改到 sdb 了?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: hikohan2009-05-11 09:12
裝在hda可以開機,這是第一個線索。

裝在hdb的MBR?那hda的boot loader是什麼?只要hda的boot loader是可以載入grldr或選單進入hdbN的grub/lilo選單,那就可以載入kernel開機。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: harrier2009-05-11 14:47
1.
xp 先安於 hda
linux 後裝於 hdb, 而 grub 安裝時選擇裝於 boot sector 而非 MBR
--> 如何啟動 linux ?

hda 的哪裡?1,2,3,4??
hdb 的哪裡?1,2,3,4??

Windows 的啟動流程是看哪個 partition 是 active,然後去啟動 partition 下 ntldr...
Linux 是 mbr -> 指定的 partition -> 載入該 partition superblock 的 loader...
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-11 15:54
Thanks!  :)

1.
xp 先安於 hda
linux 後裝於 hdb, 而 grub 安裝時選擇裝於 boot sector 而非 MBR
--> 如何啟動 linux ?

hda 的哪裡?1,2,3,4??
hdb 的哪裡?1,2,3,4??

xp :
1.)  /dev/hda1 (c槽=整顆硬碟)

linux(rhel5) :
1.)  /dev/hdb1 的掛載點: /boot (filesystem: ext3)
2.)  grub> root (hd1,0)
      grub> setup (hd1,0) #就是/dev/hdb1
     
     PS.  安裝 GRUB LOADER 前,有先作過: dd if=/dev/zero of=/dev/hda bs=446 count=1

Windows 的啟動流程是看哪個 partition 是 active,然後去啟動 partition 下 ntldr...
Linux 是 mbr -> 指定的 partition -> 載入該 partition superblock 的 loader...



裝在hda可以開機,這是第一個線索。

裝在hdb的MBR?那hda的boot loader是什麼?只要hda的boot loader是可以載入grldr或選單進入hdbN的grub/lilo選單,那就可以載入kernel開機。

hda 裝 xp 所以 boot loader 應該就是 windows 的.
不過之後有執行過: dd if=/dev/zero of=/dev/hda bs=446 count=1 所以 hda 的 MBR 的前 446bytes 應該是清掉了.

PS. bios 中開機硬碟設定為: hdb(裝 LINUX 的那顆)
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: hikohan2009-05-11 16:05
grub裝在hdb MBR的意思是不是你去調bios的開機硬碟順序?  :P
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-11 17:37
 :P :P 不好意思,等一下,
可否先請教一下:

一直搞不是很清楚,趁機請教一下各位(有誤請糾正).例如(參考自:http://www.pczone.com.tw/vbb3/thread/39/50519/ (http://www.pczone.com.tw/vbb3/thread/39/50519/))
1.) 假若我裝 WINDOWS 於 PRIMARY MASTER 的硬碟(hda1)上的第一個分割區時:
-> 此情形,請教 hda 之 MBR (第零軌上第一個磁區)上的程式區(Pre-Loader/Pre-Boot)上的小程式是否就是 WINDOWS 的 BOOT LOADER?
-> hda 之 boot sector 上又有些甚麼?
-> ntldr 在流程中的角色? 

2.) 而安裝 linux 時的狀況與 windows 是否一樣?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-11 20:32
基本上每顆硬碟都有一個 MBR,這是第一個 sector (512byte)。
過了這個 sector 才是 partition,可以分一個單一 partition 也可以分多個 partition。
然後每一個 partition 的第一個 sector 就是 boot sector (也有其他名稱)

一般的 loader 可以放在 MBR 里面的 446byte 也可以放在 partition 前的 boot sector。
但 BIOS 只會找到 MBR 來開機。
也就是說,如果你將 loader 放在 boot sector,
那 MBR 那邊所開的 loader 必需有一個 entry 指到你所裝的 boot sector 才能開。
通常這也叫 chain loader。

ntld 我不確定是放哪?
但 linux 的 loader 太大了,要分開 stage1 跟 stage2,
其中的 stage2 是在 file system 里面(partition里面),
但 stage1 放 MBR 或 boot sector 都行。
但如果你選擇放 boot sector,那就請修改 MBR 開的那個 loader,
多加一個 entry 給 chain 到你的 boot sector 去。

這些在一般的 Linux 課程都會講到的,有空可以上上課,那就更清楚了。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: darkranger2009-05-11 20:43
-> ntldr 在流程中的角色? 
ntldr 就是 Windows 的 boot loader

主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-12 01:17
Thanks a lot! ::) ::)

hikohan 兄:
我是將 grub 裝在 hdb 的 boot sector 非 MBR .

如果是 netman 大開的課我一定報名!  :)
可惜我住台北...現在網路這麼發達,如有遠距教學也不錯! 

但 linux 的 loader 太大了,要分開 stage1 跟 stage2,
其中的 stage2 是在 file system 里面(partition里面),
但 stage1 放 MBR 或 boot sector 都行。
但如果你選擇放 boot sector,那就請修改 MBR 開的那個 loader,
多加一個 entry 給 chain 到你的 boot sector 去。

netman 大的解說若化為行動,不就是:

install grub loader
grub> root (hd1,0)
grub> find /grub/stage1
grub> find /grub/stage2
grub> setup (hd1,0)

然後是,

/etc/grub.conf 設定:
title RHEL 5 Server (2.6.18-53.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quie
t crashkernel=128M@16M
        initrd /initrd-2.6.18-53.el5.img
title Windows XP
        rootnoverify (hd0,0)
        chainloader +1

.....難道是好事多磨(且我有在 BIOS 中設定 hdb 為開機碟,開機順序是: cd-rom->hard disk),為何我會開不了?
有沒有可把 MBR or Boot Sector 內容倒出來看的工具?

可否請教 darkranger 兄 NTLDR 是如何啟動 windows xp 的?感激不盡! :)
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-12 01:22
grub> setup (hd1)

看看?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: fillano2009-05-12 09:31
基本上每顆硬碟都有一個 MBR,這是第一個 sector (512byte)。
過了這個 sector 才是 partition,可以分一個單一 partition 也可以分多個 partition。
然後每一個 partition 的第一個 sector 就是 boot sector (也有其他名稱)

一般的 loader 可以放在 MBR 里面的 446byte 也可以放在 partition 前的 boot sector。
但 BIOS 只會找到 MBR 來開機。
也就是說,如果你將 loader 放在 boot sector,
那 MBR 那邊所開的 loader 必需有一個 entry 指到你所裝的 boot sector 才能開。
通常這也叫 chain loader。

ntld 我不確定是放哪?
但 linux 的 loader 太大了,要分開 stage1 跟 stage2,
其中的 stage2 是在 file system 里面(partition里面),
但 stage1 放 MBR 或 boot sector 都行。
但如果你選擇放 boot sector,那就請修改 MBR 開的那個 loader,
多加一個 entry 給 chain 到你的 boot sector 去。

這些在一般的 Linux 課程都會講到的,有空可以上上課,那就更清楚了。

這樣講好像怪怪的?

MBR的結構是:前440bytes是程式,然後有一些disk signature,從446開始是64bytes的partition table,總共有4個entry,每個16bytes,最後是0x55AA的signature。這些全部都在這512bytes中。

bootloader一定有部份放在前面這440bytes的空間,因為bios在開機後會把這512bytes載入記憶體,然後從區段位址0開始執行。如果這440bytes不夠用,接下來的部份要放哪裡就看怎麼設計,常常是會放在MBR之後的磁區中,然後透過這440bytes的程式碼載入。只要是用硬碟開機,所有x86 bios應該都是這樣執行的。

額外的程式包含ext2檔案系統讀取的程式,這樣就可以到/boot中讀取stage1的image,也就是initrd。

所以如果MBR裡面什麼都沒有,那開機以後就不會有任何動作。bios可不會載入boot sector的東西。(硬碟第零軌的第一個磁區是MBR,第一軌的第一個磁區是boot sector,每一個軌都有很多磁區的,所以其實MBR之後還有很多空間)


另外,也可以透過ntldr載入linux的bootloader,請上網找一找grub4dos。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-12 12:18
恩?你沒說怪在哪哦~~~

還有你說的那堆,跟我說的沒不一樣啊。?_?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: fillano2009-05-12 13:35
是喔,那是我誤解了。 :)
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-12 15:41
哦,那輪到我了哦... ^_^

你說的 stage1 不是 initrd 哦。
stage1 若不放 MBR 那就是放 boot sector,
它的功能只有一個:載入 stage2
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: fillano2009-05-12 16:10
了解了,謝謝您。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: darkranger2009-05-12 19:28
可否請教 darkranger 兄 NTLDR 是如何啟動 windows xp 的?感激不盡! :)
原理嗎?我不知道
我只知道我曾經把 NTLDR 砍了,然後就發生悲劇了....
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: davihuan2009-05-12 20:26
可否請教 darkranger 兄 NTLDR 是如何啟動 windows xp 的?感激不盡! :)
原理嗎?我不知道
我只知道我曾經把 NTLDR 砍了,然後就發生悲劇了....

NTLDR的原理?想要知道什麼?知道了也不能怎樣.....又不是GRUB4DOS什麼奇怪的東西都可以啟動!!!
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: hikohan2009-05-12 21:53
http://phorum.study-area.org/index.php/topic,55709.0.html

的確,grub什麼都給他啟動下去。

linux kernel + NTLDR + GRLDR + DOS + ISO + Floppy Image + Iso Linux + loadlin.exe....
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: 洋蔥叔叔2009-05-12 22:34
NTLDR 跟 Windows 的關係
就有如 Grub/LILO 跟 Linux 的關係

NTLDR 負責載入 Windows 核心,就有如 Grub/LILO 負責載入 Linux 核心。
Windows(nt 系列到 2003) 的 bootsector 只負責載入 NTLDR
只是 Windows 載入核心的程式碼比較肥大,無法只住在 Bootsector 或 MBR 裏面,所以才分割出來另外一個檔案。

至於上面講的 "grub什麼都給他啟動下去" 當然只是個迷思, GRUB 不支援載入 Windows 核心,只支援所謂 chainloader 來呼叫其他地方 bootsector 。
NTLDR 其實也支援類似 chainloader 的功能,理所當然也可以拿來載入 Linux (或精確一點說,呼叫在其他 bootsector 裏面的 GRUB/LILO)。



主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-13 01:11
有興趣的話,也可以看看 12 年前的舊文章:

http://www.tldp.org/HOWTO/Linux+NT-Loader.html
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: hikohan2009-05-13 04:33
..
至於上面講的 "grub什麼都給他啟動下去" 當然只是個迷思, GRUB 不支援載入 Windows 核心,只支援所謂 chainloader 來呼叫其他地方 bootsector 。
NTLDR 其實也支援類似 chainloader 的功能,理所當然也可以拿來載入 Linux (或精確一點說,呼叫在其他 bootsector 裏面的 GRUB/LILO)。

觀念清楚就不迷啦,觀念不清楚就迷啦,不就清楚迷觀念啦,不就觀念迷清楚啦。

感覺GRUB的大道理喔~
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-13 09:08
各位提供的訊息我正在 K  :P 感激不禁!  :)

算算之前一共試裝了幾個不同的地方,
grub> setup (hd1) --> 失敗
grub> setup (hd1,0) --> 失敗
grub> setup (hd0) --> ok

錯誤訊息如下:

選單(黑白,非彩色)以 linux 開機時:
root (hd1,0)
Filesystem type unknown partition type 0x7
Kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet crash kernel=128M@16M

Error 17: Cannot mount selected partition press any key to continue .....
選單以 windows 開機時:
Booting windows xp
rootnoverify (hd0,0)   
chainloader +1
GRUB loading stage2 .....
然後自行重開機
PS.
#(hd1,0) 是 linux 的 /boot 所在
#(hd0,0) 是 windows 的 c 槽所在
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: 洋蔥叔叔2009-05-13 11:19
對 GRUB 來講 BIOS 的開機順序很重要。設定第一個開機的,不管他在那個控制器,對 GRUB 來講他就是 hd0。所以你現在應該是把 Linux 所在那顆硬碟設成第一個開機對吧?
照你給的這段訊息:
引用
root (hd1,0)
Filesystem type unknown partition type 0x7
Kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet crash kernel=128M@16M

Error 17: Cannot mount selected partition press any key to continue .....

partition type 0x7 是 NTFS 的分割區,所以很明顯的目前 GRUB 是把 Windows 所在那顆硬碟當做 hd1。
所以在這個狀態下當你做了 grub> setup (hd1,0) ,你已經把 Windows bootsector 給蓋掉了。
釐清一下你目前的狀況:

Windows 在 /dev/hda
Linux 在 /dev/hdb,/boot 在 /dev/hdb1, / 在 /dev/hdb2
BIOS 設由 /dev/hdb 開機
GRUB 裝在 /dev/hdb 的 MBR
GRUB 選 Windows 開不了機
BIOS 設由 /dev/hda 開機的話,Windows 還是開不了機

對嗎?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-13 13:56

所以在這個狀態下當你做了 grub> setup (hd1,0) ,你已經把 Windows bootsector 給蓋掉了。


恩,他前面有下 find 命令,但是沒貼結果。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-14 01:20
佩服佩服(是我的問題,sorry!)

不好意思,再次確認:

目前 BIOS 設定
1. ATAPI CD-ROM
2. IDE Hard Drive
3. Removable Device
4. Other Boot Device

Primary Master 的硬碟裝有 xp
Primary Slave 的硬碟裝 rhel

在第二項,我選擇 Primary Slave 那顆 (裝有linux)

引用
對 GRUB 來講 BIOS 的開機順序很重要。設定第一個開機的,不管他在那個控制器,對 GRUB 來講他就是 hd0。
那麼,我若欲安裝 grub 於此顆硬碟的 boot sector 時,照您意思應該是:
grub> root (hd0,1)
grub> setup (hd0,1)

是嗎?  ???
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: netman2009-05-14 01:29
root 跟 setup 設哪?
不防先用 find 找出 stage1 或 stage2 在哪然後再決定。

假如你要 BIOS 直接開 GRUB,就只能放在 mbr (hd0) or (hd1),不能放在 boot sector。
當你找出 linux 所在的 hd 號碼之後,剩下那顆就是 xp 的,然後用 chainloader 指過去就是了。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: 洋蔥叔叔2009-05-14 11:34
那這樣子,你照下面的步驟做做看:

1. 修復 Windows 的 bootsector

2. 設定 GRUB

上面 grub 設定檔裏面加了 map (XXX) (XXX) 的用意是,Windows 對於開機順序其實也是會挑,如果安裝時他是第一開機順序的硬碟,那當你 BIOS 設成用其他硬碟開機,他可能就開不了機。所以加了 map 指令的話,可以讓 Windows 以為 Primary Master 還是在第一順序,就跟安裝的時候一樣。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: harrier2009-05-14 11:38
1.)  /dev/hda1 (c槽=整顆硬碟)
linux(rhel5) :
1.)  /dev/hdb1 的掛載點: /boot (filesystem: ext3)
2.)  grub> root (hd1,0)
      grub> setup (hd1,0) #就是/dev/hdb1

假設 BIOS 開機順序固定不動,grub 的設定應該如下:

title LINUX
root (hd1,0)
kernel /[你 /boot 下的 vmlinuz 檔案全名] ro root=[你 / 檔案系統的所在,用 /dev/hdbX 表示] rhgb quiet
initrd /[你 /boot 下的 initrd 檔案全名]

title WINDOWS
rootnoverify (hd0,0)
chainloader +1

記得 /dev/sda1 要用 fdisk 類軟體標記成 active/bootable。

試試看這樣可否運作?
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-15 00:40
BIOS 選 Primay Slave 為開機碟
什麼都沒做,僅顛倒了 grub.conf 的原設定為(擷取如下):
title Linux
root (hd0,0)

title Windows
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)

過關!

印象中好像也在鳥哥網站看到過這句: "grub 會受BIOS搜尋順序的影響" .....

請問,
同樣前提下,若欲重安 grub
若是以下二方式開機:
1.) Rescue cd (此時hd0不就變成了cd-rom??)
2.) hard disk(選linux)
當執行 grub shell 設定 root 與執行 setup 時,也是以開機碟(primary slave)為 hd0 為原則嗎?

有無工具可得知目前所有硬碟的 MBR 與 Boot Sector 的情形?
例如,由於之前亂裝了一番, grub 可能遍佈 primary master 與 slave 兩顆硬碟的 MBR 與 boot sector,
只是想全清掉重來,確定 grub 是裝在 primary slave 的 boot sector 即可.

最後請問之前..曾做過 dd if=/dev/zero of=/dev/hda bs=446 count=1 ,為何還可啟動 primary master 的 windows xp ?  ???
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: 洋蔥叔叔2009-05-15 11:16
引用
請問,
同樣前提下,若欲重安 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 (http://ms-sys.sourceforge.net/)將 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。
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: b902202082009-05-17 00:30
Demonbane 大,
非常非常地感謝!
看來觀念清楚真的很重要,想趁休假 K 一下(練功),有無可加強這方面"基礎"的資訊,希望您不吝分享,謝謝  (所有幫過我的大大) :) :)
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: anderson11272009-07-30 11:49
建議版主將此篇討論納入精華區 ...

尤其是洋蔥叔叔 老大的說明真是清楚 , 也讓小弟觀念一下子更為清楚 !!
(原本只是知道一個大概而已)

之前因為一些因素,無法使用Fedora Core 6以上的install DVD來安裝在AMD 780G chipset 主機板
只能夠用Fedora Core 6安裝在AMD 780G chipset MB上,可是會找不到SATA硬碟(driver問題)

所以只好用土法煉鋼,將原本Fedora Core 6的OS SATA硬碟上的Feodra Core 6 Linux進行移轉
這次測試是從160G SATA硬碟移轉到320G SATA硬碟, 兩者的root partition都不一樣,所以要修改
grub.conf 及 /etc/fstab 檔案 !!
(Kernel Recompile in 2.6.22版 , 專門給GA-MA690G-S2H[AMD chipset 690G]使用)

之前敢做的大都是相同的HD partition號數移到另一棵相同的partition號數,這次試著給它換到不一樣的
號數 , 原本是安裝於A HD Partition 1(切20G給它當做root partition) , 移轉後安裝於B HD Partition 2
然後帶入洋蔥叔叔 大的說明,來做試當的修改設定!!

接著土法煉鋼,將A HD的root partition file system一個一個copy到B HD partition 2
當然也注意到了 grub.conf的修改以及 /etc/fstab的修改 !! 還有從 ext2 filesystem轉換成ext3
移轉完成後,移到AMD 780G主機來試著開機...

成功!! 又完成一件AMD 780G主機板可以順利使用Fedora Core 6的OS ...
主題: 回覆: grub 裝於次硬碟之boot sector的啟動請教
作者: harrier2009-07-31 09:49
但不管怎樣,你只要記住 - 在預設的情況下,BIOS 設為第一個開機的硬碟,不管在那裡,對 GRUB 來講就是 (hd0)

IBM PC 開機的裝置,BIOS 給予的裝置編號是 0x80,然後依序為 0x81、0x82...
我們若直接調整 BIOS 中的開機順序(後來的 BIOS 才有這功能..對我們這些老人而言),BIOS 就是去修改這個機值。
這邊有古老的文件可供參考:
http://www.linux.org/docs/ldp/howto/LILO-6.html
http://tldp.org/HOWTO/MultiOS-HOWTO-6.html
http://www.pcguide.com/vb/archive/index.php/t-12676.html

BIOS 完成它的程序後,GRUB 接手,此時 BIOS 就是把 ID 被稱作 0x80 的磁碟,告訴 GRUB "這是你的 hd0",
然後接著就是 GRUB 的程序了。