安装XP和Ubuntu双系统问题——Ubuntu安装时无法识别原有系统

  我主机本来安装了windows xp 和unbuntu15.04,由于在ubuntu下不小心卸载某依赖后,无法登入桌面,网上查了好多资料,原因各种,解决途径也各种,最终是还没有解决问题。各种更新,各种补丁,各种命令都尝试,然后还是水平有限,折腾了2天,不想无奈之下,只能选择重装了。具体的解决登入桌面的过程我这遍就不详细写了,太凌乱,太多了,我已经记不清楚用了多少方法了,都无效,所以有需要的朋友,还是自己上baidu看看吧,这里就不再献丑了。

  本以为重装是一件非常无脑和省事的事,谁知道这次遇到了点小麻烦,于是诞生了这篇小博。

  遇到的问题:

  下载并制作完Ubuntu14.04 USB启动盘后(关于怎么下载和制作Ubuntu USB 安装盘百度很多,请各位自行查找),进入安装界面无后,却无法找到我原先安装好的XP和Ubuntu系统。我之前用fdisk -l命令并没发现什么问题,而且对fdisk参数也不熟,就并没有深入研究,但是网上有人提示可能是磁盘分区表出现了问题,于是我决定进入windows系统用diskgenius软件检测,果然检测结果显示最后个Ubuntu的/home(/dev/sda9)分区超出硬盘边际,那么怎么解决呢,我企图用该软件自带的修复工具修复,但是它会把最后个分区自动格式化成NTFS格式,大家都知道NTFS是xp的格式,而ubuntu需要ext格式,所以此办法不行。

  然后继续搜索ubuntu下修复磁盘的工具,搜到2个比较靠谱的工具,一个是testdisk,另一个就是我之前用的fdisk(因为我之前没对其参数进行研究,后来才发现fdisk是如此强大)。我首先用testdisk,因为名字易懂嘛,感觉也很专业,用起来确实也很专业,各种选项,不过很容易懂,其中有一页显示/dev/sda2, /dev/sda9都是属于extend分区,而sda2的system type是 Win95 Ext'd (LBA), sda9的system type是Linux,说明sda2包含了sda9,这一点也显示出来,最关键一句是说sda9的编辑范围已经超出了sda2得最大范围,由此可以肯定也是硬盘分区出现了问题,可能是硬盘使用太长,空间进一步萎缩引起的。然后它建议我进行重新建立分配硬盘分区表,不巧的是它的修复过程几乎与diskgenius换汤不换药,也是将最后Ubuntu分区直接分为NTFS,于是回退。

  最后开始研究fdisk,正戏来了,当然要详细点,只可惜没图配合:

  1st,sudo fdisk -l,显示硬盘分区表信息,显示有2块硬盘,分别是,sda, sdb,自然我们关心的是我们的本地磁盘sda,而sdb只是USB安装盘

  2nd,sudo fdisk /dev/sda,这个时候,命令行会提示你选择m来显示所有参数信息,照着做,输入m

  3rd, 输入m后,显示一排信息,我们可以使用p命令显示当然这块硬盘的分区表,你不会发现问题。

  4th, 显示分区表后,我尝试用v来进行verify 分区表,结果悲喜交加,悲是因为显示sda9分区不完全在sda2分区之内,喜是因为我们进一步验证了问题的所在。

  5th, 然后再按m,发现有2个添加(n)和删除命令(d),就试图自己手动调整分区表,首先先删除了swap 分区,然后再增加一个小swap分区。(注意删除分区的时候,我是先将/etc/fstab下的相关分区配置行都注释了,增加完后再恢复,这步操作有没有必要,没验证,读者可以自行尝试)。结果并不如愿,再次执行v的时候还是报同样的错误,说明/dev/sda9(/home分区)的地址没有改变,还是越界。

  6th, 再次尝试删除/home分区(反正需要重装,也会被格式化的),然后重新添加/home分区,这次操作后,执行v命令终于没报越界错误,看到曙光啦

  重启,进入usb引导模式,果然,ubuntu安装系统可以识别原有的xp系统和ubuntu15.04系统了。

  本篇完结(唯一遗憾,无图佐证)。