zoukankan      html  css  js  c++  java
  • Linux_Grub2、系统启动流程_RHEL7

    目录

    前言

    RHEL7使用GRUB2,引导程序。

    系统启动流程

    控制RHEL7启动过程

    1. 开机
    2. 加载主板BIOS
    3. 检测硬件是否有故障
    4. 找启动介质,boot分区MBR(Master Boot Recorder)512Byte,Bootloader(446B)+分区表(64B)+校验结束位(2B),一个分区的标识数据占用16B。内核保存在/boot,通过GRUB2将内核加载到内存。
    5. 通过修改grub.cfg,来实现对系统启动选项的控制。GRUB2实际上是一个微型的OS,他可以识别到一些常用的文件系统,GRUB2运行时会读取自己的配置文件/boot/grub2/grub.cfg。每个内核条目都会以menuentry开头 ,menuentry包含标题,选项(不建议修改),menuentry后面有一对大括号,其中都是启动项,启动项以TAB开头 ,linux16这行指定内核的位置,根分区的位置,以只读方式挂载根分区 ,字符集,键盘布局,语言,rhgb(以图形化方式显示启动过程),quiet(启动过程出现错误提示) 。根分区都是xfs格式的,xfs需要驱动才能读取文件,/lib/modules/3.10.0-123.el7.x86_64/kernel/fs/xfs驱动的位置,通过initrd16将启动相关的驱动和模块解压到内存,再读取根分区(xfs)的数据。
      注意:RHEL7的grub.cfg不能直接修改,要通过修改/etc/default/grub来间接编辑grub.cfg。

    编辑gurb.cfg

    修改配置文件/etc/default/grub
    修改后用 grub2-mkconfig指令成grub2.cfg
    在grub2-mkconfig生成配置文件时需要加载/etc/grub.d目录,此目录下有下列文件:
    1. 00_header 设置 grub 的默认参数
    2. 30_os_prober 设置其他分区中的系统(硬盘中有多个操作系统时设置)
    3. 40_custom、41_custom 用户自己自定义的配置
    4. 10_linux 系统中存在多个 linux 版本
    5. 20_ppc_terminfo 设置tty控制台
    /boot/grub2/grub.cfg 是上面文件的组合体
    设置指定内核启动
    vim /etc/default/grub

    grub2-set-default saved|number

    RHEL7启动级别

    修改系统运行级别:

    临时修改
    进入系统后修改:systemctl isolate TAB
    未进入系统前修改:按 e,到linux16行尾,加入systemd.unit=xxxx.target
    永久修改systemctl set-default TAB
    TAB类型和其特性:
    1. emergency.target:
    sulogin提示,grub启动完成,同时系统的 root 把/只读挂载
    救援模式(只挂载/而且只读,不加载/etc/fstab)
    文件系统出了故障时使用。
    2. graphical.target:
    支持多用户,图形化和文本登录
    3. multi-user.target:
    支持多用户,文本登录
    4. rescue.target:
    sulogin(单用户模式)提示,基本的系统初始化完成,单用户模式需要口令,要输入密码。和多用户区别在于,不启动如何服务,加载了文件系统,适用于某服务设置故障,进入此模式修补。

    RHEL7破密码步骤

    rd.break破解
    开启电脑systemctl reboot
    在Grub选项上按e键,进入编辑模式
    在vmlinuz 行后加入rd.break console=tty0(单用户模式)
    ctrl+z 保存重启
    mount -o remount,rw /sysroot 挂载系统临时根目录为可写
    chroot /sysroot 改变系统目录为临时挂载目录
    echo fanguiju | passwd --stdin root 修改密码
    touch /.autorelabel
    exit
    exit
    注意:若在VMWare虚拟机上操作不成功,可以尝试将rhgb(图形化启动)quiet先删除。
    rd.break一般用于修改passwd或者出现重大问题,临时中断运行,未加载FileSystem,比但用户模式还要精简。若这样rd.break不能进入,则向kernel传递init=/bin.bash或init=/bin/sh参数,使用init的方法来破解。
    init破解
    开启电脑systemctl reboot
    在Grub选项上按e键,进入编辑模式
    在kernel(linux16/linux/linuxefi)行尾添加init=/bin/sh
    Ctrl+x启动shell
    挂载文件系统为可写模式mount –o remount,rw / 直接挂载根目录

    passwd root修改root密码。
    如过系统启动了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel
    exec /sbin/init启动,或者用指令exec /sbin/reboot重启

    grup2加密,防止破密码

    获取加密密码

    grub2-mkpasswd-pbkdf2  #输入密码

    编辑00_header文件
    vim /etc/grub.d/00_header
    此文件配置初始的显示项目,如默认选项,时间限制等,加入密码验证项目,在最后一行添加:

    cat << EOF
    set superusers="jmilk"
    password jmilk grub.pbkdf2.shaxxxxxxxxxxxxxxx  #加密密码
    EOF

    更新grub配置后并重启

    grub2-mkconfig -o /boot/grub2/grub.cfg
    systemctl reboot

    initramfs文件

    存放kernel 可以rw fs的驱动,当kernel加载到内存后要以ro的方式加载根分区(xfs),但是因为系统驱动存放在根分区中。所以额外将让kernel可以读取根分区的驱动全放入到initranfs中,在kernel还没有读取根分区时,initramfs文件将所有的驱动解压到内存中供kernel使用。

  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/11825223.html
Copyright © 2011-2022 走看看