作者 主題: [最佳]開機觀念疑問  (閱讀 16324 次)

0 會員 與 1 訪客 正在閱讀本文。

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 於: 2003-08-03 14:32 »
想問一個關於多重開機的觀念,一般從硬碟開機會先去抓取的部分是mbr,若lilo
沒放mbr就交由mbr上的開機程式碼看看哪個分割區設定為active,然後交其處
理,若我先灌windows再灌linux,並將lilo放superblock,並設定active,這時
開機起來就看到lilo選單畫面,但我不瞭解的是當初灌windows時,windows的
loader已在mbr,為何不會直接開windows,而是直接去抓取那個位於superblock
並設定為active的lilo?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #1 於: 2003-08-03 16:56 »
你的情形最好說得詳細些...
如,你如何確定 mbr 是用哪個 loader ?還是,沒灌 loader 呢?

或許用  mbr 找一下文章?如下篇:
http://phorum.study-area.org/viewtopic.php?t=10042&highlight=mbr
裡面有個 link ,一定要看哦...

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #2 於: 2003-08-03 17:38 »
簡單的說就是硬碟上有兩os,設windows在hda1,linux /boot在hda2,而lilo不放mbr
而是放super block,並將/boot設定active,這樣開機時會由lilo去執行,但不
了解的是windows的loader不是都在mbr上嗎?為何不會先去執行windows loader
?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #3 於: 2003-08-03 17:43 »
嗯,不妨確定一下 mbr 有沒有用 windows 的 loader ?
1) 先準備好兩個  os 的 boot disk,並確定可用。
2) 將 lilo 灌到  super block。
3) 到 windows 跑 fdisk /mbr (這是將 windows loader 灌到 mbr)
5) reboot

再補一篇:
http://phorum.study-area.org/viewtopic.php?t=12511&highlight=mbr+super+block

linuxcoke

  • 懷疑的國中生
  • **
  • 文章數: 34
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #4 於: 2003-08-03 17:49 »
引述: "小二黑"
簡單的說就是硬碟上有兩os,設windows在hda1,linux /boot在hda2,而lilo不放mbr
而是放super block,並將/boot設定active,這樣開機時會由lilo去執行,但不
了解的是windows的loader不是都在mbr上嗎?為何不會先去執行windows loader
?


In case,if the NTloader in MBR, it can not load linux.
So I think it should be lilo in MBR.

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #5 於: 2003-08-03 17:50 »
執行fdisk /mbr windows還是可以開機啊,那這是不是意味當初灌windows時
她的loader其實不是在mbr,而是在super block?
我一直認為windows的loader會在mbr是因之前看別人在討論時寫到的(很久以前)
,難道這個觀念是錯的?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #6 於: 2003-08-03 18:12 »
看來,我們的討論在某一程度上都"猜"不到對方的論點。
不妨請你重新組問題呢?
還是你要問:
1) MBR 的 loader 用 lilo ,為何能進 windows ?
2) MBR 的 loader 用 lilo ,為何不能進 windows ?
3) MBR 的 loader 用 lilo ,為何能進 linux ?
4) MBR 的 loader 用 lilo ,為何不能進 linux?
5) MBR 的 loader 用 windows loader ,為何能進 lilux?
6) MBR 的 loader 用 windows loader ,為何不能進 linux ?
7) MBR 的 loader 用 windows loader ,為何能進 windows?
8) MBR 的 loader 用 windows loader ,為何不能進 windows ?

