当前位置:Linux教程 - 安装启动 - 安装启动 - 关于mbr的存取控制

安装启动 - 关于mbr的存取控制

关于mbr的存取控制
2004-04-23 15:18 pm
来自:Linux文档
现载:Www.8s8s.coM
地址:无名

不少朋友爱装多系统,自然避免不了对mbr和c盘的引导扇区的操作,下面写一下个人的在这方面的心得,与大家共享。

1,******
在 98和2000共存,重装98的时候,有可能把c盘的引导扇区重写,因为这个扇区里的引导程序可以双引导,那么重写以后,就不能引导2k了。如果我们在重装98前把c盘引导扇区的信息先保存下来,重装完了以后再恢复回去,不就可以又恢复双引导了吗?这个过程用98自带的debug程序就可以完成。

进入win98的command.com
c:>debug
-l 100 2 0 1
-n c: esttest
-r cx
CX 0000
:200
-w 100
Writing 00200 bytes
-q

c: esttest就是C盘的引导扇区。

恢复的时候可以如下,先进入command.com:
c:debug
-n c: esttest
-l 100
-w 100 2 0 1
-q

OK了。

2,******
对于linux系统,对mbr进行操作的命令为dd,例如,要读出硬盘的mbr,命令为
dd if=/dev/hda of=./mbr bs=512 count=1
要写回硬盘的mbr,命令为
dd if=./mbr of=/dev/hda bs=512 count=1

3,*******
有的时候,我们还有同时安装98和linux 的习惯,而这个时候,在mbr里装有linux的引导程序,如果我们重装98,他是要重写mbr的,重装后要恢复回原来能多引导的mbr,有多种办法,比如用linux启动软盘引导,用相关命令重写mbr引导程序,有没有更简单的办法呢,呵呵,当然有了,还是用 debug。
不管你怎么重装系统,win98是你肯定都可以进入的,所以我们不需要别的工具,只用他自带的就最方便了。

下面是先把mbr的内容保存到文件c:mbr.dbg的操作
进入win98的command.com
c:>debug
-a进入小汇编
2631:0100 mov ax,0201ah,读磁道,al,读的扇区数为1
2631:0103 mov bx,1000es:bx=数据缓冲区地址
2631:0106 mov cx,0001ch,cl=磁道号,扇区号
2631:0109 mov dx,0080dh,dl=磁头号,驱动器号,80为硬盘
2631:010c int 13bios的磁盘功能
2631:010e int 3断点指令(用于debug)
2631:010f
-g10f执行
-r bx
BX 1000
:0000
-r cx
CX 0001
:0200
-n c:mbr.dbg命名
-w 1000写到上面命名文件,写入地址为1000,大小为BX:CX字节
Writing 00200 bytes
-q退出

下面是把mbr的内容恢复回去的方法,
进入win98的command.com
c:>debug
-n c:mbr.dbg
-l 1000加载到地址1000
-a
2631:0100 mov ax,03013号功能为写磁道,写1个扇区
2631:0103 mov bx,1000
2631:0106 mov cx,0001
2631:0109 mov dx,0080
2631:010c int 13
2631:010e int 3
2631:010f
-g10f
-q

4,*******
以上的方法虽然简单,但是相信很少有人愿意用,毕竟风险比较大,那就使用norton的diskedit工具,他可以轻松菜单化的完成对mbr的保存和恢复,在pchome有下载,文件大小为48K
还有一个工具是diskman,可以完成对硬盘分区的保存和恢复。

附言:以上方法除方法3外,方法1,2,4我常用,绝对保证安全,方法3我没试过,但是原理上没有问题,我在virtualpc pcdos2000下测试通过,关于读出mbr,用debug方法和diskedit读出的文件内容完全一样。用debug方法写回mbr后,系统正常启动。呵呵,哪位大侠愿意在自己机子上试试,如果成功了,别忘了通知偶一声。