当硬盘启动时,BIOS通常是指向第一个硬盘的第一个扇区,找到MBR的前446的字节,既是引导加载程序(boot loader),boot loader是一段程序,它使用的软件主要有LILO,GRUB。 

    LILO:LInux LOader  不可以引导1024柱面以后的分区上的内核或系

    GRUB:GRand Unified Bootloader  是目前使用的主流

        主要任务:从磁盘中加载内核文件,以让内核能够顺利驱动整个系统的硬件

grub 的优点 

  认识与支持较多的文件系统,并且可以使用 grub 的主程序直接在文件系统中查找内核文件名; 

  启动的时候,可以自行编辑与修改启动设置选项,类似 bash 的命令模式; 

  可以动态查找配置文件,而不需要在修改配置文件后重新安装 grub 。即我们只要修改完 /boot/grub/menu.lst 里头的设置后,下次启动就生效了!

我们这里只说GRUB ,

一、执行过程

   stage1:执行boot loader的主程序

        必须安装在 在MBR的前446个字节,主要是引导stage 2 

   stage2 :主程序加载配置文件

         加载所有的配置文件与相关的环境参数文件(包括文件系统定义与主要配置    文件 menu.lst)

 

引导加载程序 grub _grub

有上图我们就可以看到grub的主要配置文件就是/boot/grub/menu.lst可以通过三个路径访问 /boot/grub/grub.conf

 /boot/grub/menu.lst 

/etc/grub.conf  后面两个路径都是指向前一个的连接。

二、 配置文件 /boot/grub/menu.lst 

      1、硬盘与分区在grub中的代号

  • 硬盘代号以小括号 ( ) 括起来; 
  • 硬盘以 hd 表示,后面会接一组数字; 
  • 以“查找顺序”做为硬盘的编号。 
  • 第一个搜寻到的硬盘为 0 号,第二个为 1 号,以此类推; 
  • 每颗硬盘的第一个 partition 代号为 0 ,依序类推。 

  所以第一块找到的硬盘代号为(hd0),而这块硬盘的第一个分区为(hd0,0)

 

引导加载程序 grub _grub _02

     2、/boot/grub/menu.lst 配置文件 

 

  1. # vim /boot/grub/menu.lst 
  2. default=0  <==默认开机选项,使用第 1 个开机选单 (title)
  3. timeout=5  <==若 5 秒内未动键盘,使用默认菜单启动
  4. splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  <==背景图示所在的文件
  5. hiddenmenu  <==读秒期间是否显示出完整的选单画面(默认隐藏)
  6. title Red Hat Enterprise Linux Server (2.6.18-308.el5)  第一个菜单的内容
  7.         root (hd0,0)  内核文件所在的分区
  8.         kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 内核
  9.         initrd /initrd-2.6.18-308.el5.img RAM Disk的文件名
  10. title Install Red Hat Enterprise Linux 5 
  11.         root (hd0,0) 
  12.         kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6 
  13.         initrd /initrd-5 
  14.         password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

三、grub的编辑窗口:

  1、启动界面 默认5s

引导加载程序 grub _grub _03

 在5s内按任意键可以进入选择菜单

引导加载程序 grub _grub _04

 这三个 就是title的值,默认启动第二个

 此时按下e键进入编辑title 

引导加载程序 grub _grub _05

用方向键选择第二项  按e键编辑 

引导加载程序 grub _grub _06

四、加密

   如果我们不行别人选择启动菜单,也不想别人编辑title菜单,我们 就可以设置密码 

  1. default=1 
  2. timeout=5 
  3. splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz 
  4. hiddenmenu 
  5. password redhat1 
  6. title Red Hat Enterprise Linux Server (2.6.28.10-zhanghui.com) 
  7.         root (hd0,0) 
  8.         kernel /vmlinuz-2.6.28.10-zhanghui.com ro root=/dev/vol0/root rhgb quiet 
  9.         initrd /initrd-2.6.28.10-zhanghui.com.img 
  10.             password redhat2 
  11. title Red Hat Enterprise Linux Server (2.6.18-308.el5) 
  12.         root (hd0,0) 
  13.         kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 
  14.         initrd /initrd-2.6.18-308.el5.img 
  15. title Install Red Hat Enterprise Linux 5 
  16.         root (hd0,0) 
  17.         kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6 
  18.         initrd /initrd-5  
  19.         password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

