转载:如何在Linux 修复系统的 MBR

1, MBR 总共有 512 个字节,前面446个字节是一个最简单的 boot loader,这个boot loader 的任务很简单,就是将第一个要启动的分区的第一个扇区装入内存。boot loader 之后64个字节是分区表,最后两个字节是 0×55AA.

2, M$ dos 下的 fdisk /mbr 命令就是将 M$ 的boot loader 写入 MBR 的前 446 个字节。M$ 的位于 mbr 的 boot loader 是根据分区的 activity 信息来决定装入哪个分区的。

3, Linux 的 grub-install /dev/hda 也会将自身的 stage1 内容写入 MBR 的前 446 个字节。实际上 grub 是一个很大的 boot loader,不可能全部放在 MBR 的 446 个字节里面,其他内容放在 /boot/grub 下面(debian sarge为例)。grub 比 M$ 的boot loader 智能,支持用户选择所配置的启动分区,然后装入这个分区的启动扇区。

综上所述,如果系统的 MBR 坏了,最简单的办法是用 DOS 启动盘启动系统后执行 fdisk /mbr 命令或者用 Linux 的启动盘启动系统后,chroot 到原来的 Linux 根目录下运行 grub-install /dev/sda 命令。

4, 关于 dd

4.1, dd if=/dev/hda of=/mbr.bak bs=446 count=1

这样可以把可用的 MBR 备份出来。

4.2, dd if=/mbr.bak of=/dev/hda bs=446 count=1

将原来备份的 MBR 恢复到硬盘上。

4.3, dd if=/dev/zero of=/dev/hda bs=446 count=1

将 MBR 上的 boot loader 删除掉,这样之后系统是不能启动的了,因为 BIOS 根据用户配置找到要启动的设备后没有boot loader 的入口了。这个命令看起来没有用,但是当 grub-install 或者 fdisk /mbr 在某些特殊情况下运行失败的情况下,先执行上述清空命令后往往可以解决问题。

-= 手工操作 MBR 有风险,执行 dd 命令需谨慎!=-

附:上述 hda 表示硬盘为 IDE, sda 表示硬盘为SCSI 或者 SATA; grub 不仅可以安装在 MBR,grub-install 命令还支持将 grub 安装到指定分区的头部。

原文来自小熊的blog

You can leave a response, or trackback from your own site.

Leave a Reply


Verify Code   If you cannot see the CheckCode image,please refresh the page again!
Powered by WordPress | Compare Cell Phone Plans at iCellPhonePlans.com | Thanks to Cheap Palm Pixi, Bromoney and Wordpress Themes