解决重装windows xp后无法进入linux的问题

时间:2022-06-04 07:05:46

  帮人整理一台IBM X60笔记本上的windows系统,不曾想变成了配置GRUB的问题。试了许多办法后终于解决,把整个解决过程记录了一下,以备将来之用。
  这台机器装了双系统,里面有个Linux。重装上海*版本的Windows后,一切正常,但没想到主盘的MBR被覆盖,无法进入Linux了。
  好几年没有弄linux了,只知道linux的引导程序叫LILO,从google上搜了一通未果,又问了个朋友,原来现在主流的引导程序都是GRUB。
  再搜GRUB的解决方案,得到的标准答案是用REDHAT的第一张安装盘启动后进行修复。
  快速从网上下载REDHAT 企业版4.0的第一张盘,约100多兆,刻盘。
  启动机器后,进行linux rescue模式,系统不停提示救援文件的位置,无法到达linux的命令行状态,可能是机器中的linux版本不一致吧。
  再上网,找到还有GRUB4DOS 0.4.2和WINGRUB,是sf.net的开源软件,下载后把GRUB4DOS解压到c:\boot\grub目录下,不会用。为了方便,又安装wingrub,在tools菜单中找到写MBR的项,也不会用,就先用默认配置吧,写入MBR,重启。
  无法启动,连windows都无法进入,找来番茄花园的安装盘,右侧顶端有一项修复MBR的小工具,进入Windows XP。
  在wingrub中,将MBR内容移除。这样引导权又交给windows,查找c:\boot.ini文件来引导。按照grub4dos的说明,在Boot.ini文件中加上1行。重启。

  c:\grldr="start GRUB"

  Windows重新OK,但选择linux后,弹出一个GRUB默认的长菜单,每一项都无法进入。

find and load NTLDR of Windows NT/2K/XP
find and load CMLDR of Windows NT/2K/XP
find and load IO.SYS of Windows 9x/Me
find and boot Mandriva with menu.lst already installed
find and boot Linux with menu.lst already installed
commandline
floppy (fd0)
back to dos
reboot
memdrive duplicated from floppy image file (hd0,0)/sbm.bin
memdrive based on win98 partition (hd0,6)


  按c进入命令行状态,出现grub>提示符。
  开始利用google搜索出的解决办法启动linux,首先找到linux安装在哪个分区上。最后,确认为(hd0,2), 在grub提示符键入的第一命令是:

root (hd0, 2)

  再输入kernel的命令,在根目录下找到vmlinuz-2.4.18-3文件,grub命令行中支持TAB键非常方便,可以帮你查找指定目录中的文件名,但kernel后面的root参数把我难住了,一般的root=/dev/hda1到root=/dev/hda6,试了一遍,都不行,启动到一半就提示找不到什么init文件。
  突然,想起来以前的linux的grub是正常的,找到grub.conf后,原来kernel这一行是这样的:

Kernel /bzImage34 ro root=/dev/sda6 hda=none hdc=ide-scsi

  看来这个本本是SATA硬盘,一直用IDE盘,而且内核34与2.4.18的写法也不一样,在2.4.18中为/dev/hda6,是否在34内核中将STAT盘模拟为SCSI盘?
  好了,可以进入久违的LINUX了。
  尝试grub-install来修复MBR,但在填后面这个设备参数时还是不行,从/dev/hda到/dev/sda都试了,还是不能将GRUB重写到MBR中。
  无奈,进入windows,将root、kernel、boot等三行,追加到c:\boot\grub\menu.lst文件中,双系统启动恢复了。

小结:
  首先的控制权windows,引导配置文件是:c:\boot.ini
  选start grub后,交给grldr,由grub查找c:\boot\grub\menu.lst文件来启动。
  这种方式的安装虽然解决了问题,但不同于通常的办法。一般先由linux的grub获得控制权,然后根据菜单选择,直接进入windows和linux,我这种办法麻烦了一些,但也解决了问题,懒得再深究了。
  看来问题很小,但修复起来还真需要些技巧,主要原因是每个机器上分区的配置不一样,启动参数都需要调整是最大的麻烦。
  另外,还遇到一个小问题,此IBM隐藏了1个分区,linux用了2个分区,由于主分区不能超过4个,所以windows只能用一个C盘了,无法用D盘了。看来哪天还要用PQ将IBM的隐藏分区删除掉!但是否能linux造成影响?