如果windows也是默认把引导记录安装到mbr?

新手涉及到的教学或入门贴,推荐新手必看,版主维护
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

Re: 如果windows也是默认把引导记录安装到mbr?

#16

帖子 axxdz » 2009-10-16 7:25

谢谢billbear,敢问,你是从哪里得知保留0磁道上的扇区这个事实的呀?是从图书馆还是从google?是看英文的原始文档呢?怎么找到的啊?我想这就是高手和菜鸟的区别。

还有,现在我知道了grub的stage1不能直接识别文件系统,需要stage1_5。那么,对于windows,我原先猜想的是,如果windows把引导程序安装在mbr,那么grub通过备份mbr上的windows引导程序的方式,也可以引导windows。现在看来,windows只在mbr上写下一条跳转语句,跳到windows所在的分区的引导扇区。我觉得费解的是,就像stage不能识别文件系统那样,windows分区上引导扇区的引导程序也不能识别windows文件系统吧。那么,由此推断,这个引导程序就是已经知道了ntldr文件在磁盘里的物理位置,利用bios调用,直接把它加载到内存。由此还可以推断出两个限制,一、如果ntldr这个文件在磁盘里的物理位置改变了,那么windows引导失败。二、如果windows被安装到了8gb以后的位置,那么,bios调用找不到ntldr文件,windows引导失败。
但是这些推断与现实相违背,在下困惑得很。
谢谢。
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

Re: 如果windows也是默认把引导记录安装到mbr?

#17

帖子 axxdz » 2009-10-16 7:39

我google了一下,以前的bios对大硬盘的支持不好,有1024柱面的限制,现在的bios已经没有这个限制了,我猜想,是由于这个原因,windows可以被安装到8gb以后的位置?
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 如果windows也是默认把引导记录安装到mbr?

#18

帖子 懒蜗牛Gentoo » 2009-10-16 8:10

lz住的精神值得赞赏
billbear的知识也值得赞赏,谢谢,学习了。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

Re: 如果windows也是默认把引导记录安装到mbr?

#19

帖子 axxdz » 2009-10-16 8:28

在下google了一下,LILO不能突破1024柱面而GRUB可以,其原因是GRUB支持硬盘的LBA模式。我猜想WINDOWS的引导程序如果不是通过识别文件系统而是直接通过BIOS调用来NTLDR的,那么应该也是通过支持LBA模式?
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: 如果windows也是默认把引导记录安装到mbr?

#20

帖子 billbear » 2009-10-16 10:31

axxdz 写了:谢谢billbear,敢问,你是从哪里得知保留0磁道上的扇区这个事实的呀?是从图书馆还是从google?是看英文的原始文档呢?怎么找到的啊?我想这就是高手和菜鸟的区别。
看 sudo fdisk -lu 就知道了。
sda1 是不是从 sector 63 开始?
grub 文档主要是查手册: http://www.gnu.org/software/grub/manual/grub.html

还有,现在我知道了grub的stage1不能直接识别文件系统,需要stage1_5。那么,对于windows,我原先猜想的是,如果windows把引导程序安装在mbr,那么grub通过备份mbr上的windows引导程序的方式,也可以引导windows。现在看来,windows只在mbr上写下一条跳转语句,跳到windows所在的分区的引导扇区。我觉得费解的是,就像stage不能识别文件系统那样,windows分区上引导扇区的引导程序也不能识别windows文件系统吧。事实证明你的猜想不对。引导扇区就是找文件 ntldr 的。假如你把 ntldr 改为别的名字,并且把 grldr 改名为 ntldr,那么引导起来的就是 grub4dos。
那么,由此推断,这个引导程序就是已经知道了ntldr文件在磁盘里的物理位置,利用bios调用,直接把它加载到内存。由此还可以推断出两个限制,一、如果ntldr这个文件在磁盘里的物理位置改变了,那么windows引导失败。二、如果windows被安装到了8gb以后的位置,那么,bios调用找不到ntldr文件,windows引导失败。
现在的 bios 一般都至少能访问 137G。有 137 G 限制的 bios,如果分区整个在 137 G 之外,mbr 跳不到分区引导扇区;若跨过 137G 的边界并且 ntldr 恰好在 137G 之外,分区引导扇区代码找不到 ntldr。
但是这些推断与现实相违背,在下困惑得很。
谢谢。
axxdz 写了:我google了一下,以前的bios对大硬盘的支持不好,有1024柱面的限制,现在的bios已经没有这个限制了,我猜想,是由于这个原因,windows可以被安装到8gb以后的位置?
1024 柱面限制并非 bios 的问题,而是 bootloader 的问题。比如 DOS/win98 的 MBR 就不能引导起始于 1024 柱面之后的操作系统。抹掉 grub 经常会用的 DOS 命令 fdisk /mbr 正是写入了 DOS/98 的 mbr,因而更推荐 fixmbr 写入的 NT/XP 的 mbr,如果 windows 分区不是首个分区的话。
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: 如果windows也是默认把引导记录安装到mbr?

