Linux_Grub2、系统启动流程_RHEL7
目录
前言
RHEL7使用GRUB2,引导程序。
系统启动流程
控制RHEL7启动过程
- 开机
- 加载主板BIOS
- 检测硬件是否有故障
- 找启动介质,boot分区MBR(Master Boot Recorder)512Byte,Bootloader(446B)+分区表(64B)+校验结束位(2B),一个分区的标识数据占用16B。内核保存在/boot,通过GRUB2将内核加载到内存。
- 通过修改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使用。
Linux_Grub2、系统启动流程_RHEL7的更多相关文章
- Linux操作系统启动流程梳理
接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下 ...
- CentOS系统启动流程
CentOS系统启动流程 POST --> Boot Sequence(BIOS) --> Boot Loader(MBR) --> kernel(ramdisk) --> r ...
- CentOS系统启动流程你懂否
一.Linux内核的组成 相关概念: Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序. IPC(Inter-Process Communicati ...
- linux基础-附件1 linux系统启动流程
附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...
- Linux系统启动流程及安装命令行版本
Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ...
- 【转载】Linux系统启动流程
原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...
- Linux系统启动流程及grub重建(1)
日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel--& ...
- Linux第八讲随笔 -tar / 系统启动流程
linux 第八讲1.tar 参考 作用:压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的. 语法:tar[必要参数][选择参数][文件] 参数:必要参数有如下: -A 新增压缩文件到 ...
- 【Android 系统开发】 Android 系统启动流程简介
作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...
随机推荐
- js 向数组对象中添加属性和属性值
let resultList = [{"name":"a1"},{"name":"b1"}] resultList.fo ...
- 目标检测数据库 PASCAL 格式的 Ground Truth 的解析函数
最近在做一个目标检测算法,训练时用到了 bootstrap 策略,于是我将PASCAL的 Ground Truth 格式的读取函数从 Matlab 改写为 C++.PASCAL 的标注格式为: # P ...
- mydql 设置充许远程链接
1 本机作为服务器时,其他机器连接不上? 1)看一下防火墙是否打开了. 2)在cmd中设置权限. 第一种:(进入数据库的情况下) 1.d:\mysql\bin\>mysql -h localho ...
- 如何修改Git已提交的日志
情况一:最后一次提交且未push 执行以下命令: git commit --amend git会打开$EDITOR编辑器,它会加载这次提交的日志,这样我们就可以在上面编辑,编辑后保存即完成此次的修改. ...
- 稀疏数组SparseArray
1 实际需求 1.1 需求提出 编写五子棋程序,有存盘退出和续上盘的功能. 实现思路: 存盘退出: 定义一个二维数组,默认值是0,黑子表示1,蓝子表示2,然后将二维数组通过流存储到文件中. 换言之:五 ...
- 2019杭电多校&CCPC网络赛&大一总结
多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...
- ORACLE中的TOP-N查询(TOP-N分析)、分页查询
TOP-N查询(TOP-N分析):就是获取某一数据集合中的前N条记录,实际应用中经常用到. Oracle中不支持SELECT TOP语句(MySQL中也没用此语句),需要借助ROWNUM伪列来实现TO ...
- 【Leetcode】买卖股票-贪心算法
题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...
- 【Leetcode】国王挖金矿
参考该文章 https://www.cnblogs.com/henuliulei/p/10041737.html #include <iostream> #include <cstr ...
- Android使用SDKManager下载SDK速度慢 容易丢包和异常的解决办法
第一步, SDK Manager启动之后,会先解析一些google的xml文件,会在Log里面打印出一些日志信息. 解析完之后,把日志全部拷贝到一个记事本里(这一步是因为日志窗口不支持查找),在里面查 ...