前两天帮谢姨装Ubuntu到一个分区上做Win7和Ubuntu双系统,当时大脑发热就直接在Win7下把Ubuntu所在的分区格式化了。然后便是各种凶残的的误操作和恢复,折腾了一夜。现在把过程写下来,对于磁盘和数据大家以后千万要谨慎!

系统配置是AMD+ATI平台,320G硬盘。Win7所在分区是hd(0,1)。
___________________________________________________________________________________

修复引导

在Win7下用磁盘管理删除那个分区之后 发生分区表错误的几率很大。(具体原因我也没弄清楚)重新开机后就显示

grub rescue>

这里的Grub是一种用于帮助你引导系统的程序(百度百科)。Grub会根据磁盘分区中的 menu.lst文件找出各个分区中的boot文件,从而启动操作系统。Grub支持linux和Windows多个版本的多操作系统启动引导。显示grub rescue说明引导坏了,目前是修复模式。

Grub出问题多数是以下几种情况:

  • 磁盘中menu.lst文件超过一个。(比如C盘里有一个,D盘里又有一个)
  • 找不到对应分区的boot文件
  • 分区表错误或是分区标号调整,例如某个分区hd(0,0)变为hd(0,1)的时候

我格式化了Ubuntu所在分区,那么必然是找不到Ubuntu文件系统里的boot文件,此时这里的Grub对Win7其实是一种半托管状态。因为Windous7是在Ubuntu之前安装的,所以在安装Ubuntu之前并没有Grub程序,只有原来自带的BCD引导方式(BCD是操作系统中的启动设置数据,系统通过bootmgr程序导入BCD文件完成启动菜单的引导),在这样的基础上安装Ubuntu就会在BCD基础上增加一个Grub。

假设Win7安装在C盘,Ubuntu安装在D盘,那么引导顺序如下:
(1)启动Grub,读取D盘中的boot数据
(2)让用户选择Ubuntu或是Windows7,选择Ubuntu则进入(3),选择Windows7进入(4)
(3)开始引导Ubuntu
(4)开始引导BCD,读取C盘中的BCD数据
(5)开始引导Windows7或BCD数据中的其他项
从上面这个流程可以看出,在先装Windows7后装Ubuntu的情况下Grub并没有直接引导Windows7(除非在Ubuntu下专门设置过)而是引导你进入BCD。既然现在Grub没有作用了那只需要从第四步开始就行。 用磁盘软件重做MBR是个方便快捷的方式,比如Diskman或Diskgen都带有这样的工具,而Diskman和Diskgen这样的磁盘软件一般的Dos工具箱、WinPE系统都会有的。

重做MBR之后重启就可以看到Windows7的启动界面了。可是还存在一个问题,启动的时候会出现两次主板商标画面。其实这个没什么,不影响使用。实在要取消的话,就用软盘或U盘或任何盘引导DOS然后输入命令:

fdisk /mbr

没错,就是格式化MBR,这样就干净了。如果这一步之后会出错那还需要软件来做辅助性的修复。(比较复杂,不建议尝试。)

___________________________________________________________________________________

重建 分区表

首先想到的还是WinPE维护盘 http://baike.baidu.com/view/27468.htm
很多版本的PE都带了分区表医生和引导修复,之前我自己的 电脑(XP的系统)就用这张盘修复了好几次。正常的思路应该就是拿PE里自带的分区表医生来重做分区表,然后看看需不需要修复引导,最后成功启动。但是谢姨的这台电脑在使用PE的时候出了些问题:PE找不到硬盘。所以PE启动后没有空间可以加载附加程序,那么也就无法加载分区表医生(PTDD),之后的操作也是妄想了。

