RHEL6基础之十五RHEL系统启动流程及GRUB文件说明

简介:

RHEL系统启动流程

154102717.png

POST(加电自检):检测硬件
在CPU的控制下,将RAM芯片中的某个程序映射到ROM地址空间,并执行其中的指令完成系统硬件健康状况检查,例如存储设备、网卡、CPU、声卡等硬件设备是否完好。当检查完成后,所有硬件或基本硬件、核心硬件没有问题,则下一个启动流程BIOS

BIOS(Boot Sequence):决定启动介质
按照BIOS所设定的系统启动流程,根据引导次序(Boot Sequence)自上而下的寻找对应存储设备上操作系统的MBR(全称为Master Boot Record即硬盘的主引导记录),如果MBR存在,则会读取MBR中的bootloader

MBR(bootloader):寻找 grub,读取配置文件/etc/grub.conf,决定默认启动项
根据MBR所指引的活动分区上寻找系统分区中的 bootloader,bootloader称为是一段程序,占据446字节。在bootloader当中配置了所要引导操作系统的内核所在的位置,因此BIOS被载入内存以后,当它实现将控制权限转交给bootloader以后,bootloader接收整个系统的控制权限,而后根据用户的选择去读取相应操作系统中的内核,并将内核装载入内存的某个空间位置,解压缩,这时kernel就可以在内存中活动,并根据kernel本身功能在内存当中探索硬件并加载硬件驱动程序并完成内核初始化,bootloader会将控制权限转交给内核。

Kernel(初始化):内核会主动调用init进程,读取配置文件 /etc/inittab,决定启动级别,运行初始化脚本/etc/rc.d/rc.sysinit

探测硬件->加载驱动(initrd)->挂载根文件系统->rootfs(/sbin/init)

initrd就是一个虚拟的文件系统,里面有/、lib、bin、sbin、usr、proc、sys、var、dev、boot等一些目录,我们称之为虚拟的根文件系统,作用就是将kernel和真的根文件系统建立关联关系,让kernel去initrd中加载根文件系统所需要的驱动程序,并以读写的方式挂载根文件系统,并让执行用户当中第一个进程init。

/etc/inittab

/sbin/init启动会用到/etc/inittab所定义的条目,如:默认登陆级别id:3:initdefault:,

/etc/inittabt运行级别:

0 halt
1 single user mode(单用户维护模式)
2 multi user mode, without NFS(不支持NFS功能)
3 multi user mode, text mode(字符界面)
4 reserved (系统保留)
5 multi user mode, graphic mode (图形化界面)
6 reboot (重启)

系统初始化(/etc/rc.d/rc.sysinit)
检测,并以读写方式挂载根文件系统
设定主机名
检测并挂载/etc/fstab中其它文件系统
启动swap分区
初始化外围硬件设备驱动
根据/etc/sysctl.conf设定内核参数
激活udev和selinux
激活LVM和RAID设备
清理过期锁文件和PID文件
装载键映射-->键盘上每个键的功能


/etc/grub.conf文件说明

164002155.png

102313194.png




本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1310465,如需转载请自行联系原作者

相关文章
|
6月前
|
设计模式 Java uml
课时107:时序图
课时107介绍了时序图的描述与设计。时序图用于展示代码执行流程,如Java程序中接口IMessage、类MessageImpl及Factory的调用顺序。通过Power Designer创建UML Sequence Diagram,定义类操作结构并绘制消息传递路径,清晰呈现工厂模式下对象实例化和方法调用的过程。时序图帮助理解程序逻辑,适用于项目开发中的流程分析与文档记录。
179 1
|
10月前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
248 4
鸿蒙开发:切换至基于rcp的网络请求
|
10月前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####
|
存储 缓存 JavaScript
NPM怎样清空缓存
NPM怎样清空缓存
|
SQL 存储 安全
代码规范(如何提高代码规范)
在软件开发中,优雅的代码规范对于编写美观且实用的代码至关重要。以下是一些提升代码质量的建议: 1. **命名清晰**:使用描述性强的命名,使代码自解释,减少误解,提高可读性。 2. **简洁性**:用最少的代码实现功能,避免冗余,简洁的代码更易维护。 3. **一致性**:保持命名和编码风格的一致性,降低团队协作成本。 4. **注释**:合理注释解释代码意图,但避免过度注释。 5. **避免复杂性**:将复杂逻辑分解为简单部分,用函数或模块封装。 6. **重构**:定期重构代码以提高可读性和性能。 7. **测试**:编写单元测试确保代码的稳定性和可靠性。
227 1
|
11月前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
1011 0
|
机器学习/深度学习 数据采集 算法
【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理
【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理
538 3
|
设计模式 存储 程序员
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景(二)
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景
379 0
|
传感器
[ROS2] --- topic
[ROS2] --- topic
476 0
|
存储 弹性计算 并行计算
在高性能计算(HPC)场景下,阿里云存储的文件存储产品的实践
在高性能计算(HPC)场景下,阿里云存储的文件存储产品具有以下的应用需求和实践
672 4