zoukankan      html  css  js  c++  java
  • 开机流程 模块管理 Loader

    主机系统开机流程

     boot loader 主要功能

     

     

     

     

    显示核心模块加载信息

    查询模块信息

     核心模块的加载与移除

     

     boot loader 的两个 stage

     

    grup2配置文件  /boot/grub2/grub.cfg

    grub2识别磁盘

     

     grub2 配置文件  /etc/default/grub 和 /etc/grub.d

     

    [root@localhost grub.d]# cat /boot/grub2/grub.cfg
    #
    # DO NOT EDIT THIS FILE
    #
    # It is automatically generated by grub2-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    #
    
    ### BEGIN /etc/grub.d/00_header ###
    set pager=1
    
    if [ -s $prefix/grubenv ]; then
      load_env
    fi
    if [ "${next_entry}" ] ; then
       set default="${next_entry}"
       set next_entry=
       save_env next_entry
       set boot_once=true
    else
       set default="${saved_entry}"
    fi
    
    if [ x"${feature_menuentry_id}" = xy ]; then
      menuentry_id_option="--id"
    else
      menuentry_id_option=""
    fi
    
    export menuentry_id_option
    
    if [ "${prev_saved_entry}" ]; then
      set saved_entry="${prev_saved_entry}"
      save_env saved_entry
      set prev_saved_entry=
      save_env prev_saved_entry
      set boot_once=true
    fi
    
    function savedefault {
      if [ -z "${boot_once}" ]; then
        saved_entry="${chosen}"
        save_env saved_entry
      fi
    }
    
    function load_video {
      if [ x$feature_all_video_module = xy ]; then
        insmod all_video
      else
        insmod efi_gop
        insmod efi_uga
        insmod ieee1275_fb
        insmod vbe
        insmod vga
        insmod video_bochs
        insmod video_cirrus
      fi
    }
    
    terminal_output console
    if [ x$feature_timeout_style = xy ] ; then
      set timeout_style=menu
      set timeout=5
    # Fallback normal timeout code in case the timeout_style feature is
    # unavailable.
    else
      set timeout=5
    fi
    ### END /etc/grub.d/00_header ###
    
    ### BEGIN /etc/grub.d/00_tuned ###
    set tuned_params=""
    set tuned_initrd=""
    ### END /etc/grub.d/00_tuned ###
    
    ### BEGIN /etc/grub.d/01_users ###
    if [ -f ${prefix}/user.cfg ]; then
      source ${prefix}/user.cfg
      if [ -n "${GRUB2_PASSWORD}" ]; then
        set superusers="root"
        export superusers
        password_pbkdf2 root ${GRUB2_PASSWORD}
      fi
    fi
      # END /etc/grub.d/01_users ###
    ▽
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-957.el7.x86_64-advanced-ccdda529-f59c-4990-9165-b6d1cd522034' {
            load_video
            set gfxpayload=keep
            insmod gzio
            insmod part_msdos
            insmod xfs
            set root='hd0,msdos1'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  ba80a371-e434-431e-9508-df4b2827efad
            else
              search --no-floppy --fs-uuid --set=root ba80a371-e434-431e-9508-df4b2827efad
            fi
            linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8
            initrd16 /initramfs-3.10.0-957.el7.x86_64.img
    }
    menuentry 'CentOS Linux (0-rescue-f7819fbfbe0b4074b5dfebfab540afcb) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-f7819fbfbe0b4074b5dfebfab540afcb-advanced-ccdda529-f59c-4990-9165-b6d1cd522034' {
            load_video
            insmod gzio
            insmod part_msdos
            insmod xfs
            set root='hd0,msdos1'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  ba80a371-e434-431e-9508-df4b2827efad
            else
              search --no-floppy --fs-uuid --set=root ba80a371-e434-431e-9508-df4b2827efad
            fi
            linux16 /vmlinuz-0-rescue-f7819fbfbe0b4074b5dfebfab540afcb root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
            initrd16 /initramfs-0-rescue-f7819fbfbe0b4074b5dfebfab540afcb.img
    }
    
    ### END /etc/grub.d/10_linux ###
    
    ### BEGIN /etc/grub.d/20_linux_xen ###
    ### END /etc/grub.d/20_linux_xen ###
    
    ### BEGIN /etc/grub.d/20_ppc_terminfo ###
    ### END /etc/grub.d/20_ppc_terminfo ###
    
    ### BEGIN /etc/grub.d/30_os-prober ###
    ### END /etc/grub.d/30_os-prober ###
    
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    
    ### BEGIN /etc/grub.d/41_custom ###
    if [ -f  ${config_directory}/custom.cfg ]; then
      source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
      source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    [root@localhost grub.d]# vim /etc/grub.d/40_custom
    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    menuentry 'My graphical Centos' --class centos --class gnu-linux --class gnu --class os --unrestricted --id 'mygraphical' $menuentry_id_option 'gnulinux-3.10.0-957.el7.x86_64-advanced-ccdda529-f59c-4990-9165-b6d1cd522034' {
            load_video
            set gfxpayload=keep
            insmod gzio
            insmod part_msdos
            insmod xfs
            set root='hd0,msdos1'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  ba80a371-e434-431e-9508-df4b2827efad
            else
              search --no-floppy --fs-uuid --set=root ba80a371-e434-431e-9508-df4b2827efad
            fi
            linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8 systemd.unit=graphical.target
            initrd16 /initramfs-3.10.0-957.el7.x86_64.img
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    ~                                                                                                                                                                                                                                           
    "40_custom" 20L, 1185C 已写入                                                                                                                                                                                             
    [root@localhost grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-f7819fbfbe0b4074b5dfebfab540afcb
    Found initrd image: /boot/initramfs-0-rescue-f7819fbfbe0b4074b5dfebfab540afcb.img
    done
    [root@localhost grub.d]# reboot

    选择之后就会直接进入我们的图形界面

     设置默认开机画面为字符

    [root@localhost /]# sudo systemctl set-default multi-user.target
    Removed symlink /etc/systemd/system/default.target.
    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

     以前我们设置的默认开机方式是图形界面,经过上面设置之后,默认设置就变成了命令行模式。

    但是当我们选择第三项,我们自己的设置的时候,他还是会进入图形界面。有点意思。

    透过chainloader 的方式移交lader 控制权

     

    上面主要介绍的做双系统的相关知识(我觉得),还是需要实践,看是看不会的。。。。下面有时间会找台机器做测试。来做双系统试一下

     

  • 相关阅读:
    MySQL日志系统
    MySQL基础架构
    Java操作XML牛逼利器JDOM&DOM4J
    SAX方式解析XML
    DOM方式解析XML
    Jquery Ajax
    Jquery动画效果
    angular6新建项目
    mysql命令行使用
    git常用命令
  • 原文地址:https://www.cnblogs.com/Lonelychampion/p/11435255.html
Copyright © 2011-2022 走看看