此处以C5 C6为例,GRUB的主要作用是提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存的特定空间中,解压展开,并把系统控制权移交给内核,一台主机上可能装有不止一个操作系统,用户可以根据GRUB提供的启动菜单选定操作系统,随即加载指定内核

         GRUB分为三个阶段,

stage 1  这段代码的其中一段代码是MBR中的 bootloader(446字节)这一步在GRUB 中是不可或缺的,主要负责当BIOS 交接给GRUB 时,载入存在于各分区中的开机文件,也就是所谓的开机管理程序。其大小大约512字节

stage1_5 这段代码是在紧接着MBR的,辅助GRUB识别stage2所在的文件系统所在的磁盘stage1.5 被加载时,就已经赋予GRUB 访问文件系统目录的能力(这段程序中有访问stage2文件系统的驱动),所以,自然可以在开始找不到stage2 的情况下,从文件系统目录中找出stage2 的所在位置,并激活Linux

其大小约32K

stage 2  boot目录中,不一定在根分区上,即,可以独立分区;

         stage提供一个GRUB启动菜单,供用户选择不同的操作系统选择不同的操作系统

         提供选项,访问配置文件、连接下一个bootsector(主机上可能装的不止一个系统,,可能,可以手动选择启动哪个系统,也可以修改其配置文件以达到不同效果)stage2主要就是根据配置文件,或手动选择、设置启动需要的内核或系统!

在系统读秒的过程中按任意键可进入GRUB选择菜单,如下图,假如你的主机中不止一个操作系统,你可以根据需要选择不同的操作系统;wKiom1YL6oSjAP79AAFNxPfq4dc499.jpg

仔细看菜单下面的选项,键入e键,可在开机前进入编辑模式,如下图,

方框内第一行代表boot目录所在的位置,此处为第一个磁盘第一个分区,

方框内第二行就是你的内核位置及内核,

方框内第三行ramdiskramfs),这是一个虚拟文件系统,可通过这个文件系统可找到根分区位置 以方便内核找到根分区、init程序、以及必要的驱动程序、库文件

在这个界面,如果再次键入e键,可对你选择的选项进行修改!

在这两个界面中你也可以按c进入GRUB的命令

wKioL1YL6qryPSoWAAG_XY-tJ88553.jpg

在以上两个界面中你也可以按c进入GRUB的命令行模式

wKiom1YL6q3Q6xHMAAFI0aCupd8122.jpg

这样手动指定内核及initrd也能启动系统

grub 2主要是为加载内核提供菜单,主要依靠配置文件,它的位置在 /boot/grub/grub.conf

#boot=/dev/sda

 10 default=0           #启动项可以有多种,default=0表示默认第一项,1表示默认第二项

 11 timeout=5      #grub菜单处停留的时间,超时则自动进入默认项

 12splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  #grub2 的背景图片,可以修改

 13 hiddenmenu                                                              #是否隐藏菜单

 14 title CentOS 6 (2.6.32-504.el6.x86_64)                       #内核或title不止一个,此处的内容将出现在选择菜单中

 15         root (hd0,0)                                           #内核的磁盘位置

 16         kernel /vmlinuz-2.6.32-504.el6.x86_64ro root=/dev/mapper/VolGroup-lv_root

     rd_NO_LUKS rd_NO_MDrd_LVM_LV=VolGroup/lv_swap crashkernel=auto.UTF-8                                           #内核的一些参数选项,名字,选项等。

    rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM

 rhgb quiet

 17         initrd/initramfs-2.6.32-504.el6.x86_64.img  #   initrd的名字

看到它的配置文件,便会明白grub2 的主要作用了

安装grub会自动生成此文件

[root@localhost ~]# ls /boot/grub/

device.map    grub.conf        minix_stage1_5     stage2

e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5  ufs2_stage1_5

fat_stage1_5  jfs_stage1_5     splash.xpm.gz      vstafs_stage1_5

ffs_stage1_5   menu.lst          stage1             xfs_stage1_5



功用,


1)提供菜单。并提供交互接口

e  编辑模式,用于编辑菜单

c:命令模式 ,交互式接口

(2)加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏此菜单

3)为菜单提供了保护机制

为标记菜单进行认证

为启用内核或操作系统进行认证

 

         grub破坏后,有三种途径可以修改之!

  1. 如果grub破坏后没有重启,则直接grub-install 如下,如果已经关机了,则可以把坏的系统磁盘分区挂载到好的系统之上,grub-install安装。

[root@localhost~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              16G  4.8G  11G  33% /

tmpfs                 1.9G     0 1.9G   0% /dev/shm

/dev/sda1             291M   48M 228M  18% /boot

/dev/sr0              3.5G  3.5G    0 100% /media/cdrom

[root@localhost~]# dd if=/dev/zero of=/dev/sda1 bs=200 count=1

1+0 records in

1+0 records out

200 bytes (200B) copied, 0.00160427 s, 125 kB/s

[root@localhost~]# man bs

No manual entryfor bs

[root@localhost~]# man dd

[root@localhost~]# grub-install --root-directory=/ /dev/sda1

 

ll /boot/grub –d

drwxr-xr-x. 2root root     1024 9  29 08:35 grub

2、如果只是grub2 坏了,则可以手动配置grub的配置选项,或者在grub命令行重新安装grubgrub命令行的操作类似于在系统中进入grubwKioL1YL6s-Bmu2KAAKNVeXGXfw806.jpg

3、再不济,开机进入到系统救援模式下,安装配置grub

1)首先插入光盘,进入bios,将光盘调整为第一启动,略…,启动后如下。。。

         未提示步骤选择默认!

wKioL1YL6uGgNqNFAAGCx5HEljw725.jpg

此处设置不用联网,选no

wKiom1YL6u2RZvQCAACsrsoOEJ0053.jpg

此处提示,要chroot 切换跟

 wKioL1YL6wqhD0TkAADDlzB_zxQ872.jpg

wKioL1YL6xeiV561AAII8zq-pTI542.jpg

wKiom1YL6yLB4GmyAAB63ORMw28021.jpg

 切换至bash下,进行grub安装,安装后退出重启

wKioL1YL62XQdP_UAAHBAoXdPdU083.jpg

重新修改bios就可以重新启动了!