找回丢失的Linux分区拯救我的硬盘

发布时间:2007-08-07 15:49:55来源:红联作者:lfedorax

原双系统硬盘windowsxp 和redhat9.0。用grub从mbr引导。分区信息如下:

Disk /dev/hda: 4865 cylinders, 255 heads, 63 sectors/track

Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System

/dev/hda1 0+ 1019 1020- 8193118+ b Win95 FAT32

/dev/hda2 1020 4864 3845 30884962+ f Win95 Ext'd (LBA)

/dev/hda3 0 - 0 0 0 Empty

/dev/hda4 0 - 0 0 0 Empty

/dev/hda5 1020+ 2305 1286- 10329763+ 83 Linux

/dev/hda6 2306+ 2816 511- 4104576 83 Linux

/dev/hda7 2817+ 2889 73- 586341 82 Linux swap

/dev/hda8 2890+ 3569 680- 5462068+ 83 Linux

/dev/hda9 3570+ 4864 1295- 10402056 b Win95 FAT32

原windows 是别人装的,有C,D,E3个逻辑盘,hda6分区是以前用PQmagic从D盘下分出来的4G,后来发现linux下程序越装越多,/usr空间已经达到了4.6G, 用df查看/下的使用率已经99%了,于是又把整个D盘格掉分给linux做一个单独的/usr分区。Windowsxp是以前用一张不完整的碟强制安装上去的,一直不稳定,反正也就玩CS和格斗游戏时用一下,VC都没装,平时都不用,也就没怎么搭理。前天因为要搭个DSP的实验环境,安装CCE需要在windows下,不得以准备重装windows。弄了一张刻的xp盘,用ntfs把C 盘重格安装完后。重启,发现grub引导错误。这种情况已经习惯了,不就是重装下grub嘛。习惯动作,拿出上方宝剑--linux安装盘,进入rescue模式,让安装盘自动寻找根分区。居然提示找不到任何linux分区,这就奇怪了,难道分区表出错?进入shell,

#/sfdisk -l /dev/hda

发现原为ext2分区的hda6分区不见了,取而代之的是原hda7的交换分区,后面分区的编号也依次减1。

/dev/hda6 2817+ 2889 73- 586341 82 Linux swap

/dev/hda7 2890+ 3569 680- 5462068+ 83 Linux

/dev/hda8 3570+ 4864 1295- 10402056 b Win95 FAT32

这种情况从没见过,mount一下根分区hda7,发现数据正常。那么就是分区表错误了,还好我以前研究mbr时把每个分区0磁道1扇区的数据进行了记录

dd if=/dev/hdax of=/home/mbr/px bs=512 count=1 x为相应分区号。

不管怎样,先还原引导分区。同样使用dd命令将/hda6 和 /hda7的引导信息还原。重启后用linux安装盘进入rescue模式,找到了根分区然后重装grub,因为/usr做为一个单独的分区没有挂上,所以/sbin/grub命令无效,先mount grub分区。

#mkdir /rescue

#/rescue/sbin/grub

#root (hd0,7)

#setup (hd0)

修改相应的grub.conf文件,和/etc/fstab.重启后,基本恢复正常,但是原来的hda6分区再也看不到了。用带光盘启动的98修复盘运行diskman也没发现错误,只是在2305和2817之间的柱面没有显示在分区表中。也许PQ magic能够发现什么,退出diskman,运行盘上带的PQ magic6.0,马上弹出信息说分区表有错误,问是否需要修复。嗯,能够发现错误,有戏。顺手就按下了确定,由于一时的疏忽,灾难开始了,出现修复完毕的信息之后,屏幕死机。

重启之后,硬盘启动找不到启动信息,用98修复盘启动,在选择从cdrom启动后,光标停在屏幕左上方,不停闪烁,闪啊闪啊,就快闪到天荒地老还没反映。换经典的98安装盘选择从光盘启动还是出现上述情况。这下我急了,从没听过不能从光盘启动的情况,启动光盘能够自动加载一个小型的dos系统啊。抱着莫名其妙的心情试着用linux的安装盘启动,耶,行了,I LOVE LINUX!进入rescue模式,用sfdisk一看,天。出现了160个分区,从hda6开始就是重复的分区,指向分区柱面2305到2890.用fdisk看也有15个分区。没办法,将只能将后面的分区都删掉,现在只剩下一个hda1的fat32分区,一个扩展分区和一个hda5的linux(/usr)分区,根分区都没了。该死的PQ,我的硬盘分区表备份都放在linux根分区里面。

重启后终于能够用98修复盘引导了,运行diskman,试着重建分区表。结果找回了4个分区,

分区 柱面起始 柱面终止 类型

0 0 1019 fat

1 1020 2305 extend

2 2892 3569 linux

3 3570 4864 fat

4 1020 2305 linux

看来diskman为了找回分区,把前面几个分区都作为主分区了。现在不但那4G空间没有找回来还赔了一个交换分区,唉,革命尚未成功,同志还需努力。再仔细看看,发现第3号分区即linux的主分区起始磁头居然是第91个磁道,理论上来说一个分区的起始引导磁道都在0号磁道,数据都在1号磁头,于是继续查看0柱面,0磁道,1扇区即mbr的分区表,从到数第66个字节读起,发现关于第2号分区的分区描述为

00 5b c1 4c 83 fe 7f f4 09 6f c4 02 69 b0 a6 00

其中的5b即10进制的91,表示起始磁道,将它改为01,重启,用linux启动盘进入rescue模式发现还是无法找到linux根分区,mount 2号分区出现错误。难道分区信息还是有误?猛然想起几天前好象用笔计算过mbr的信息,可能留有什么线索。于是翻箱倒柜,还好主没有抛弃我,终于在一张皱巴巴的草稿纸上找到了一点信息。

