如果windows也是默认把引导记录安装到mbr?
-
- 帖子: 581
- 注册时间: 2006-10-15 11:33
Re: 如果windows也是默认把引导记录安装到mbr?
谢谢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引导失败。
但是这些推断与现实相违背,在下困惑得很。
谢谢。
还有,现在我知道了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引导失败。
但是这些推断与现实相违背,在下困惑得很。
谢谢。
-
- 帖子: 581
- 注册时间: 2006-10-15 11:33
Re: 如果windows也是默认把引导记录安装到mbr?
我google了一下,以前的bios对大硬盘的支持不好,有1024柱面的限制,现在的bios已经没有这个限制了,我猜想,是由于这个原因,windows可以被安装到8gb以后的位置?
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7353
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: 如果windows也是默认把引导记录安装到mbr?
lz住的精神值得赞赏
billbear的知识也值得赞赏,谢谢,学习了。
billbear的知识也值得赞赏,谢谢,学习了。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
-
- 帖子: 581
- 注册时间: 2006-10-15 11:33
Re: 如果windows也是默认把引导记录安装到mbr?
在下google了一下,LILO不能突破1024柱面而GRUB可以,其原因是GRUB支持硬盘的LBA模式。我猜想WINDOWS的引导程序如果不是通过识别文件系统而是直接通过BIOS调用来NTLDR的,那么应该也是通过支持LBA模式?
-
- 帖子: 3681
- 注册时间: 2008-05-03 23:42
Re: 如果windows也是默认把引导记录安装到mbr?
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。
但是这些推断与现实相违背,在下困惑得很。
谢谢。
1024 柱面限制并非 bios 的问题,而是 bootloader 的问题。比如 DOS/win98 的 MBR 就不能引导起始于 1024 柱面之后的操作系统。抹掉 grub 经常会用的 DOS 命令 fdisk /mbr 正是写入了 DOS/98 的 mbr,因而更推荐 fixmbr 写入的 NT/XP 的 mbr,如果 windows 分区不是首个分区的话。axxdz 写了:我google了一下,以前的bios对大硬盘的支持不好,有1024柱面的限制,现在的bios已经没有这个限制了,我猜想,是由于这个原因,windows可以被安装到8gb以后的位置?
- jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
- 联系:
Re: 如果windows也是默认把引导记录安装到mbr?
就我的理解
由于历史遗留问题。
mbr的空间不够,放不下现在高度发展的引导程序。
所以,现在的mbr就等于是做了各链接。
而win的启动程序和grub之类做的事情,就是改变链接到不同的真实程序。
纯粹个人yy
由于历史遗留问题。
mbr的空间不够,放不下现在高度发展的引导程序。
所以,现在的mbr就等于是做了各链接。
而win的启动程序和grub之类做的事情,就是改变链接到不同的真实程序。
纯粹个人yy
-
- 帖子: 581
- 注册时间: 2006-10-15 11:33
Re: 如果windows也是默认把引导记录安装到mbr?
谢谢billbear,请受俺一拜。orz
我还是没有弄明白,既然windows的引导程序不是通过bios调用直接加载ntldr的,那么引导程序是怎么识别FAT32或者ntfs文件系统的呢,引导程序和STAGE1一样只有512字节啊
我还是没有弄明白,既然windows的引导程序不是通过bios调用直接加载ntldr的,那么引导程序是怎么识别FAT32或者ntfs文件系统的呢,引导程序和STAGE1一样只有512字节啊
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
Re: 如果windows也是默认把引导记录安装到mbr?
熊哥的分析很清楚。。。不过grub2可能把两个stage1.5和stage2合并了,只看到一个core.img。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
海内生明月,天涯共此夕。
--------------------吾本独!
-
- 帖子: 3681
- 注册时间: 2008-05-03 23:42
Re: 如果windows也是默认把引导记录安装到mbr?
我不知道 windows 分区的引导程序是不是只有 512 字节,理论上,它也可以设计成 stage1.5 那样的东西,用几个扇区来存储引导代码。即使只有 512 字节,访问文件系统也很难说是完全做不到的,它不需要有复杂的功能,只需要最简单的,而且只要能访问根目录就行了。事实上这个阶段访问文件系统还是有缺陷的,并且似乎在某种程度上依赖于 BIOS:在另一台机器上格式化或 ghost 恢复的 windows 分区,引导程序未必能在这一台机器上工作,可能出现 ntldr missing 的错误,这时候用强大的 grub4dos 直接 chainloader /ntldr 还是能把系统跑起来的。axxdz 写了:谢谢billbear,请受俺一拜。orz
我还是没有弄明白,既然windows的引导程序不是通过bios调用直接加载ntldr的,那么引导程序是怎么识别FAT32或者ntfs文件系统的呢,引导程序和STAGE1一样只有512字节啊
- nopentium
- 帖子: 38
- 注册时间: 2008-11-12 11:16
Re: 如果windows也是默认把引导记录安装到mbr?
grub就可以引导windows
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: 如果windows也是默认把引导记录安装到mbr?
错!错!错!axxdz 写了:如果不备份,那么linux怎么引导windows?grub引导windows要先把控制权交给ntloader吧?
是不是windows不仅在mbr安装了ntloader,还在系统所在的分区的前512个字节安装了ntloader?不然grub怎么引导windows呢?
闻到死在mbr装的代码仅仅是用来调用装在硬盘上的loader
如果copy一份,Nxxx个Kib啊
代码: 全选
] ls -ld //
-
- 帖子: 213
- 注册时间: 2009-04-27 21:02
Re: 如果windows也是默认把引导记录安装到mbr?
学习了,留个标记