后来我想到可以把PE写到U盘里启动,PE在光盘里是READ-ONLY的状态,在U盘里就有可写的空间,这样加载程序就没有问题了,可是用U盘PE启动后,仍然只能看到U盘和PE这两个盘符,待修复的硬盘和分区根本没有影子。脑袋里闪过一个想法:要在实模式下修复才行吗?(后来证明不是的),实模式的修复工具……那只有PartitionManager和DiskGen了。PM(或PQ)是第一个可以被排除的工具,因为我在很多台电脑上都无法正常使用,那么做一个DOS启动然后加载DiskGen吧。

在这里分享一个U盘dos系统,可以用GHOST写入到U盘或者其它盘里,然后在手动添加dos下的软件。 http://dl.dbank.com/c008ce4va7
还有dos版的diskgen http://dl.dbank.com/c0h18pjcmq

实际上,DiskGen在这里也浪费了太多时间。不知道是不是因为版本问题,diskgen找到的分区表根本是错的分区表,都是些1G、0.5G大小的分区。尝试交互模式也没有效果,遍历了整个320G硬盘之后什么也没得到。现在手里只剩下一个了——Windows7安装盘。非GHOST版Win7的安装盘都有带系统修复功能,声称是不管搞成什么样都能给你修好的那种。虽然没那么神,现在也无路可走,索性试一下。话了将近40分钟的自动修复,竟然成功了,重启之后成功引导并进入系统。唯一的缺陷是——只看到我们的C盘乖乖回来了。

剩下的分区在Windows的磁盘管理里边看得到,但就是无法管理,磁盘分区表医生现在仍然不能用:虽然C盘恢复了PE下看不到,Win7下PTDD无法写分区表。最后在网上搜到了解决办法:DiskGen的Win32版本可以解决这个问题!好的,最后这台可爱的硬盘终于被DiskGen Win32救活。原来DiskGen还是很厉害的,只是版本不够新罢了。
也给个下载地址 http://dl.dbank.com/c0uj346u4w
___________________________________________________________________________________

回头来思考PE

正常情况分区表都恢复了之后,盘符可以看到了,分区也可以正常使用,但是所有东西都恢复之后,启动PE仍然看不到任何分区!这又是什么问题呢?网上搜到的答案是主版的AHCI功能,PE系统没有对应的驱动。AHCI是如今硬盘IDE接口换成SATA接口之后能提高效率的一条总线。 http://baike.baidu.com/view/915161.htm PE如果不支持,在BIOS设置里将AHCI模式调整成IDE模式或IDE/AHCI兼容模式即可。

如果之前 早意识到这一点,调整为IDE模式,也就可以正常启动PE系统,用分区表医生PTDD来做分区表的修复了。所以这个小问题造成的巨大浪费实在是太不应该了……

___________________________________________________________________________________

再说分区表

1.磁盘分区是很脆弱的东西,而恢复分区表更要谨慎。当遇到分区表问题的时候,就不要再往磁盘里放东西了,尽量不要做写操作,不然分区表会很难恢复。然后,你最好回忆一下崩溃前每个磁盘容量分别是多大,分区表交互式修复时会有用。

2.对于工具的使用,个人觉得PTDD比较好用。但如果数据比较重要,更安全的办法当然是先用Windows安装盘修复了C盘然后再用DiskGen Win32。因为PTDD修复了一次之后就定型了,而DiskGen有回溯的功能。

3.理论上来说,也可以把分区表删掉,然后手动做一个。这要求你清楚的知道磁盘的分区和空闲空间,不至于将一个文件分在两个分区。

4.如果你是Windows用户,Linux的分区应该很难找回来的。如果需要,把硬盘卸下来挂载到另一套已装好Linux的主机上来恢复。

5.列出我在这个过程中的两个求助:
http://zhidao.baidu.com/question/288494082.html
http://zhidao.baidu.com/question/288516764.html