p.s
無論如何,請你一定一定一定一定一定一定一定要確定 MBR 用哪個 loader ?
若 MBR 沒有 loader 的話,是不會 chain 到 super block 的 loader 的。

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #7 於: 2003-08-03 19:37 »
抱歉,造成大家的困擾,換種方式講好了:
安裝方式:hda1-->windows 98 ,linux /boot-->hda2,/ -->hda3
lilo安裝在/boot並將此分割區設定成active。
reboot後可出現lilo的多重開機選單,一切正常。
而windows安裝好後沒做任何修改,那在這種情形下,windows 98當初安裝好
後的loader預設是在mbr還是hda1上?
其實我的問題很單純,只是想知道當我們在安裝好windows的作業系統後,她的
loader是放在mbr還是super block?
因之前看到有人討論此方面問題說是在mbr,所以才想出這個問題,既然windows
的loader放mbr,那為何照上面的安裝方式不會先去啟動windows,而是先去找
哪個分割區設定active,所以才想知道windows安裝完畢時的loader是放於何處?
 

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #8 於: 2003-08-03 20:36 »
等等...
我只看到你說"將 lilo 裝到 super block",
而沒看到你說 mbr 用哪個 loader ?

又,你說"開機不去看 mbr 而是先跳到  active partition 的 loader",
是如何確定的?理論依據在哪?還是你自己猜的?

我問過很多次了:請確定  mbr 用哪個 loader ?
如果你認為是 windows loader ,
那為何不用 fdisk /mbr 重灌(因為按你的說法這動作沒改變甚麼啊...),
等你確定了 mbr 的  loader 再讓我們繼續吧...
如何確定?
1) 進 windows 跑 fdisk /mbr 可確定用 windows loader
2) 進 linux ,將 /etc/lilo.conf 的 boot= 設為 /dev/hda ,再跑 lilo 就能確定用 lilo
請你完成上兩者之一,再回來告訴大家結果,那時侯我們再討論才有更多"交集",而非各說各話...
當然,我也不確定我說的就正確,能有你幫忙測試是最好不過的了。
同時,我也最喜歡這類"思考型"的技術討論,比那些"問答型"的 Q&A 有樂趣多了﹗^_^
希望你不要氣餒哦~~~  加油﹗

jameslfp

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #9 於: 2003-08-03 21:42 »
對這部份之前有研究過GRUB,不管能不能幫上忙,把我所知的提出,
如果問題,還請大家指正。

 1、win98/2000 的開機loader,不是寫在mbr,應該是在該分區的 superblock上。所以mbr上讀不到其它的引導程序,就只能往第一個分割區的superblock讀取資料,通常這是win98系統的開機方式。
2、如果win98、2000一起灌,則2000的開機loader一樣不在自己的superblock上,而是把win98那個分區的loader替換掉,因此開機時會看到windows及win2000的選單。
3、如果將lilo或Grub寫在win98或2000的superblock上,這可以,但是如果要疑除(用fdisk/mbr指令),可能會發生問題,在公司,家裡都試過,所以建議不要將linux的loader寫在win系統的superblock上。

jameslfp

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #10 於: 2003-08-03 21:53 »
引述: "小二黑"
抱歉,造成大家的困擾,換種方式講好了:
安裝方式:hda1-->windows 98 ,linux /boot-->hda2,/ -->hda3
lilo安裝在/boot並將此分割區設定成active。

reboot後可出現lilo的多重開機選單,一切正常。
而windows安裝好後沒做任何修改,那在這種情形下,windows 98當初安裝好
後的loader預設是在mbr還是hda1上?
其實我的問題很單純,只是想知道當我們在安裝好windows的作業系統後,她的
loader是放在mbr還是super block?
因之前看到有人討論此方面問題說是在mbr,所以才想出這個問題,既然windows

引用
絕對不是mbr,如果你有灌98及2000,之後請你用98磁片開機,下一個sys c:的指令,保證你開機就找不到win2000了
。[/color]

的loader放mbr,那為何照上面的安裝方式不會先去啟動windows,而是先去找
哪個分割區設定active,所以才想知道windows安裝完畢時的loader是放於何處?
 

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #11 於: 2003-08-03 22:47 »
報告老大,fdisk /mbr不是要刪除mbr上的資料嗎?
我已用98開機片進入dos執行fdisk /mbr了,且也再度進入linux執行
grub-install /dev/hda2 --> 我的/boot放在hda2
reboot後還是跟之前的結果一樣,進入設定active的lilo選單畫面。
引述: "netman"
等等...
我只看到你說"將 lilo 裝到 super block",
而沒看到你說 mbr 用哪個 loader ?

