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

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

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

#1

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

我猜想是这样,因为先安装linux,再把windows安装到别的分区,linux就不能引导了。
如果先安装windows,那么windows把引导记录安装到mbr,然后安装linux,linux也把引导记录安装到mbr。我想如果linux检测到了硬盘里已经安装有windows,那么它应该不会简单地覆盖mbr,而是先把mbr上的内容用dd之类的程序备份起来。
我想知道的是,linux把windows安装到mbr上的引导记录备份到了哪个文件了呢?
谢谢!
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

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

#2

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

mbr根本不需要备份,反正可以随意更换的。分区表倒是有可能需要备份。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

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

#3

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

lin没有备份mbr,只是lin的grub代替原来的mbr去引导win了。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#4

帖子 axxdz » 2009-10-15 16:51

如果不备份,那么linux怎么引导windows?grub引导windows要先把控制权交给ntloader吧?
是不是windows不仅在mbr安装了ntloader,还在系统所在的分区的前512个字节安装了ntloader?不然grub怎么引导windows呢?
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

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

#5

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

是不是windows不仅在mbr安装了ntloader,还在系统所在的分区的前512个字节安装了ntloader?不然grub怎么引导windows呢?
:em34 。。。 :em38 。。。 :em06
楼主先把引导板块的置顶贴全看一遍吧,有问题先放狗。。。 :em02
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

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

#6

帖子 懒蜗牛Gentoo » 2009-10-15 17:09

ntloader不在mbr里,win在mbr里仅仅写了一条跳转语句而已。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#7

帖子 axxdz » 2009-10-15 17:28

谢谢,我正在看置顶帖子。

为什么我说grub在引导windows的时候,会把控制权交给ntloader呢?
如果先后安装了win98、winXP、linux。想要引导win98或者winXP的时候,在grub里选择windows,就会出现ntloader引导界面,有win98和winXP两个选项。我觉得这可以说明问题
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#8

帖子 axxdz » 2009-10-15 18:32

我发现,我见过的所有的专门分析linux的内核代码的书,在开头一定会介绍内核附带的一个很小的引导程序,也不说怎么把这个程序安装到mbr,很奇怪不是lilo也不是grub
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#9

帖子 axxdz » 2009-10-15 18:35

懒蜗牛Gentoo 写了:ntloader不在mbr里,win在mbr里仅仅写了一条跳转语句而已。
ntloader被安装到哪里了呢?
是windows系统所在分区的等一个扇区吗?
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

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

#10

帖子 懒蜗牛Gentoo » 2009-10-15 19:12

axxdz 写了:
懒蜗牛Gentoo 写了:ntloader不在mbr里,win在mbr里仅仅写了一条跳转语句而已。
ntloader被安装到哪里了呢?
是windows系统所在分区的等一个扇区吗?
ntloader就是你系统盘跟目录下那个叫ntldr的文件
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#11

帖子 axxdz » 2009-10-15 20:55

再次发问,这个真的很难理解,以下这段话来自维基百科的grub条目:
GRUB的步骤1包含在MBR中。由于受MBR的大小限制,步骤一所做的几乎只是装载GRUB的下一步骤(存放在硬盘的其它位置)。步骤1既可以直接装载步骤2,也可以装载步骤1.5:GRUB的步骤1.5包含在MBR后面的30KB中。步骤1.5载入步骤2。当步骤2启动后,它将呈现一个界面来让用户选择启动的操作系统。
————————————
在下真的很困惑,grub占用了mbr和后面的30kb,这就是说,grub占用了硬盘的前7个物理扇区?我很吃惊竟然可以这么用。
我想知道的是,如果第一个分区已经安装了windows,在把linux安装到第二个分区的时候,grub也不跟windows打个招呼,就把windows分区的前6个扇区用掉了?这也太那啥了吧,不担心会破坏数据吗
axxdz
帖子: 581
注册时间: 2006-10-15 11:33

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

#12

帖子 axxdz » 2009-10-15 21:04

维基百科的这段话:

