详解grub.conf及有关实验

Grub:CentOS 5/6中的bootloader,引导操作系统的程序,根据自己的配置文件去引导内核。

grub legacy的3个阶段:

grub stage 1:存在启动硬盘的0柱面,0磁道,第一个扇区中,即MBR中,MBR的前446个字节为以引导代码,
作用只有一个,就是找到grubstage1.5,然后将其加载的到内存。

grub stage 1.5:识别常见的不同类型的文件系统,从而找到"/boot目录所在分区"对应的文件系统的驱动。

grub stage 2 :grub真正的核心程序,能让用户以菜单方式将操作系统加载、新增参数、修改选项,这些全都是stage2的功用,
前面的grub stage 1和grub stage 1.5所做的事情就是为了运行grub stage 2 ,然后由stage 2借助grub.conf再去引导系统启动。

Grub.conf文件

图示

解释:

1. grub.conf是由anaconda程序生成的,anaconda就是我们安装操作系统时候使用的安装向导。

2. (hd0,0),第一块硬盘的第一个分区(表示/boot), 表示kernel文件和initrd文件所在分区.

3. default:定义默认启动的kernel或是操作系统

timeout:进入kernel的等待时间

4. splashimage:指定我们选择kernel或操作系统菜单后面那张图片。

     特点为:

     1,必须是xpm的格式  

     2,必须用gzip压缩   

     3,最多使用14位的颜色位数  

     4 ,分辨率640*480

5.hiddenmenu:表示隐藏选择kernel或操作系统菜单,只有出现等待界面后按下enter键才会出现。
                            如果没有这  个字段,则每次系统启动都会出现这个选择菜单。

5.5 password:放在title外表示进入kernel或操作系统的编辑模式需要密码,而放在title内表示启动
     对应的kernel或操作系统需要密码,密码可以是明文或是用MD5进行加密过的

6. title diendty :定义菜单项“标题”,可以出现多次。

7.root(hd0,0):指定这个配置列表中的kernel和initrd所在的分区,不是指”根分区”

8.kernel:说明kernel的位置,告诉内核根的位置及挂载

              /vmlinuz 可以写成/boot/vmlinuz或(hd0,0)

9.initrd:指定了initramfs文件的位置,存在挂载根分区的驱动。

 实验

 1.设置 口令

                生成口令 :grub-md5-crypt   输入密码两次 就会生成加密后的字符串例如

        

       写法:

             password  --md5     对应的加密后的字符串

       注意:将password写在 title内和title外的不同,上面有解释。

2.破坏/boot文件并恢复

   步骤:

   1.rm  -rf /boot/

   2.进入救援模式

   3.chroot  /mnt/sysimage

   4.mkinitrd  /boot/initramfs-`uname -r`  `uname -r`

   5.mkdir  /mnt/cdrom;mount  /dev/sr0  /mnt/cdrom

   6.cp /mnt/cdrom/isolinux/vmlinuz  /boot

   7.grub-install   /dev/sda

   8.vim   /boot/grub/grub.conf

       default=0

       timeout=5

       title  CentIOS 6

       kernel   /vmlinuz   root=/dev/sda2

       initrd     /initramfs-2.6.32-696.e16.x86_64.img

       exit;exit  选择 reboot

 3.删除/boot文件及/etc/fstab文件并恢复

   1.rm -rf /boot   /etc/fstab

   2.进入救援模式,无法挂载到/mnt/sysimage

   3.fdisk  -l

      mkdir /mnt/tmp;mount  /dev/sda2  /mnt/tmp

   4.vim  /mnt/tmp/etc/fstab

      /dev/sda1  /boot  ext4  defaults 0 0

      /dev/sda2  /         ext4  defaults 0 0

      /dev/sda3  /app   ext4  defaults 0 0

      /dev/sda5  swap  swap defaults 0 0

    5.exit;exit 重新进入救援模式,根将会挂载到/mnt/sysimage

    6.mkdir  /mnt/cdrom;mount /dev/sr0  /mnt/cdrom

      rpm  -ivh  /mnt/cdrom/Packages/kernel-XXX   --root=/mnt/sysimage  --force

    7.chroot  /mnt/sysimage

       grub-install  /dev/sda

    8.vim  /boot/grub/grub.conf

         default=0

         timeout=5

         title  CentIOS 6

         kernel   /vmlinuz   root=/dev/sda2

          initrd     /initramfs-2.6.32-696.e16.x86_64.img

    9.exit;exit  选择 reboot
4.编译安装内核

    1.从官网下载内核(https://www.kernel.org/)

    2.在linux中解压(tar  -xvf  linux-XXX.tar.xz),在这里小编解压到/app目录

    3.cp  /boot/config-XXX  /app/linux-XXX/.config

    4.yum groupinstall  "development  tools " -y

    5.make  menuconfig

    6. make -j 4

    7.make modules_install

    8.make install

小编在安装过程中遇到的问题

问题1:xshell连接运行make menuconfig 出现失败,如下图

在虚拟机里可以运行

问题2:缺少的rpm包,后面加上-devel 例如:

问题3:make install(需要时间,考验耐心)

 卸载编译安装的内核(步骤)

   1.删除安装目录里内容(/app/linux-xxx)

   2.删除/boot相关内容(内核相关,及grub.cfg里内核版本相关)

   3.删除/lib/modules (内核版本相关)

 

 

 

     

 

 

 

 

posted @ 2017-09-19 21:53  JieYing  阅读(885)  评论(2编辑  收藏  举报