16386363+30041550=46427913,46427913+10924200=57352113,这几个数据好象是原始分区的部分分区起始扇区.

#sfdisk -l -uS /dev/hda

有问题,16386363是现在4号分区的起始扇区,而2号分区的起始扇区是46460043,和46427913有点差距,计算一下,一个柱面255个磁道,一个磁道63个扇区

(46427913-46460043)/255/63=2,刚好偏移了2个磁道,于是将2号分区的起始扇区改回来,重启。。rescue模式。万岁,终于找到了根linux分区。

分区表果然是个危险的东西,不能乱玩,还是老老实实重建分区表吧,找到以前的分区信息备份,根据备份信息,重建分区表。一切都回来了把修复过程写下先。

经过了这次有惊无险的分区修复过程,得出了几点经验,共享一下

1.备份你的分区表,而且最好备份在软盘,U盘,光盘等非硬盘介质上,万一出现问题还可以据此重建分区表,因为分区表不论是mbr还是虚拟mbr大都在0磁道1扇区,不会影响到你的数据区,所以如果分区表出错,还想找回数据的话,千万不要在数据区覆盖信息或格式化。

2.这次分区还算运气好,刚好用不久笔记录了linux根分区的起始磁头,不然真要欲哭无泪了,这说明了人品好才能运气好。

3.PQ magic是个不稳定的比较危险的工具,慎用。Linux下有类似的工具parted,不过我还没用过,研究中,不过linux下工具以稳定著称,应该比pq好点,个人观点。

4.如果有 linux和window双系统。经常要重装windows的最好把grub装在非mbr区,并将其设置为活动分区。

linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘相关推荐

  1. Linux下搜索文件

    一.Linux下搜索文件的命令 Which 显示Linux某个命令的完整路径.加上type可以检查是内部命令还是外部命令 [root@linuxtest /]# which cat /bin/cat ...

  2. linux解除硬盘加密,封印解除—在linux下访问群联闪存盘加密分区

    原标题:封印解除-在linux下访问群联闪存盘加密分区 作者 Modder 给SSD Fans原创投稿技术或市场文章,拿>=100元稿费. 安不忘危,乐不忘忧,使用闪存盘加密区可以很好的保护数据 ...

  3. 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]

    赞助商链接 本文"linux下抓取Vcd的视频文件[Linux安全]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判 ...

  4. linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案

    linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 参考文章: (1)linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 (2) ...

  5. linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...

    对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...

  6. linux awk搜索文本最后个字符串,[转载]linux下的文本处理命令sedawkgrep

    0){ print line[var] v a r - - } } 此段程序读取一个文件的每一行,并用相反的顺序显示出来.我们使用NR作为数组的下标来存储文件的每一条记录,然后在从最后一条记录开始,将 ...

  7. linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法

    摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...

  8. linux 下搜索的命令,Linux下搜索命令

    linux下用于查找文件的5个命令,有需要的朋友可以参考下.包括find,whereis,locate,which与type. linux下用于查找文件的5个命令,有需要的朋友可以参考下. 包括fin ...

  9. 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)

    在 arm 设备中串口是很常用的一个外设,不仅可以用来打印信息,还可以用于外接设备和其他传感器通信.根据不同的电平,串口分为 TTL 和 RS232,但是在Linux内核中的驱动程序是一样的,在串口上 ...

  10. linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解

    <tar解压缩命令 Linux下的tar压缩解压缩命令详解>由会员分享,可在线阅读,更多相关<tar解压缩命令 Linux下的tar压缩解压缩命令详解(14页珍藏版)>请在人人 ...

最新文章

  1. JAVA取质数(素数)算法优化
  2. 1-5-20:球弹跳高度的计算
  3. android source镜像源_说要替代安卓的Fuchsia OS,国内镜像上线了!
  4. 123456789怎样运算等于1?答案可能很多,写个你最简单的方法
  5. ionic 实现仿苹果手机通讯录搜索功能
  6. c语言设计程序注释说明位于,C语言程序设计试题及答案A
  7. 命令杀mysql进程
  8. aip格式转化为pdf,catia的三维图转PDF格式咋弄
  9. IE11怎么设置默认以IE8的方式解析
  10. Hysys能量流和物质流分析
  11. matlab最大值滤波降噪,matlab图像最大值和最小值滤波
  12. html tr行内样式左对齐,探索CSS单行文字居中,多行文字居左的实现方式
  13. 用户输入一个字符串,请将字符串中的所有字母全部向后移动移动一位,最后一个字母放到字符串的开头,最后将新的字符串输出。
  14. 三防平板终端丨三防平板电脑丨三防平板如何应用在工业中?
  15. pd.DataFrame转换成list
  16. Python 打印的中英文字体如何对齐?
  17. OpenCvSharp人脸识别系统(视频中的人脸)
  18. C# 构造器-实例构造器,类型构造器
  19. Markdown-img使用指南
  20. 2022“杭电杯”中国大学生算法设计超级联赛(7)1004 Triangle Game

热门文章

  1. 使用FastDFS实现图片服务器的功能【案例演示】
  2. java中的正则表达式_java中的正则表达式
  3. Fluent——UDF监测指定点的物理量
  4. java libmp3lame_利用libmp3lame实现在Android上录音MP3文件示例
  5. 持久化存储PV与PVC
  6. vue中引入百度地图
  7. 精力充沛是一种自我管理能力
  8. 高等数学学习笔记——第六十一讲——空间曲线的弧长与曲率
  9. python 批量下载 代码_Python实现的批量下载RFC文档
  10. js复制一个数组(浅复制、深复制)