那像這樣我的mbr是用哪個loader?
我個人想法是mbr此時因無loader存在,而是由mbr上的partition table直接去
看哪個primary partition設定為active,就交給其去處理,只是這種想法不曉得
對不對?
引述: "netman"

等你確定了 mbr 的 loader 再讓我們繼續吧...
如何確定?
1) 進 windows 跑 fdisk /mbr 可確定用 windows loader

這是什麼意思?為何執行fdisk /mbr可確定mbr用windows loader?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #12 於: 2003-08-04 12:15 »
fdisk /mbr 不是"移除" loader ,而是將 dos/windows loader 灌進 mbr 。
請你在 fdisk /mbr 之後不要再跑 grub-install 或 lilo 再來試?

通常,os loader 是分兩個階段進行的:
* menu
* pointer / mapper
在 mbr 的 loader 可通常可提供 menu ,
然後跟據 menu 再到相應的 superblock 將 mapper 載入,
再跟據 mapper 的設定載入 kernel ,才結束 loader 任務。
倘若 super block 放的不單是 mapper ,而是完整的 loader,
那從 mbr loader 到 superblock loader 我們稱之為 chaining 的動作。

你說 mbr 找不到 loader 才到 active partition 找,
請提出你的論據(比方書名、網頁之類),而不是單純考想像...

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #13 於: 2003-08-04 14:28 »
再反覆看了幾次這串討論,嗯... 我猜,我應該能最終"猜"到你的疑問在哪了。

你的問題在於 "我個人想法是mbr此時因無loader存在" 此一前提條件。
事實上,mbr 不可能不存在 loader 的(但我也不知如何拔掉它,我只知道如何灌進去)。
以 linux 的 loader 為例,它的載入分為兩個階段(請參考上篇):
1) 你可將第一階段塞進 mbr ,而第二階段跟著 /boot 目錄所在的 partition 之 superblock 。
2) 也可全都塞進 super block ...
但無論何種情況,均需要 mbr loader 的引導:
第一種情況是從 stage 1 直接進入 stage 2 ,再完成 loading 。
第二種情形則是從一個 stage 1 給 chain 接到另一個 stage 1 而已。

那,再來看 windows 的 loader (不是 ntld),
雖然我不100% 確定是否也分兩個 stage ,
但,我猜它只能灌進 mbr (但又不提供 menu 給你選),
然後跟據 partition 的 bootable flag (所謂的 active),去該 partition 的  superblock 載入下一個 stage 。
若該 partition 是 windows partition ,那就載入 windows kernel 。
但若不是 windows partition 呢?
這需要看 windows loader 能否直接載入 linux loader 的 stage 2 了?
看來是不行的...
那,若該 partition 還裝有 linux loader 的 stage 1 呢?
bingo! 你這時就能 chain 到另一個 loader 了﹗
接下來,就是 linux loader 的畫面(這裡還可以繼續 chain 到其它 loader 去哦)...  ^_^

不知,這樣說能否解決你的疑問呢?

小二黑

  • 憂鬱的高中生
  • ***
  • 文章數: 150
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #14 於: 2003-08-04 16:35 »
引述: "netman"
再來看 windows 的 loader (不是 ntld),
雖然我不100% 確定是否也分兩個 stage ,
但,我猜它只能灌進 mbr (但又不提供 menu 給你選),
然後跟據 partition 的 bootable flag (所謂的 active),去該 partition 的  superblock 載入下一個 stage 。
若該 partition 是 windows partition ,那就載入 windows kernel 。
但若不是 windows partition 呢?
這需要看 windows loader 能否直接載入 linux loader 的 stage 2 了?
看來是不行的...
那,若該 partition 還裝有 linux loader 的 stage 1 呢?
bingo! 你這時就能 chain 到另一個 loader 了﹗
接下來,就是 linux loader 的畫面(這裡還可以繼續 chain 到其它 loader 去哦)...  ^_^


