• 详解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 (内核版本相关)

     

         

     

     

  • 相关阅读:
    systemctld 启动理解
    公私钥(证书)理解
    布隆过滤器
    python linux下dbg
    iOS基础尺寸图
    metadataObjectTypes 详解
    pkg_config_path 环境变量设置 教程
    Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private 解决方案
    docker php安装GD扩展
    mysql 隔离级别
  • 原文地址:https://www.cnblogs.com/jiesying/p/7553916.html
Copyright © 2020-2023  润新知