Chinaunix首页 | 论坛 | 博客
  • 博客访问: 388873
  • 博文数量: 109
  • 博客积分: 5045
  • 博客等级: 大校
  • 技术积分: 1199
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-08 14:47
文章分类

全部博文(109)

文章存档

2017年(1)

2012年(5)

2011年(10)

2010年(1)

2009年(13)

2008年(29)

2007年(6)

2006年(44)

我的朋友

分类: LINUX

2008-10-28 11:45:34

DELL机器硬盘里的内容差点废掉。在这里发帖子记念一下。

说起来故事真的很长啊,先在这里占个位吧。有时间再完善。

先把分区记录在这里帖一份,算是备份吧。
moveAAS  # fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          10       80293+  83  Linux
/dev/sda2              11        4874    39070080   83  Linux
/dev/sda3            4875        7307    19543072+  83  Linux
/dev/sda4            7308       19457    97594843+   f  W95 Ext'd (LBA)
/dev/sda5            7308        7673     2939832   82  Linux swap / Solaris
/dev/sda6            7674       14047    51199123+  83  Linux
/dev/sda7           14048       17872    30724281   83  Linux
/dev/sda8           17988       19457    11807743+   c  W95 FAT32 (LBA)

这里说一下,sda8是新分出来的。用的是resize2fs和fdisk。用它们可以在保存分区内容的前提下,增加或减少分区大小。说是无损改变linux ext3分区大小。

resize2fs -p /dev/sda7 30000M
参考一下这个:

这里说得比较清楚,不过那里的帖子有点老了,那时resize2fs还不支持ext3分区格式,所双比较麻烦,现在可以把帖子里关于ext3->ext2的部分去掉。
直接从这里开始:
e2fsck -f /dev/sda7
resize2fs -p /dev/sda7 30000M
这里也会有一个像这样输出:

The output is as follows:

resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/sda1 to 1536000 (4k) blocks.
The filesystem on /dev/sda1 is now 1536000 blocks long.

Please take note of the amount of blocks (1536000) and their size (4k). We need that soon.

下面要根据那个数字(1536000来设置新分区的大小。

fdisk /dev/sda
我也使用了这个公式:1536000 * 4k * 1.03 = 6328320k
这样重新分区完成。

我本意是要在/dev/sda8上安装一个windowsXP,可是好像做不到,好像windowsXP必须是安装一主分区上。这是推测出来的,没找到确切地依据。
因为windowsXP需要用NTLDR引导,在winXP的boot.ini里面有这样的内容:

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

这里直接标出了分区的号码,而想要这样找到分区的只有四个主分区可以,扩展分区都是要一个一个像链接那样找下去才能找到。除非有别的方法替换掉XP的引导程序,否则根本无法安装运行。

于是我把/dev/sda1给格式化成fat32格式,想把XP引导所需要的文件放在那里,同时也把linux的引导程序放在那里,事实证明是不可以的,linux引导程序必须放在ext2/ext3分区内,因为引导需要的一些链接在fat分区内无法存在。最后把linux的引导程序grub写入了mbr。可还是不行,这里我还好再想想。
也许可以绕过ntldr引导XP也说不定。

接着往下说,XP不行,又翻了一张win98来试试,结果就是它把我的分区表给弄坏了。以前我曾手动修复过,http://blog.chinaunix.net/u/18715/showart.php?id=421710
不过那里是FAT类的分区,这种分区的格式网络上有很多介绍,什么MBR+DBR+FAT表+...,但是,ext3分区的格式不是这样的。因为找不到分区资料,修复进程陷入停滞。

之后,我在“

Windows软件在Linux上的等价/替代/模仿软件列表”



里面发现了
Data Recovery Tools R-Studio (supports Linux partitions) 1) .
2) myrescue.
3) TestDisk.
4) .
5) .

分别查看了右侧五个软件的介绍,确定TestDisk可以完成自己的工作,于是下载了一个,用livecd光盘引导后,从U盘里面运行之,分简单的用了一个 “分析”Analysis 命令后就显示出了我也所有的分区,再用write保存一下,就全回来了。

不过那时现在的/dev/sda1不存在,sda2-4分别向前提了一号,我用手动地又把它们改回来了。

