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 ...
随机推荐
- Linux安装FastDFS~Nginx~
确保Linux联网,我这里使用的是CentOS7操作,联网教程 https://www.cnblogs.com/taopanfeng/p/10978752.html 先把指定的四个文件放入指定目录 安 ...
- GDAL支持中文路径和Shp文件中文属性写入
在使用GDAL的过程中,为了支持中文,比需手动进行中文路径的设置,同时特别是在对Shp的属性进行中文输入的时候,都必须进行必要的设定. 为了支持中文路径,在注册了驱动之后,加上第三句就可以了.必须设置 ...
- C++ 临时对象的生存周期
C++ 临时对象的生存周期是一个不小的坑,参考 C++ standard 第十二章第二节,总结其规则如下: 基本原则:临时变量生存到其所在的完整表达式执行完毕之后(若作为函数参数,则以函数所在的完整表 ...
- linux如何配置使用sendEmail发送邮件
sendEmail是一个轻量级.命令行的SMTP邮件客户端.如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择.使用简单并且功能强大.这个被设计用在php.bash.perl和web ...
- Python深入:编码问题总结
转自:http://blog.csdn.net/gqtcgq/article/details/47068817 一:字符编码简介 1:ASCII 最初的计算机的使用 ...
- docker 部署springboot项目【转载】
https://www.cnblogs.com/ityouknow/p/8599093.html
- c语言模块化编程
C语言模块化编程(封装) 模块即是一个.c 文件和一个.h 文件的结合,头文件(.h)中是对于该模块接口的声明.模块化的实现方法和实质:将一个功能模块的代码单独编写成一个.c文件,然后把该模块的接口函 ...
- Groovy assert 断言抛字出来
- java面向对象5--内部类
6内部类 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. 内部类可以是静态static的,也可用public,default,protected和private修饰.(而外部顶级类 ...
- 【NOIP2016提高A组模拟8.14】总结
第一题是几何题,没去想直接弃疗.... 第二题觉得很像背包,但是单挑人的顺序不同,答案也会不同,我比较了每个人先后的优劣性,成功搞定了这道题.但是再输出时不小心搞错了,爆零. 第三题,我答案了整整一个 ...