1. grub是一个多重启动管理器,它可以在多个操作系统中选择引导哪个操作系统。如XP与linux,可以选择引导其中的任何一个系统。当安装好了grub,开机时,会出现grub启动菜单,这时候grub会去读取/boot/menu.lst中的命令进行开机引导。但对于双系统用户有时候会出现问题,如一开机就出现grub,那么这是什么原因以及如何解决呢?

问题1:一开机出现grub

这是由于grub无法读取menu.lst,可能是menu.lst被破坏了。此时,如果想进入系统,可以用以下命令:

(1)进入XP

rootnoverify (hd0,0)//表示找到第一块硬盘的第一个分区,系统应该装在这个分区里面,也可以用root (hd0,0)

chainloader +1 //链式启动器 引导记录在第一个分区的第一个扇区里面 +1表示第一个扇区

boot

这样就会启动起XP系统了。

(2) 进入Linux

要确定Linux系统的boot目录在哪个分区里面,是独立分区还是与根分区是同一分区。

第一步:确定根分区,find /root/install.log 去寻找对应文件所在的分区,在我的系统中会返回  (hd0,9),这表明根目录在第10个分区上,即sda10. (注意: sd表示scsi硬盘,a表示第1块硬盘,b表示第2块.... 10表示第10个分区,sda10相当于(hd0,9),hd0表示第一块硬盘,hd1表示第二块硬盘....,9表示的是第10个分区)

grub> find /root/install.log
(hd0,9)

 

第二步:确定/boot与/目录在同一分区还是不同的分区, cat (hd0,9)/etc/fstab 输出如下:

 

 grub> cat (hd0,9)/etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda12        swap                    swap    defaults        0 0

可以看到,既有/,也有/boot,表示它们在不同的分区,如果没有/boot项,则表示在同一分区。

 

第三步: 确定/boot目录所有的分区,find /grub/stage1 这是由于在不同的分区,如果是同一分区则 find /boot/grub/stage1

grub> find /grub/stage1
(hd0,8)

即目录boot所在的分区是第1块硬盘的第9个分区。

下面就能简单的启动linux系统了。

 

进入/boot: root (hd0,8)

装载基本内核文件: kernel /vm 按一下tab补齐

 kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/

(ro=readonly, root=LABEL=/ 是根目录所在标签)

加载可执行的程序和驱动模块,挂载一个临时的根文件系统: initrd /in 按一下tab补齐

initrd /initrd-2.6.18-53.el5.img

这样就进入了linux系统了。

这种方法虽然能够进入xp与linux系统,但是没有从根本上解决问题。所以,应该修复一下grub.

 

以上boot所在的分区与根分区不在同一分区,如果在同一分区,则使用 kernel /boot/vm 补齐。

同理 initrd /boot/in 补齐。

 

问题2: 一开机直接进入xp,不出现grub.

这是由于grub丢失造成的。

 

对于以上两个问题,都可以通过修复grub来解决。

 

修复过程:-用redhat系统盘修复

 (1)等待安装界面,输入linux rescue进入救援模式

 (2)一直下一步,直到出现#sh

 (3)输入 grub

     grub>

     grub> root (hd0,8)

     grub> setup (hd0)

即把grub写入到mbr中去。

这样,就修复了主引导记录。

或者是进入了 sh#

然后 sh# chroot /mnt/sysimages

最后 sh# grub-install /dev/sda

       sh#exit

即可。

 

 

2. menu.lst的写法

如果menu.lst丢失的话,得重新编写menu.lst

ln -s menu.lst grub.conf  软链接

menu.lst:
 
default=0
timeout=5
splashimage=(hd0,8)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-53.el5)
        root (hd0,8)
        kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-53.el5.img
title Other
        rootnoverify (hd0,0)
        chainloader +1

第一行 default=0默认启动第一个title.

第二行 timeout=5是启动延迟5秒。

第三行是开机启动动画。

下面就是linux与xp的启动命令。

 

 

3. 从硬盘安装linux

通常安装系统都是从光驱安装,当然,也可以从硬盘安装系统。

(1)首先在网上下载iso的linux安装文件,我下的是rhel-server-5.4-i386-dvd,这是一个.iso文件,安装序列号为2515dd4e215225dd,

用ultraISO把isolinux文件夹复制出来。从isolinux开始引导。

(2)从网上下载grub for dos.

(3) copy出grldr文件放到C盘目录下。

(4)修改隐藏文件 boot.ini,加上一行 C:/grldr="start from grub"

(5)重启系统,进入grub.

(6) grub> root (hd0,0) //进入C盘根目录

(7) grub> kernel /isolinux/vmlinuz   //isolinux是linux内核文件

(8) grub> initrd /isolinux/initrd.img

(9) grub>boot

(10)选择hard drive,然后安装已经下载好的镜像文件就可以了。

然后就可以安装linux了。

 

 

 

 

这篇文章主要是总结了grub的常见错误以及解决方法,最后介绍了一下如何从硬盘安装linux.