首先,我们来谈一下Linux系统的启动过程。
      第一步:加电自检,检测硬件是否完好  
      第二步:根据BIOS中设置的启动次序依次来启动系统
      第三步:找到bootloader,然后启动系统。先找对应启动设备的MBR分区,一般会是设备的第0柱面第0扇区,这个扇区的前446个字节就是bootloader的空间。
      第三步:启动kernel
      第四步:启动init进程(根据/etc/inittab来启动程序)   
    
    我们注意到第三步中,会找bootloader引导项,而它是什么呢?
    bootloader是系统的引导程序,通过它引导系统的启动,如果没有了它,则我们的系统就不知道从哪找到kernel来启动系统。可见,在系统的启动过程中,bootloader是相当重要的。
 
    Linux中的bootloader有两种类型:
    1,LILO:linux loader 这个很有局限性,对大硬盘的支持不好,过去会使用
    2,GRUB:grand unified bootloader 功能强大的引导加载器,支持多种操作系统,在linux中,GRUB是主流,被广泛应用
 
    GRUB采用两个阶段的引导:
    stage1:通过MBR加载stage2
    stage2:读取/boot/grub中的文件,这个目录中会放有kernel,grub.conf等重要系统启动所必须的文件
    所以,我们知道kernel怎么被grub引导起来了吧!
 
    我们知道我们的操作系统一般从我们的硬盘启动的,但grub怎么安装到我们的硬盘中呢?
    我们在系统上挂载一块新硬盘,为/dev/sdb。
    然后对硬盘进行分区:
    fdisk /dev/sdb
    第一个分区为sdb1,然后在第一个分区创建ext3文件系统:mkfs -t ext3 /dev/sdb1
    然后,我们把grub安装在第一个分区中
   
   
    第一种grub的安装方法:
    1,mkdir /mnt/boot  必须创建一个boot目录
 
    2,mount /dev/sdb1 /mnt/boot  上一步为什么必须创建boot目录呢?因为grub安装的时候默认放在boot这个目录中的,grub是以boot来识别自己的根。
 
    3,grub-install --root-directory=/mnt /dev/sdb   --root-directory是指定grub识别的根,注意这个不是文件系统的根,上面我们已经说过,grub是以boot识别根的,故指定/mnt即可
 
    
    第二种grub的安装方法:
    1,mkdir -pv /mnt/boot/grub 
    
    2,mount /dev/sdb1 /mnt/boot  这两个步骤的意思上面已经说过
 
    3,cp /usr/share/grub/i386-redhat/*  /mnt/boot/grub
 
    4,grub  在命令行输入grub命令,会出现“grub>”提示符
 
    5,root (hd1,0) 指定grub所使用的根,grub就可以使用/代表hd1,0这个分区了,即把该分区设为文件访问的起始点。grub是以hd来识别硬盘的,hd0表示第一块应盘,hd1表示第二块应盘...,而hd1,0表示第二块应盘的第一个分区,hd1,1表示第二块应盘的第二个分区....
 
    6,setup (hd1) 即把grub安装在第二块应盘中,并且在/mnt/boot/grub中会自动生成grub.conf这个配置文件
 
    7,quit  用这个命令退出
 
    终于,我们的grub安装好了,挺简单吧!
    我们把这个硬盘拿到其他的机器上,如果能出现"grub>"提示符,说明我们的grub安装成功。