昨天半夜, 同学将自己的硬盘挂到别人的电脑上用.
系统是Windows XP SP2 + Ubuntu 5.10, 换到新机器上后,同学把自己的Windows系统删除了, 后来发现别人的系统用不惯, 又想用回自己的系统, 可是连Windows和Ubuntu都进入不了啦. 没办法, 只有重新安装系统.
先安装Windows. 借来的机器光驱太差了, 读系统碟总是报错, 有文件无法读取. 试了老久, 没办法, 只有硬盘安装了. 进入新机器的硬盘系统, 将系统碟里的I386文件夹拷贝到同学的硬盘里.再用系统碟引导到DOS进行安装.
安装好后, 开始尝试修复Ubuntu的引导. 放入Ubuntu安装碟, 进入rescue模式, 逐个尝试, 进入/系统后, 使用grub-install /dev/hdb, 提示stage1文件读取错误. 多次尝试后, 仍不成功. 这时已经快凌晨一点, 同学说今天再来重装Ubuntu好了. 我不肯, 感觉一定行的, 于是决定继续试试.
接着用Ubuntu安装碟进入安装模式, 到分区一步时, 发现整个40G的硬盘只被识别为一个分区, 奇怪. 进入Windows系统,计算机管理界面,发现FAT表已经乱七八糟了, 40G的硬盘, Windows显示有63.7G!!! 但还是可以看到/分区和SWAP分区仍然存在, 这说明还有希望.
上网搜索到了GRUB4DOS, 解压到Windows根目录里, 修改boot.ini文件后, 重启. 通过Ubuntu安装盘进入rescue模式, 把/boot/grub/menu.lst 文件备份到硬盘. 进入Windows系统后修改C:\boot\grub\menu.lst.
重试N遍, 都提示找不到分区. 突然发现硬盘是IDE1 的从盘, 于是关机, 把电脑原来的硬盘拔了, 设置同学的硬盘的跳线, 把硬盘设置为主盘, 并只挂同学这一个硬盘. 重启, 进入GRUB, 还是无法进入Ubuntu, 但提示找到了了分区,只是是fat格式的. 这真是个好消息, 说明GRUB找到了硬盘, 只是menu.lst设置错了, 所以按e进入编辑模式, 从(hd0,5)开始试, 结果都不成功, 很奇怪. 想了半天,又从(hd0,1)开始试, 结果到(hd0,3)时成功进入了Ubuntu!!! 看来真是FAT表错乱了!!! 进入系统后, 没有系统异常(注意: 系统不是在这台机器上安装的!)!
改了硬盘跳线后, Windows分区已经无法装载了. 打开/etc/fstab, 一个一个分区尝试, 最后总算将所有分区都一一对应并挂载(这时发现启动时SWAP也没挂载好, 还是FAT的问题, 但更改/etc/fstab后修复).
把新机器原来的硬盘跳线设置为Cable Select, 挂上去后, 一切正常(不过没在Ubuntu里挂载, 同学认为没那么必要).
写了这么多, 很乱, 今天回想起来, 也走了很多弯路. 这篇文章也不是告诉大家如何在rescue帮不了忙的时候修复GRUB. 我只是想说, 这么恶劣复杂的情况都修复好了Ubuntu, 所以以后, 不要轻易放弃你的Linux系统, 他比其他系统更经糟蹋.