回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0
linux清除mbr的方法

内容来源于网络,没有测试:

在dos下可以用fdisk /mbr清一下mbr。在linux下可以用dd命令实现
mbr是512个字节,用0填充这个区域,这样mbr原先的数据就没有了。
dd if=/dev/zero  of=/dev/sda  bs=446 count=1
if 输入文件 /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/sda  bs=512 count=1
这样分区表也没有了。




mbr:
mbr是主引导记录,它记录了整个硬盘的分区信息。格式化不能清除mbr
mbr在物理磁盘的0柱面,0磁道,1扇区,它由三部分组成,主引导程序,硬盘分区表,硬盘有效标志(55AA)。
主引导程序占用:446个字节。
分区表占用:64字节,每个分区表项长16个字节,一共4个,所以最多4个主分区(包括扩展分区)

有效标志:固定为55AA,如果该标志错误,系统不能启动。


知道这些可以备份分区表:
dd if=/dev/sda  of=mbr.bak  bs=512 count=1

恢复分区表:
dd if=mbr.bak of=/dev/sda  bs=512  count=1
posted on 2014-05-19 14:44 回忆之城 阅读(453) 评论(0)  编辑 收藏 引用 所属分类: unix/linux
只有注册用户登录后才能发表评论。