#21

帖子 jarlyyn » 2009-10-16 11:24

就我的理解

由于历史遗留问题。

mbr的空间不够,放不下现在高度发展的引导程序。

所以,现在的mbr就等于是做了各链接。

而win的启动程序和grub之类做的事情,就是改变链接到不同的真实程序。

纯粹个人yy
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

Re: 如果windows也是默认把引导记录安装到mbr?

#22

帖子 axxdz » 2009-10-16 11:55

谢谢billbear,请受俺一拜。orz

我还是没有弄明白,既然windows的引导程序不是通过bios调用直接加载ntldr的,那么引导程序是怎么识别FAT32或者ntfs文件系统的呢,引导程序和STAGE1一样只有512字节啊
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 如果windows也是默认把引导记录安装到mbr?

#23

帖子 wangdu2002 » 2009-10-16 15:28

熊哥的分析很清楚。。。不过grub2可能把两个stage1.5和stage2合并了,只看到一个core.img。 :em06
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: 如果windows也是默认把引导记录安装到mbr?

#24

帖子 billbear » 2009-10-17 22:08

axxdz 写了:谢谢billbear,请受俺一拜。orz

我还是没有弄明白,既然windows的引导程序不是通过bios调用直接加载ntldr的,那么引导程序是怎么识别FAT32或者ntfs文件系统的呢,引导程序和STAGE1一样只有512字节啊
我不知道 windows 分区的引导程序是不是只有 512 字节,理论上,它也可以设计成 stage1.5 那样的东西,用几个扇区来存储引导代码。即使只有 512 字节,访问文件系统也很难说是完全做不到的,它不需要有复杂的功能,只需要最简单的,而且只要能访问根目录就行了。事实上这个阶段访问文件系统还是有缺陷的,并且似乎在某种程度上依赖于 BIOS:在另一台机器上格式化或 ghost 恢复的 windows 分区,引导程序未必能在这一台机器上工作,可能出现 ntldr missing 的错误,这时候用强大的 grub4dos 直接 chainloader /ntldr 还是能把系统跑起来的。
头像
nopentium
帖子: 38
注册时间: 2008-11-12 11:16

Re: 如果windows也是默认把引导记录安装到mbr?

#25

帖子 nopentium » 2009-10-27 17:07

grub就可以引导windows :em06
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 如果windows也是默认把引导记录安装到mbr?

#26

帖子 tusooa » 2009-11-20 23:39

axxdz 写了:如果不备份,那么linux怎么引导windows?grub引导windows要先把控制权交给ntloader吧?
是不是windows不仅在mbr安装了ntloader,还在系统所在的分区的前512个字节安装了ntloader?不然grub怎么引导windows呢?
错!错!错!
闻到死在mbr装的代码仅仅是用来调用装在硬盘上的loader
如果copy一份,Nxxx个Kib啊

代码: 全选

] ls -ld //
harry6038
帖子: 213
注册时间: 2009-04-27 21:02

Re: 如果windows也是默认把引导记录安装到mbr?

#27

帖子 harry6038 » 2011-06-28 11:18

学习了,留个标记
回复