Grub引导Linux + Windows

标题:Grub + Linux + Windows


正文:

安装了一个双系统,分别是Windows 2003 Sever 和 RedFlag 6.0 桌面版。

遇到问题做记录,仅备忘。


1.存在问题:

  把Grub的引导程序写到Linux系统第一个分区的引导区,当系统启动就直接进入进入Windows系统,Grub未曾出现。

  把Grub的引导程序写到磁盘主引导扇区(MBR),系统启动显示grub>提示符。仍然没有Grub菜单。

 

2.MBR受损修复:Win98启动DOS后,使用fdisk /mbr 命令重写主引导记录即可。

 

3.重新把Grub装在Linux第一个分区的引导区中,然后在Windows下,使用DiskGenius工具把Linux的/boot复制出来,查

看/boot/grub/grub.conf和/boot/grub/menu.lst,未发现异常:

     ---------------------

     #boot=/dev/hda8
     default=1
     timeout=5
     gfxmenu (hd0,7)/boot/message
     title RedFlag Linux (2.6.22.6-1)
          root (hd0,7)
          kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/1 vga=788 splash=silent
          initrd /boot/initrd-2.6.22.6-1.img
     title Windows
          rootnoverify (hd0,0)
          chainloader +1
   
     ---------------------

 

4. 继续尝试,用Linux6安装光盘引导自动修复,未果。

 

5.看资料说修复GRUB如下操作:

     1).安装盘引导
     2).boot:linux rescure
     3).sh#grub
     4).grub>root (hdX,Y)
        grub>setup (hd0)
     5).exit退出linux rescure,重启。


   但以linux救援模式进入后,执行sh#grub命令后,却提示:

       Probing Devices to Guess BIOS Drives. This May Take a Long Time.

   经查设备没有问题。

 

6.尝试用ntldr实现双系统的引导

  原理:ntldr文件是由配置文件boot.ini提供工作参数的,位于Windows XP系统分区的根目录下,具有隐藏、系统、只

读属性。把Linux的引导记录作为一个文件备份到C盘的根目录下,并相应地在boot.ini文件里添加一个项目来指向它,

就可以实现双重系统了。

  在Windows环境下备份Linux引导扇区操作:


  1)找出Linux引导扇区的扇区数,再将该扇区保存为一个备份文件。

    使用DiskGenius工具,选择Linux文件分区的引导扇区,查看“起始扇区号”,记录下来,如:108551268。

    用Dskprobe备份引导扇区:工具dskprobe.exe在Windows 2000/XP安装光盘的/SUPPORT/TOOLS目录下的SUPPORT.cab

压缩包中。

    运行Dskprobe.exe后,选择菜单“Drives”→“Pysical Drive”,弹出“Open Pysical Drive”对话框。

    对话框的“Available Physical Drives”列表框中列出了所有的磁盘。

    双击选择的物理硬盘,激活“Close Handle”和“Set Active”两个按钮,然后单击“OK”按钮返回到主界面。

    选择菜单“Sectors”→“Read”,打开“Read Sectors”对话框。

    在“Starting Sector”文本框里输入刚才通过DiskGenius工具记录的“起始扇区号”(如108551268),在

“Number of”文本框里输入1,然后单击“Read”按钮,此时显示Linux的/boot分区的引导扇区的内容。

    选择菜单“File”→“Save as”,指定保存位置和文件名(如:C:/bootsect.dsk)即可。


   2)修改C:/boot.ini文件。

     编辑C:/boot.ini文件,添加C:/bootsect.dsk="RedFlag Linux 6.0"。

   重启系统,发现仍没有Grub启动菜单,系统停留在grup>提示符。

 

7.使用Grub for DOS引导多系统

   无奈之下只好用Grub for DOS了,版本0.4.2。

   1)把Grub for DOS所有文件Copy至C:/boot/grub

   2)把C:/boot/grub/grldr文件Copy至C:/

   3)编辑C:/boot.ini文件,添加C:/grldr="Grub Menu"。

   4)编辑C:/boot/grub/menu.lst文件,设置内容。

     可以参考把Linux系统根分区内的/boot/grub/menu.lst直接移植过来使用。

     也可以在Grub for DOS的menu.lst文件内,通过configfile直接引入Linux系统根分区内的/boot/grub/menu.lst菜

单使用。

     即在Grub for DOS的menu.lst文件内内这样设置:

     ---------------------

     title GNU Grub menu

     configfile (hda0,X)/boot/grub/menu.lst

     ---------------------

     或者编辑menu.lst文件形式如下:

     ---------------------

     #title Grub Menu
     #configfile (hd0,7)/boot/grub/grub.conf

     default=0
     timeout=30

     splashimage (hd0,0)/boot/grub/chinese/bj2008.xpm.gz    #设置图片
     fontfile (hd0,0)/boot/grub/fonts.gz                    #设置字体,显示汉字

     gfxmenu (hd0,7)/boot/message

     title 红旗Linux 6
          root (hd0,7)
          kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/1 vga=788 splash=silent
          initrd /boot/initrd-2.6.22.6-1.img

     title Windows 2003 Server
          rootnoverify (hd0,0)
          chainloader +1

     title 从CDROM启动
          cdrom --init
          map --hook
          chainloader (cd0)
          boot

     title 重启
          reboot

     title 关机
          halt

     title 退出
          rootnoverify (hd0,0)
          makeactive
          chainloader  +1

     ---------------------

   重启系统,Grub启动,引导Windows和RedFlag Linux,一切正常。

 

 

  PS1:忘记root密码的处理方法:

   解决方法一:

  1. 用Linux安装盘启动系统,输入linux rescue以修复模式启动系统;

  2. 系统启动完毕后,会将系统mount到/mnt/sysimage;

  3. 在提示符后敲入命令:

     chroot /mnt/sysimage

  4. 敲入命令:passwd,更改密码

  5. 连续敲入两次exit,重起系统后,即可用新设置密码登录。


  除了用光盘引导rescue模式,还有一种方法是用启动装载器来进入单用户模式:


  解决方法二:

    使用Grub移动系统启动,进入启动画面之后,输入“e”,把光标移动到kernel ...那一行。

    再输入“e”,在kernel 一行的最后加上空格single,回车。

  输入“b”,启动系统,即进入单用户模式,此时候可以用passwd命令修改密码。

 
  PS2:红旗Linux进入X后看不到鼠标的光标。

    现象;偶尔在状态栏会显示光标的图标,或者是一个虚线闪烁的方块,或者不显示,但是左键和右键均能够使用。

    解决办法:多是显卡驱动的问题。自动探测到的是via,可以使用vesa 或 intel试试。

    操作如下:

     #vi /etc/X11/xorg.config

     把:
     Section "Device"
             Identifier  "Videocard0"
             Driver      "via"
 
     改为:
     Section "Device"
             Identifier  "Videocard0"
             Driver      "vesa"

     重启机器后,就可以顺利用startx。

     或者鼠标右击,选择“显示配置”→“显卡驱动”,把via改为vesa,保存后重启。

 

 


                                                                 by JRQ

                                                          2009/02/27夜.京.

 

posted @ 2009-02-28 01:36  程序员的那些  阅读(5024)  评论(0编辑  收藏  举报