如上图所示,密码可以分别加在三个地方 

  密码加在1 位置处,我们不可以编辑每一个菜单。可以看到三个菜单但无法编辑。

下面选项没有“e”但有一个"p"

引导加载程序 grub _grub _07

按“p”输入redhat1    位置1 出的密码

引导加载程序 grub _grub _08

 就可以编辑每一个菜单了 

密码加在2 位置处,没有密码我们就无法启动这个菜单

 

引导加载程序 grub _grub _09

输入 密码2出的密码 redhat2  就可以通过这个菜单启动  

 

密码加在3 位置处,没有密码我们就无法启动这个菜单 

    上面我们的密码都是明码,谁只要可以登录系统都可以看到密码,这样不安全,也起不到限制的作用,我们可以对密码加密,就像密码3处的密码 

使用命令: grub-md5-crypt 

  1. [root@localhost ~]# grub-md5-crypt  
  2. Password:   输入redhat
  3. Retype password:   再次输入redhat
  4. $1$mZD5i0$WZVJcZal2oc/NagUysGap.  加密密码就生成了

  password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

这样别人就不知道密码了 

  但是位置2 和位置3 的密码是可以被删除的 ,因为输入密码1之后就可以编辑下面的title菜单  把设置密码的那一行删除 在用那个菜单启动 就不需要密码了。

五、安装

  1、在grub的命令模式安装 

       

  1.  #grub  
  2. grub> root(hd0,0) 
  3. grub>setup (hd0) 
  4. 只会装stage1:MBR (446)  stage2 可以复制   

2、grub-install 安装grub    

  1.  #grub-install [--root-directory=DIR] INSTALL DEVICE 
  2.  
  3. 选项与参数:  
  4. --root-directory=DIR 那个 DIR 为实际的目录,使用 grub-install 默认会   将grub 所有的档案都复制到 /boot/grub/* ,如果想要复制到其他目录与装置 
  5. 去, 就得要用这个参数。  
  6.  
  7. INSTALL_DEVICE 安装的装置代号啦!  

例如将grub 装在/tmp目录下 /tmp是一块独立的分区 /dev/sdb1    

  1. [root@localhost tmp]# grub-install --root-directory=/tmp /dev/sdb1 
  2. Probing devices to guess BIOS drives. This may take a long time. 
  3. Installation finished. No error reported. 
  4. This is the contents of the device map /tmp/boot/grub/device.map. 
  5. Check if this is correct or not. If any of the lines is incorrect, 
  6. fix it and re-run the script `grub-install'. 
  7.  
  8. (fd0)   /dev/fd0 
  9. (hd0)   /dev/sda 
  10. (hd1)   /dev/sdb 

vim /boot/grub/menu.lst 

手动一步一步的写可以  ,复制也可以 

 

  • 先使用grub-install安装grub的配置文件
  • 开始编辑menu.lst这个重要的配置文件
  • 通过grub来将主程序安装到系统中,(MBR的(hd0)或者是boot sector 的(hd0,0))

 

六、故障修复

     grub 故障分三种 

            1,stage1  2,stage2,3,grub.conf 

     1、 紧急救援模式  :

        用光盘引导 进入紧急救援模式 :linux rescue 就是光盘上的小系统,搜        索当前系统上某分区上的根文件系统,并挂载到 /mnt/sysp_w_picpath chroot /mnt/sysp_w_picpath 跟切换 到真正的跟 

并重装grub

     2、stage2 可以复制

        cp /usr/share/grub/i386 -redaht/stage2 

     3、grub.conf 

       进入紧急救援模式 

          vim /etc/grub/grub.conf 

七、备份

 备份 MBR 

     dd if=/dev/sda of=/root/mbr.bak bs=512 count=1

备份boot loader  

     dd if=/dev/sda of=/root/bootloader.bak bs=446 count=1

   还原 

   1、dd if=/mnt/sysp_w_picpath/root/bootloader.bak of=/dev/sda bs=446 count=1 还原 

 

尽我所能总结了这么些内容,有不足之处还望大家多多指教,共同学习进步。呵呵