this is a extra element for clear the floated element
关于mbr的存取控制
  • 12/31
  • 2008
基础知识 | Linux 3231 次查看
  不少朋友爱装多系统,自然避免不了对mbr和c盘的引导扇区的操作,下面写一下个人的在这方面的心得,与大家共享。

  1,******

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

  进入win98的command.com

  c:\>debug

  -l 100 2 0 1

  -n c:\testtest

  -r cx

  CX 0000

  :200

  -w 100

  Writing 00200 bytes

  -q

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

  恢复的时候可以如下,先进入command.com:

  c:\debug

  -n c:\testtest

  -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后,系统正常启动。呵呵,哪位大侠愿意在自己机子上试试,如果成功了,别忘了通知偶一声。