linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘
找回丢失的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分区拯救我的硬盘相关推荐
- Linux下搜索文件
一.Linux下搜索文件的命令 Which 显示Linux某个命令的完整路径.加上type可以检查是内部命令还是外部命令 [root@linuxtest /]# which cat /bin/cat ...
- linux解除硬盘加密,封印解除—在linux下访问群联闪存盘加密分区
原标题:封印解除-在linux下访问群联闪存盘加密分区 作者 Modder 给SSD Fans原创投稿技术或市场文章,拿>=100元稿费. 安不忘危,乐不忘忧,使用闪存盘加密区可以很好的保护数据 ...
- 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]
赞助商链接 本文"linux下抓取Vcd的视频文件[Linux安全]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判 ...
- linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案
linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 参考文章: (1)linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 (2) ...
- linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...
对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...
- linux awk搜索文本最后个字符串,[转载]linux下的文本处理命令sedawkgrep
0){ print line[var] v a r - - } } 此段程序读取一个文件的每一行,并用相反的顺序显示出来.我们使用NR作为数组的下标来存储文件的每一条记录,然后在从最后一条记录开始,将 ...
- linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法
摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...
- linux 下搜索的命令,Linux下搜索命令
linux下用于查找文件的5个命令,有需要的朋友可以参考下.包括find,whereis,locate,which与type. linux下用于查找文件的5个命令,有需要的朋友可以参考下. 包括fin ...
- 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)
在 arm 设备中串口是很常用的一个外设,不仅可以用来打印信息,还可以用于外接设备和其他传感器通信.根据不同的电平,串口分为 TTL 和 RS232,但是在Linux内核中的驱动程序是一样的,在串口上 ...
- linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解
<tar解压缩命令 Linux下的tar压缩解压缩命令详解>由会员分享,可在线阅读,更多相关<tar解压缩命令 Linux下的tar压缩解压缩命令详解(14页珍藏版)>请在人人 ...
最新文章
- JAVA取质数(素数)算法优化
- 1-5-20:球弹跳高度的计算
- android source镜像源_说要替代安卓的Fuchsia OS,国内镜像上线了!
- 123456789怎样运算等于1?答案可能很多,写个你最简单的方法
- ionic 实现仿苹果手机通讯录搜索功能
- c语言设计程序注释说明位于,C语言程序设计试题及答案A
- 命令杀mysql进程
- aip格式转化为pdf,catia的三维图转PDF格式咋弄
- IE11怎么设置默认以IE8的方式解析
- Hysys能量流和物质流分析
- matlab最大值滤波降噪,matlab图像最大值和最小值滤波
- html tr行内样式左对齐,探索CSS单行文字居中,多行文字居左的实现方式
- 用户输入一个字符串,请将字符串中的所有字母全部向后移动移动一位,最后一个字母放到字符串的开头,最后将新的字符串输出。
- 三防平板终端丨三防平板电脑丨三防平板如何应用在工业中?
- pd.DataFrame转换成list
- Python 打印的中英文字体如何对齐?
- OpenCvSharp人脸识别系统(视频中的人脸)
- C# 构造器-实例构造器,类型构造器
- Markdown-img使用指南
- 2022“杭电杯”中国大学生算法设计超级联赛(7)1004 Triangle Game