分析一次磁盘分区表的误操作和恢复相关推荐

  1. GHOST 误操作的恢复方法

    GHOST 误操作的恢复方法 来自网络,重新整理并排版. 相信不少朋友有过使用GHOST误操作的经历,就象下面这样: 恢复系统的时候不慎选择了 LOCAL-DISK-FROM-IMAGE 直接选择恢复 ...

  2. mysql binlog恢复sql_binlog2sql实现MySQL误操作的恢复

    对于MySQL数据库中的误操作删除数据的恢复问题,可以使用基于MySQL中binlog做到类似于闪回或者生成反向操作的SQL语句来实现,是MySQL中一个非常实用的功能. 原理不难理解,基于MySQL ...

  3. mysql权限的误操作的恢复

    mysql权限的误操作的恢复 原因:由于误操作,我把repl用户授予了所有权限,但删除了数据库中的其他用户及权限,因此repl用户虽然具有操作所有数据库的权限,但没有grant权限,所以若想授予其他用 ...

  4. SQLServer数据库误操作如何恢复

    总目录 文章目录 总目录 前言 一.恢复数据实例 1.创建初始数据 2.保证数据恢复的前提条件 前提1 - 数据库创建时便已设置恢复模式为完整 前提2 - 至少做过一次完整的备份 3.模拟不小心误操作 ...

  5. 磁盘分区表备份、删除和恢复

    磁盘分区表备份.删除和恢复 分区表的备份  MBR分区表存放在硬盘0磁道第0个扇区内,总共512字节,前446字节为bootloader,中间64位为磁盘分区表信息,每个分区信息占16个字节,总共存放 ...

  6. mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据

    传统解法 用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态.然后跳过误操作的SQL,再继续应用binlog.此法费时费力,不值得再推荐. 利用binlog2sql快速闪回 首先, ...

  7. mysql+误操作怎么恢复_Mysql误操作恢复流程

    一.开启binlog. show variables like 'log_bin'; #vim  /etc/my.cnf 在[mysqld]中加入 log-bin                 =  ...

  8. php rm-rf,rm-rf误操作的恢复过程

    很多DBA一定对rm -rf深恶痛绝吧,没准哪天自己一个犯迷糊就把数据库给消灭了,然后,就没有然后了hellip;hellip;那万一hellip 很多DBA一定对rm -rf深恶痛绝吧,没准哪天自己 ...

  9. SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...

最新文章

  1. Linux网络服务:Samba服务与实现
  2. emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs
  3. Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...
  4. c++ 二次开发 良田高拍仪_六枝特良田LYV-850加工中心导轨配套防护罩日常维修
  5. ad域同步其他ldap账号_域渗透——普通用户权限获得DNS记录
  6. 遍历WinForm窗体 根据语言类型设置其控件Text显示
  7. 模拟通信与数字信号区别
  8. Linux工作笔记038---Centos下Linux下解决root用户Operation not permitted
  9. 程序员进化史|P4到P9,从应届生到双11前端PM
  10. Java教学视频下载(全集)
  11. 传奇服务端GOM引擎和GEE引擎区别在哪里?
  12. logout退出登录该用get方法还是post方法?
  13. java——博弈算法实现井字棋游戏
  14. 爬虫3 requests基础2 代理 证书 重定向 响应时间
  15. python——列表简介、操作列表
  16. 折分查找法递归和非递归方式
  17. Sklearn实现非线性回归
  18. 对国内游戏产业的无力吐槽
  19. JVM面试题附带答案
  20. Paper Note - 基于高效数据流标记和跟踪的可精炼跨主机攻击调查

热门文章

  1. 内网IP端口扫描统计+服务识别简单思路
  2. 信息技术课计算机软件的微课,微课在信息技术课程上的有效应用策略研究
  3. 人脸识别API接口概述
  4. 自动化运行JMeter下的所有脚本
  5. 陌陌直播全景监控系统实践
  6. raphaeljs_矢量图形与raphaeljs
  7. LabVIEW编程LabVIEW控制研华PCI-1756例程与相关资料
  8. 教师教学常用计算机软件,浅谈《计算机常用工具软件》的教学心得
  9. KDE、Gnome 和 XFCE,各个 Linux 桌面环境的使用情况如何?
  10. 九齐单片机 NY8B062D 之TIM0的使用