由于系统启动过程中bootloader比较重要,所以我们单独在这里做了详细的总结,而我们这里讲的是grub 这个bootloader,grub是如何安装和grub文件又是如何修复的

一、MBR组成和bootloader组成:

   MBR:主引导记录(512byte

      1446bte:Bootloader :程序加载引导器

      264byte:分区表

             16bytes:标识一个分区

      32bytes:Magic Mumber(标记MBR是否有效)

   bootloaderMBR

         LILOLInux LOader不支持大硬盘

               GRUBGRand Unified Bootloader

                     Stage1:MBR (第一阶段主要引导第二阶段)

               Stage1_5:

                     Stage2:/boot/grub/ 主程序加载配置文件

二、如何安装grub stage1:

# grub 进入grub界面提示;一定要注意安装到哪块磁盘

1grub>root(hd0,0)指定内核所在分区

我们首先要看看有几个磁盘。我们先用fdisk –l 查看一下发现有三块磁盘,并且有两个是没有分区的。其中sda被识别成hd0sdb被识别成hd1,sdc被识别成hd2。所以我们在grub命令行中应该使用root hd0,0)【提示:这里的(hd0,0)不是不变的,是由内核所在的分区而定】。这里我这样做只是为了能够更清楚的说明如果多个磁盘我们先要怎么做。


2grub>setup (hd0)指定安装grup   

3vim /etc/grub.conf(事先要用quit退出然后在编辑)编辑完成后重启就行了。

三、安装grub第二种方式【我们这里演示如何使用当前主机操作别的硬盘】

# grub-install --root-directory=/path/to/boot's_parent_dir /PATH/TO/DEVICE

sync :同步

我们在/dev/hda上只需创建一个分区就够了,然后在上面进行grub安装。

1、我们用fdisk /dev/hda进行创建,创建完成后查看。

2、我们用mke2fs -j /dev/hda1进行格式化

3、我们用mkdir /mnt/boot创建目录

4、我们用mount /dev/hda1 /mnt/boot/进行挂载

5、装载grubgrub-install --root-directory=/mnt /dev/hda

6、然后进入/mnt/boot下面,查看grub里的内容。

7、提供配置文件vim /mnt/boot/grub/grub.conf。下来我们要多使用几个sync,主要内容是同步到磁盘上去。

 8、然后我们创建一个虚拟机,把硬盘删除,把上面完成的hd0安装上去,我们启动这个虚拟机。会进入这个界面。这时候grub安装成功。

四、grub 文件损坏了我们如何修复?

     因为我们这里的grub文件没有损坏,所以我们要模拟损坏,我们用mv /boot/grub/grub.conf /root是把/boot/grub.conf文件移动到/root下,这样就可以模拟损坏了。这时候重启,这时候只有grub的第一段,而没有第二段,没有配置文件就找不到第二段了。

    在这种情况下,要想启动系统,只需要知道内核在哪,需要根子哪,就能启动系统了。比如:我们来探测根在哪?但是我们这里的hd0 hd1上都有分区,我们怎么知道哪个是,这里我们用root 来试就不行了。

    这时候我们应该找找哪个上面有内核文件。例如我们找hd0 是不是有内核文件:find (hd00)/+Tab键。我们发现hd0上有内核文件,hd1上面没有内核文件有个grub文件还是我们装上去的。

    我们知道内核在那个上面装了,我们就指定root了,用root hd0,0)下来我们就该指定kernel,然后指定initrd,但是它跟内核的版本保持一致,下来我们用boot,它会尝试启动并且尝试找根,若能找到的话就自动启动起来了,一般情况下它会在当前磁盘上找根文件系统的,而且一般都能找到的。

五、总结:

grub命令下我们是如何启动系统的。

grub>模式下

grub>find

grub>root(hd#,N)

grub>kernel /PATH/TO/KERNEL_FILE

grub>initrd /PATH/TO/INITRD_FILE

grub>boot