这里是我的引导区内容:
moveAAS  # dd if=/dev/sda bs=512 count=1 |xxd
1+0 records in
1+0 records out
512 bytes (512 B) copied, 3.1009e-05 s, 16.5 MB/s
0000000: eb48 90d0 bc00 7cfb 5007 501f fcbe 1b7c  .H....|.P.P....|
0000010: bf1b 0650 57b9 e501 f3a4 cbbe be07 b104  ...PW...........
0000020: 382c 7c09 7515 83c6 10e2 f5cd 188b 148b  8,|.u...........
0000030: ee83 c610 4974 1638 2c74 f6be 1007 0302  ....It.8,t......
0000040: ff00 0020 0100 0000 0002 fa90 90f6 c280  ... ............
0000050: 7502 b280 ea59 7c00 0031 c08e d88e d0bc  u....Y|..1......
0000060: 0020 fba0 407c 3cff 7402 88c2 52be 7f7d  . ..@|<.t...R..}
0000070: e834 01f6 c280 7454 b441 bbaa 55cd 135a  .4....tT.A..U..Z
0000080: 5272 4981 fb55 aa75 43a0 417c 84c0 7505  RrI..U.uC.A|..u.
0000090: 83e1 0174 3766 8b4c 10be 057c c644 ff01  ...t7f.L...|.D..
00000a0: 668b 1e44 7cc7 0410 00c7 4402 0100 6689  f..D|.....D...f.
00000b0: 5c08 c744 0600 7066 31c0 8944 0466 8944  \..D..pf1..D.f.D
00000c0: 0cb4 42cd 1372 05bb 0070 eb7d b408 cd13  ..B..r...p.}....
00000d0: 730a f6c2 800f 84ea 00e9 8d00 be05 7cc6  s.............|.
00000e0: 44ff 0066 31c0 88f0 4066 8944 0431 d288  D..f1...@f.D.1..
00000f0: cac1 e202 88e8 88f4 4089 4408 31c0 88d0  ........@.D.1...
0000100: c0e8 0266 8904 66a1 447c 6631 d266 f734  ...f..f.D|f1.f.4
0000110: 8854 0a66 31d2 66f7 7404 8854 0b89 440c  .T.f1.f.t..T..D.
0000120: 3b44 087d 3c8a 540d c0e2 068a 4c0a fec1  ;D.}<.T.....L...
0000130: 08d1 8a6c 0c5a 8a74 0bbb 0070 8ec3 31db  ...l.Z.t...p..1.
0000140: b801 02cd 1372 2a8c c38e 0648 7c60 1eb9  .....r*....H|`..
0000150: 0001 8edb 31f6 31ff fcf3 a51f 61ff 2642  ....1.1.....a.&B
0000160: 7cbe 857d e840 00eb 0ebe 8a7d e838 00eb  |..}.@.....}.8..
0000170: 06be 947d e830 00be 997d e82a 00eb fe47  ...}.0...}.*...G
0000180: 5255 4220 0047 656f 6d00 4861 7264 2044  RUB .Geom.Hard D
0000190: 6973 6b00 5265 6164 0020 4572 726f 7200  isk.Read. Error.
00001a0: bb01 00b4 0ecd 10ac 3c00 75f4 c300 0000  ........<.u.....
00001b0: 0000 0000 0000 0000 0000 0000 0000 8001  ................
00001c0: 0100 83fe 3f09 3f00 0000 4b73 0200 0000  ....?.?...Ks....
00001d0: 010a 83fe ffff 8a73 0200 0053 a804 00fe  .......s...S....
00001e0: ffff 83fe ffff 8ac6 aa04 4168 5402 00fe  ..........AhT...
00001f0: ffff 0ffe ffff 0a2f ff06 b75b a20b 55aa  ......./...[..U.
moveAAS  #
红色和绿色是四个主分区。

介绍一下用于修复分区表的testdisk软件:

moveAAS linux # ./testdisk_static


这一步无所谓,要不要log自己随便,不过这次我只是实验,就没要log。



选择硬盘,这里有两项,另一个是我的U盘。proceed继续前进。



选择分区类型,pc机,于是先intel。通常我们也只用到这一个选项。



然后选择分析Analyse,我只用到了这个选项就搞定了,更高级的没胡用到。



这是现在的硬盘分区状态,想当初可全部是乱七八糟的。选quick search



这里好像涉及到vista了,不过因为没有用过这个系统,这里我选N。



这里是搜索到的结果,一项项检查,上下移动到每一项时,下面会给出分区大小。我的硬盘在这里就全部找回来了。



没有问题就保存。之后一步步退出。
之后,用fdisk -l /dev/sda
就可以立即查看分区表了,不过要重启动之后内核才能认可新的分区表。

阅读(1391) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-07 14:17:51

Data recovery tools by SalvationDATA built to extract data from failed hard drives. New professional data recovery training for flash data recovery and Raid data recovery .