一旦选择了启动选项,GRUB把选择的内核载入内存并把控制交给内核。在此步骤中,对于Windows之类不支持多启动标准的操作系统,GRUB也可以通过链式启动把控制传给其它启动器。在这种情况下,其它操作系统的启动程序被GRUB保存了下来;与内核不同,其它操作系统如同直接自MBR启动。类似Windows的启动菜单,也许是另一个启动管理器,它允许在多个不支持多启动的操作系统中做进一步的选择。
————————————
这说明grub确实是保存了其他操作系统的启动程序的啊
头像
ChloeRei
帖子: 1021
注册时间: 2007-11-23 9:49

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

#13

帖子 ChloeRei » 2009-10-15 21:36

axxdz 写了:维基百科的这段话:

一旦选择了启动选项,GRUB把选择的内核载入内存并把控制交给内核。在此步骤中,对于Windows之类不支持多启动标准的操作系统,GRUB也可以通过链式启动把控制传给其它启动器。在这种情况下,其它操作系统的启动程序被GRUB保存了下来;与内核不同,其它操作系统如同直接自MBR启动。类似Windows的启动菜单,也许是另一个启动管理器,它允许在多个不支持多启动的操作系统中做进一步的选择。
————————————
这说明grub确实是保存了其他操作系统的启动程序的啊
看英文原版。也许意思是“保留”
链式嘛,实体不在mbr里,mbr里面只有个指向
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

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

#14

帖子 billbear » 2009-10-16 2:25

1 楼:windows 的 mbr 只做一件事,找到主分区表中标记为“活动”的分区,并跳到那个分区的引导扇区执行。没有备份它的必要。grub 直接用一条语句跳到 windows 分区的引导扇区。

4 楼:mbr 里并没有 ntldr 代码。ntldr 引导代码在每一个 windows 分区的引导扇区,其功能就是找到该分区下名为 ntldr 的文件并执行。所以 grub4dos 甚至可以不执行引导扇区的 ntldr 引导代码,而直接找 ntldr 文件,就是 chainloder /ntldr 的写法。

11 楼:第一个分区通常不是紧接在 mbr 后面的。mbr 是0磁道1扇区,而第一个分区一般从 1 磁道开始,中间通常隔着 63 个备用空白扇区,刚好可以放下 stage 1.5。当然,如果第一分区紧接在 mbr 之后,或 mbr 之后的空白扇区已被使用,将不会安装 stage 1.5。强行指定安装 stage 1.5 会报 Error 34 : No spare sectors on the disk 而不能安装。
没有 stage 1.5 时,stage 1 可以直接指向 stage 2。stage 1.5 的好处是它能够识别文件系统,从 stage 1.5 找 stage2 时,它是找分区上叫 stage2 的 文件。而 stage1 直接找 stage2 则是直接指向 stage2 文件在磁盘上的物理地址,这样如果 stage2 文件被挪动并且原位置被其他数据覆盖,引导就会失败。
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

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

#15

帖子 delectate » 2009-10-16 2:45

billbear 写了:1 楼:windows 的 mbr 只做一件事,找到主分区表中标记为“活动”的分区,并跳到那个分区的引导扇区执行。没有备份它的必要。grub 直接用一条语句跳到 windows 分区的引导扇区。

4 楼:mbr 里并没有 ntldr 代码。ntldr 引导代码在每一个 windows 分区的引导扇区,其功能就是找到该分区下名为 ntldr 的文件并执行。所以 grub4dos 甚至可以不执行引导扇区的 ntldr 引导代码,而直接找 ntldr 文件,就是 chainloder /ntldr 的写法。

11 楼:第一个分区通常不是紧接在 mbr 后面的。mbr 是0磁道1扇区,而第一个分区一般从 1 磁道开始,中间通常隔着 63 个备用空白扇区,刚好可以放下 stage 1.5。当然,如果第一分区紧接在 mbr 之后,或 mbr 之后的空白扇区已被使用,将不会安装 stage 1.5。强行指定安装 stage 1.5 会报 Error 34 : No spare sectors on the disk 而不能安装。
没有 stage 1.5 时,stage 1 可以直接指向 stage 2。stage 1.5 的好处是它能够识别文件系统,从 stage 1.5 找 stage2 时,它是找分区上叫 stage2 的 文件。而 stage1 直接找 stage2 则是直接指向 stage2 文件在磁盘上的物理地址,这样如果 stage2 文件被挪动并且原位置被其他数据覆盖,引导就会失败。
学习了 :em11
回复