仔細研究了一小時,終於讓我想通了,這也讓我回想起以前有顆硬碟有
windows-->hda1,linux-->hda2(lilo在mbr),當我windows中毒執行ghost
還原後居然都開不起來,我想此時就是mbr被windows loader覆蓋掉了,這也是
人家常說先灌linux再灌windows,此時mbr loader就是windows的原因,因mbr
只能存在一個loader。
netman大大,謝啦。

harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
[最佳]開機觀念疑問
« 回覆 #15 於: 2003-08-05 09:39 »
引述: "netman"

事實上,mbr 不可能不存在 loader 的(但我也不知如何拔掉它,我只知道如何灌進去)。


對硬碟低階格式化就不見了..還有用 NU 一類的 DE 去清應該清得掉吧?
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

jameslfp

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #16 於: 2003-08-05 21:35 »
引用
fdisk /mbr 不是"移除" loader ,而是將 dos/windows loader 灌進 mbr 。


mbr如果確定不可能沒有資料,我猜是不是只是媒體上的基礎訊號..不管是用 lilo -u或是 fdisk/mbr,都是把我們額外的loader拿掉而已...

我認為是 dos/windows 的loader不在mbr....證明的觀點是..
一台win98、win2000及linux共存的電腦
先灌win98,再灌win2000,這時我們先不論mbr到底有什麼...
接著再灌linux,最後採 grub引導進入linux或dos,如果選擇dos選單,還會出現windows及win2000的選擇,我想有些人或許曾灌過類似這種系統。

因此灌完linux後,卻定mbr裝的是grub或lilo...

可以正常運作後,用win98磁片開機,下sys c:\,於是開機後呢,可進linux,可進dos,但卻少了win98及win2000的選單...,當然選擇dos的標籤後,就直接進win98系統。

如果說win98有一loader,是有的,而且是個無法提供其它os引導的loader,那他的位置是不是在mbr就有疑慮了,我認為他的位置在 win98分割上的SuperBlock,因此sys c:的動作,把2000的loader改回98的loader...

以上不是猜的,是真的有實做過而整理出來的,如果更好的答案,煩請指正,但關於紅字部份的疑問,也請要解答的人告訴我,至少一個問題才不會變多頭馬車。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
[最佳]開機觀念疑問
« 回覆 #17 於: 2003-08-05 22:41 »
sys c: 不是要灌 loader ....
只是將 io.sys, msdos.sys 跟 command.com 灌進去而已.

嗯,碰到觀念問題最好不要想當然,先找理論根據是很重要的.

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #18 於: 2003-08-05 23:11 »
插花一下,mbr上不是有分446bytes的開機程式碼及partition table嗎,
那這個開機程式碼就是所謂的loader是嗎?

aparosa

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #19 於: 2003-08-11 11:23 »
再插一個花
dd if=/dev/zero of=/dev/hda bs=446 count=1
這樣應該可以清掉MBR
windows 我就不懂了 ^.^
inux smart you

jiannyen

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #20 於: 2003-08-14 21:26 »
引述: "aparosa"
再插一個花
dd if=/dev/zero of=/dev/hda bs=446 count=1
這樣應該可以清掉MBR
windows 我就不懂了 ^.^


去抓個Spfdisk來用....
 設定多重開機
1.設win98
2.設linux/boot啟動區
3.把開機選單安裝到mbr上
 如此應該就能蓋掉Lilo OR windows的MBR了

jiannyen

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[最佳]開機觀念疑問
« 回覆 #21 於: 2003-08-14 21:31 »
引述: "jiannyen"
引述: "aparosa"
再插一個花
dd if=/dev/zero of=/dev/hda bs=446 count=1
這樣應該可以清掉MBR
windows 我就不懂了 ^.^


去抓個Spfdisk來用....
 設定多重開機
1.設win98
2.設linux/boot啟動區
3.把開機選單安裝到mbr上
 如此應該就能蓋掉Lilo OR windows的MBR了

 我之前這樣試過
bios改成SLAVE那台硬碟開機hdb1,然後一樣用spfdisk安裝mbr
 如此硬碟啟動區就在SLAVE那台上(ASUS主機板的BIOS)