内容来源于网络,没有测试:
在dos下可以用fdisk /mbr清一下mbr。在linux下可以用dd命令实现mbr是512个字节,用0填充这个区域,这样mbr原先的数据就没有了。dd if=/dev/zero of=/dev/sdabs=446 count=1if 输入文件 /dev/zero这是一个伪设备文件,实际上产生连续的null流,即二进制0流。of 输出文件 这里指定一个硬盘bs 块的大小count复制块的次数,表示有多少个块,网上查说是可以这么理解:bs表示一个扇区的大小,count表示有多少个扇区。这表示前446个字节被0填充了,后66个存放分区表,如果也填充了,分区就没有了。这样虽然清空了,但系统的loader也没有了,所以机器也启动不了了。可以用fdisk /mbr(msdos)的命令把m$的bootloader写入mbr的前446个字节内,m$的bootloader是根据分区的activity信息来决这下装入哪个分区的。也可以用linux的grub-install /dev/sda把自身的stage1内容写入mbr的前446个字节内,但实际上grub很大,不可能全部放在446个字节里,其它内容放在/boot/grub下面。
dd if=/dev/zero of=/dev/sdabs=512 count=1这样分区表也没有了。
mbr:mbr是主引导记录,它记录了整个硬盘的分区信息。格式化不能清除mbrmbr在物理磁盘的0柱面,0磁道,1扇区,它由三部分组成,主引导程序,硬盘分区表,硬盘有效标志(55AA)。主引导程序占用:446个字节。分区表占用:64字节,每个分区表项长16个字节,一共4个,所以最多4个主分区(包括扩展分区)
有效标志:固定为55AA,如果该标志错误,系统不能启动。
![linux清空mbr nst nstlinux.mbr](http://img.aihuau.com/images/01111101/01051950t018b505b31a9d4cdfd.gif)
知道这些可以备份分区表:dd if=/dev/sda of=mbr.bakbs=512 count=1
恢复分区表:dd if=mbr.bak of=/dev/sda bs=512count=1