LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3255|回复: 9

MBR内容损坏会导致硬盘第一扇区不能读写吗?

[复制链接]
发表于 2008-1-30 20:12:42 | 显示全部楼层 |阅读模式
我今天手动修改了硬盘的第一扇区中的主分区表,虽然当时进行了仔细的检查,但我无法保证我的修改一定没有问题。

修改后重新启动时系统就无法启动了,只是说从硬盘启动失败。我把硬盘卸下来,装在移动硬盘盒上,插到一台装有Windows系统的电脑中,发现Windows系统完全不理会这个设备,Acronis Disk Director和Windows的磁盘管理程序根本不能发现这块硬盘(但系统可以识别到这个设备)。我有将其插到装有Linux系统(Debian)的电脑中,dmesg中有关的信息如下(硬盘可以被识别,但报告逻辑块0不能读取):
usb 5-6: new high speed USB device using ehci_hcd and address 3
usb 5-6: configuration #1 chosen from 1 choice
Initializing USB Mass Storage driver...
scsi2 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 2:0:0:0: Direct-Access     SAMSUNG  MP0804H          0811 PQ: 0 ANSI: 0
sd 2:0:0:0: [sda] 156368016 512-byte hardware sectors (80060 MB)
sd 2:0:0:0: [sda] Test WP failed, assume Write Enabled
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] 156368016 512-byte hardware sectors (80060 MB)
sd 2:0:0:0: [sda] Test WP failed, assume Write Enabled
sd 2:0:0:0: [sda] Assuming drive cache: write through
sda:<6>usb 5-6: reset high speed USB device using ehci_hcd and address 3
usb 5-6: USB disconnect, address 3
sd 2:0:0:0: [sda] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sda, sector 0
Buffer I/O error on device sda, logical block 0
更严重的是,在dev下没有sda这个文件。

无奈,我又把硬盘插回原来的电脑,并用移动硬盘启动了一个Ubuntu系统(系统在移动硬盘上),启动时产生了大量的错误(我加了内核参数debug):
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: BMDMA stat 0x25
ata1.00: cmd c8/00:20:00:00:00/00:00:00:00:00/e0 tag 0 dma 16384 in
         res 51/40:20:00:00:00/00:00:00:00:00/e0 Emask 0x9 (media error)
ata1.00: status: { DRDY ERR }
ata1.00: error: {UNC }
ata1.00: configured for UDMA/100

最后系统还是启动起来了,而且/dev/sda出现了。我使用dd读取前面的扇区时
dd if=/dev/sda of=~/a.txt bs=512 count=1
就会出现和上面一样的错误,且读取失败。还有一些错误信息如:
sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
sd 0:0:0:0: [sda] Sense Key: Medium Error [current] [descriptor]
            Descriptor sense data with sense descriptors (in hex):
               72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
               00 00 00 00
sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed
end_request: I/O error, dev sda, sector 0
Buffer I/O error on device sda, logical block 0
Buffer I/O error on device sda, logical block 1
Buffer I/O error on device sda, logical block 2
Buffer I/O error on device sda, logical block 3


dd if=/dev/sda of=~/a.txt bs=512 count=1 skip=8
就会成功,经过实验,前4096字节不能读,后面的好像都没有问题。

由于只经历过一次重新启动,主观上感觉硬件损坏的可能性不是很大,难道修改mbr会导致硬盘无法读取吗?如果可以,有什么办法可以解决吗?谢谢大家了
发表于 2008-1-30 23:38:23 | 显示全部楼层
不可能!数据是好是坏与能不能读写是两回事。但是存在硬盘坏了读出坏数据的事。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-31 09:11:15 | 显示全部楼层
我也是这么想的,但是曾解释一下上面状况出现的原因和解决办法吗?
回复 支持 反对

使用道具 举报

发表于 2008-1-31 09:31:36 | 显示全部楼层
没有这样的经历,关注ing
回复 支持 反对

使用道具 举报

发表于 2008-1-31 14:07:09 | 显示全部楼层
具体不知道,但是mbr损坏是有可能导致不能读的。比如mbr中的最后两个byte,应为55AA,如果不是,会被认为这块硬盘有问题,于是系统根本认不到盘(也就是没有sda)。建议楼主再仔细研究下mbr的内容
回复 支持 反对

使用道具 举报

发表于 2008-1-31 16:50:21 | 显示全部楼层
备份分区表,发送到多个邮箱。
找一张 livecd ,推荐 gentoo livecd 或 lfslivecd 。用 LiveCD 启动机器。
修复引导或分区表。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-31 22:04:34 | 显示全部楼层
我今天用了三星的磁盘检测软件进行检测,结果是逻辑0扇区ECC ERROR,有可能是硬件上确实出了问题。我正在用dd将硬盘所有数据转存至其它硬盘,再把这个硬盘拿去维修。

感谢楼上几位兄弟的回答,但由于MBR所在的位置既不能读,也不能写,所以无论哪个发行版的LiveCD或系统,还都不能对其进行修复。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-31 22:10:11 | 显示全部楼层
Post by saub;1813042
具体不知道,但是mbr损坏是有可能导致不能读的。比如mbr中的最后两个byte,应为55AA,如果不是,会被认为这块硬盘有问题,于是系统根本认不到盘(也就是没有sda)。建议楼主再仔细研究下mbr的内容


55AA是用来判断MBR的内容是否有效的吧,应该不会影响硬盘的读写操作。如果确能导致不可读写,我在想,利用这一点病毒的威力是不是会更大呢。
回复 支持 反对

使用道具 举报

发表于 2008-2-1 09:03:14 | 显示全部楼层
哦,对,我说错了。
刚才试了一下,确实,55AA只会导致分区丢失,不会导致硬盘找不到。
回复 支持 反对

使用道具 举报

发表于 2008-2-2 12:07:27 | 显示全部楼层
SATA硬盘没玩过 不懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表