硬盘修复记(二)——Linux+Windows磁盘修复,数据恢复
2010-07-14 21:41 Eric.Hu 阅读(5022) 评论(4) 编辑 收藏 举报最近烦心事儿是一件接一件,就连无时无刻不陪伴我的笔记本也跟我闹别扭了,一个外挂QQ把我的硬盘挂掉了。以前试用软件、测试软件时都格外小心,在虚拟机、影子系统下多次尝试之后才会在实体机中安装,这一次却大意了,没有任何测试下装了一个显IP的QQ,结果系统就莫名的访问不到国内的杀毒软件官网了,而杀毒软件和木马放火墙都无法检测出任何状况,由于最近心情比较糟糕,而且由于长时间的软件试用测试,整个系统也比较臃肿了,就想干脆系统还原好了,于是问题就来了……
我电脑装的是Linux+XP双系统(如果想尝试该模式的双系统,需先装windows系统然后再装linux,否则必须通过linux系统修复grub启动项才能正常启动linux),在该种情况下正常情况是电脑先从Linux的grub启动,然后启动到xp或linux,正常情况下如果重装或还原windows系统后是无法启动再启动linux系统了,需要修复linux的grub启动项,或者在还原windows时未修改启动项或分区表(MBR),此时系统就不须修改,一切都如以前一样,最坏的情况就是系统还原以后,硬盘分区表被破坏,系统即无法进入windows也无法进入linux,还有更糟糕的就是系统直接不认硬盘,这是最头痛的,而我就遇到了这种情况,由于我的我的是笔记本电脑,修复硬盘时拆卸挂载特别麻烦。
接上边我说到我还原系统那里,系统还原之后就遇到最糟糕的情况,linux和xp都无法启动,而且PE系统和Ghost工具,乃至Windows原版光盘也无法认到硬盘了,将硬盘拆下也无法读取硬盘(作为移动硬盘连接电脑时,仅设备管理器里能看到有硬盘,但磁盘管理器里却无法识别),但主板能认硬盘,也就是BIOS里能认到硬盘,而且能感觉到硬盘正常寻址,由于硬盘未碰、摔,所以推断磁盘分区表遭到破坏。或许你开始开心了,既然知道原因了那就好办了,修复磁盘分区表不就得了,什么大名鼎鼎的Fdisk,DM等等,很容易就可以修复MBR了,可是你高兴的太早,前面说到PE,Ghost工具都无法识别硬盘,现在的情况是DOS,DM一样一样无法识别,连PC3000(俄罗斯著名磁盘修复工具,可以直接操作磁盘底层,修复能高达80%以上)这种强悍的工具都没用了。急,非常着急,那里可保存了我数年的资料啊,如果送到售后去维修,那数据全完了,如果拿到硬盘修复中心,小弟我没有那么多money(据说数据修复价格是100RMB/10MB,我那可是几百个G啊),况且我这又不是物理损坏,拿去维修肯定被宰。
现在只能想办法软解了,这时突然想到前边提到的,xp+linuxs双系统启动时先从linux的grub开始启动,问题可能出在这里,可能磁盘分区表里没有完全更新或者根本就没有更新替换linux的启动信息,那我就用linux来修复启动项,修复mbr,于是通过linux安装光盘进入系统救援模式,输入grub,然后输入root(hd0,7)(补充0表示第一块磁盘,7表示第七个分区),然后setup(hd0),可是指令直接报错,找不到磁盘 ,唉,总是在希望之后失望,呵呵,不过我别的不行,折腾还是有的,手动修复不行,那就来个重新覆盖安装修复试试,不试不知道,原来不仅启动项被破坏,整个磁盘linux分区都混乱了(后来检测发现了大量磁盘错误,光盘检测的时候会自动修复的),整整两个小时(多数时间是假死,真是在挑战我的耐心),终于完成了,linux能启动了,但无法启动到X-windows,只能是命令行状态下(类似DOS),这时我又开始尝试PE系统启动,启动失败,然后又尝试windows系统安装,无法检测硬盘,失败,开来只能在linux下恢复数据了,首先检查一下windows分区还是否正常,太兴奋了,居然windows分区还未破坏。下边可能会涉及到很多linux的指令:
首先在linux命令行状态下进入超级用户管理员(root)状态:输入su,然后输入root密码进入root状态;
查看系统分区:fdisk -l,罗列当前磁盘所有有效分区,可以查看到类似:
/dev/sda1 * 1 ****(该处表示End数据) ****+(该处表示Blocks数据) 83 HPFS/NTFS //表示该磁盘的主分区(*1),此处为windows的NTFS分区,也就是windows的C盘
/dev/sda2 **** **** **** 5 Extended 此处即扩展分区
/dev/sda5 **** **** **** 83 HPFS/NTFS 此时在我电脑表示NTFS格式的D盘
/dev/sda6 **** **** ****+ 83 linux 表示linux的第一个分区
/dev/sda7 **** **** **** 83 HPFS/NTFS 此时在我电脑表示NTFS格式的E盘
/dev/sda8 **** **** **** 83 HPFS/NTFS 此时在我电脑表示NTFS格式的F盘
……
为了后边拷贝数据到移动硬盘,我们需要在通过usb连接移动硬盘,这里一并列出移动硬盘的分区信息
/dev/sdb1 **** **** **** 83 HPFS/NTFS 移动硬盘第一个分区
/dev/sdb2 **** **** **** 83 HPFS/NTFS 移动硬盘第二个分区
知道了分区信息就好办了,在linux下挂载这些分区,然后就可以开始恢复拷贝数据了
现在开始挂载硬盘:
首先要在linux下建立要挂在的目录(linux下使用移动磁盘或U盘不同于windows系统下,是需要建立目录,然后挂载磁盘的,一般外置设备目录在/mnt下)
建立即将要挂载的目录:
mkdir /mnt/d (注意大小写,根目录下可以改为mnt/d)
mkdir /mnt/e
mkdir /mnt/f
mkdir /mnt/hdd1 /mnt/hdd2 //创建移动硬盘要挂载的目录
现在开始挂载分区:(以下在根目录下/mnt/d均需要替换为mnt/d)
mount -t ntfs(如果是fat格式需要改为 vfat)/dev/sda5 /mnt/d //挂载windows分区的D盘到d目录下
mount -t ntfs /dev/sda7 /mnt/e
mount -t ntfs /dev/sda8 /mnt/f
mount -t ntfs /dev/sdb1 /mnt/hdd1 //挂载移动硬盘第一个分区
mount -t ntfs /dev/sdb2 /mnt/hdd2
(记住拔掉外置硬盘时需要下卸载硬盘 umount /mnt/d……)
然后cd /mnt/d,发现原来windows下D盘资料都还在,呵呵,终于成功了一步,现在开始拷贝资料到移动硬盘了
可以整个磁盘的拷贝:
cp -r /mnt/d /mnt/hdd1/C_backup (说明linux复制命令不同于DOS,是cp而不是copy,-r参数是复制整个目录)
……
补充:linux下修复磁盘可以使用fsck命令:fsck -a /dev/sda1
linux的启动项文件保存在 /boot/grub/menu.lst文件里,可以用vi /boot/grub/menu.lst打开文件并修改
linux下创建目录用mkdir,删除目录用rd
由普通用户进入root用户模式,在终端输入su,如果有多个其他用户,此时需要输入root,然后是密码
挂载磁盘都需要在root用户,或者管理员用户的模式下操作
呵呵,唠叨了一大通,不明不白的,我这里只是讲一讲我的解决过程,之前在网上看到很多类似,主板能认到磁盘,就是系统认不到,却没有多少有用的信息,或许我这个例子更少见,只希望如果有遇到此类问题时,可以有一个大致的解决方法,不至于一头雾水,干着急,那种滋味真得很难受,折腾了我好几天
(其实我在挂载硬盘拷贝数据时,挂载windows的E盘时总是报错,因此无法拷贝资料,导致数据丢失了很多,很是郁闷,不过总算找回了大部分资料,在于E盘的资料本人正在考虑修复中,呵呵……)