首页 > 技术宅区 > Win7下破坏Grub分区表的恢复笔记

Win7下破坏Grub分区表的恢复笔记

2010年2月19日

本命年还没开始两天就被许多不愉快的事情弄得焦头烂额,昨天刚拿到等了1个多月的ZoomII,还没来得及捂热,build android时发现自己笔记本Linux分区的空间不够,于是鬼使神差的想到了进Windows下调整硬盘空间。使用Windows Vista/7自带的shrink volume功能,满心欢喜的从某个主盘分出来8G空间之后重启,grub挂掉了:报错error 22。

根据官方文档,Error 22的定义是

22 : No such partition
This error is returned if a partition is requested in the device part of a device- or full file name which isn’t on the selected disk.

由于从grub引导读入的boot分区是我Linux的主分区(ext3),也就是/dev/sda4,在grub载入时出现这种错误就意味着sda4的分区表在Windows下被残忍的强奸了。于是我首先想到的就是通过LiveCD查看受损情况,结果让我大惊失色:原本位于扩展分区sda3下的sda4变成了unallocated area,接着sda4的swap分区也一起揉进去了,但同在一个扩展分区下的Windows分区则没有任何问题,于是我的硬盘就变成了这个样子:

更要命的是,自己论文用软件的代码是在Linux下写的,而恰恰因为过于信任Linux的稳定性没有对这些代码做备份,一想到这本来ZoomII等了快两个月终于到了现在硬盘又坏了,让人怎么能安睡啊。
但是焦虑也不是解决问题的办法,在多方求助加上ubuntuforum的帮助之下,分区表成功恢复,两个系统没有一点数据丢失,总算是有个曲折的good ending吧(死

下面就来总结下方法吧,留作笔记供后人参考:

问题描述:
Windows 7下对磁盘分区操作后导致Grub分区表破坏,主boot分区sda4被破坏,Grub载入不能报错代码22。
问题定性:
使用Ubuntu的LiveCD从U盘启动,通过gpartd工具查看sda磁盘的情况,发现ext3的sda4分区和swap分区被破坏,成为unallocated空间,无法通过一般方法access内部数据,无法挂载也无法通过grub或者fdisk重建被破坏的分区表。
使用工具:
LiveCD(使用unetbootin工具制作的U盘LiveCD),TestDisk和grub。
顺便一说,unetbootin工具是个非常强大的制作各类U盘启动系统的小软件,并且有适合于Win/Mac/Linux的多种版本。
解决方法:
1、LiveCD启动
2、下载并解包TestDisk
3、在terminal下运行TestDisk_static这个executable,根据屏幕提示,先create一个log file用于记录分析和恢复信息,然后选择sda这个需要恢复的硬盘,选择合适的分区表类型(TestDisk会自检并高亮选中某一个类型,大部分硬盘的分区表类型都是Intel),然后尝试Quick Search
4、在我这次恢复中,只是使用了Quick Search,就成功的检测出了原来的sda3分区和swap分区,检测后结果如下:

通过记忆核实检测出来的sda4和swap大小基本无误,但为了保险起见我还是p了一下检测出的Linux分区,发现原来的文件都在,于是确定检测无误。
再按Enter之前,还需要将Boot分区(标识*的分区)改为Linux的分区,更改的方法是使用左右箭头键。
5、Enter之后选择Write Table,如果需要的话还有Deep Search可以使用,但我这种情况下不需使用。于是分区的恢复工作就完成了。此时由于Grub还未恢复,因此还是无法从本地硬盘启动。
6、重启并再次进入LiveCD,此时会发现ext3分区已经出现,mount此分区,记录下分区在/media下的位置,进入最后一步。
7、最后一步是用Grub重装bootloader。这个操作比较简单,在LiveCD的terminal下使用下面代码即可:

grub
grub>find /boot/grub/stage1
grub>root (hd0,2)
grub>setup (hd0)
grub>quit

重启,大功告成,数据完全恢复。
注释:
Super Grub Disk也是一个好用的恢复分区表工具
ext2grub有人提到,但我没尝试
ubuntu-rescue-remix这个LiveCD中有内嵌TestDisk,觉得懒得人可以用这个做成急救恢复盘
自动增量备份很有必要,我参照这两篇文章(http://blog.simophin.cn/?p=498http://blog.chinaunix.net/u3/105147/showart_2080373.html)建立了一个基于ftp的增量备份解决方案。

最后感谢C版群的PT大神和Lain前辈、EP群的大虾、字幕组群的阳阳童鞋、wps童鞋和村汉童鞋,当然最重要的还有一直鼓励着我的ランヤ学妹。m(___)m

admin 技术宅区 , , , , , ,

  1. PT
    2010年2月19日08:39 | #1

    MOMO u酱,话说增量备份还有一条简单的命令(不过不带自动ftp上传):
    rsync -b –backup-dir=`date +%y%m%d-%H%M%S` …

    [回复]

  2. lizky
    2010年2月19日10:29 | #2

    LINUX的工具咱不是很熟,谢谢AKI的笔记,在PE下,个人感觉比较好用的就是diskgenius了,最不可信就是PDTT了。

    [回复]

  3. 2010年5月22日09:51 | #3

    看看小苹果的教程……
    我是绝对不敢用win的任何分区工具整理ext4的,又一次弄了,分区表重叠,华丽的把/home的部分洗了

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Switch to our mobile site