CentOS 6 启动流程详细介绍

CentOS 6 启动流程详细介绍

1、 POST(Power On Selt Test) 上电自检:

按下电源键首先要检测硬件设备是否能正常运行,如:cpu、内存、硬盘等硬件设备。当然POST不是由硬件去检测(硬件也不会啊!),而是依靠一个软件来完成的,这个软件就是BIOS(Basic Input Output System)基本输入输出系统,它安装在CMOS芯片上,上电就是给CMOS加电,然后启动BIOS程序,BIOS会根据CMOS上记录的硬件信息去读取硬件并检测是否能正常运行,之后初始化硬件设备。

2、 MBR(Master Boot Record)主引导分区:

BIOS初始化硬件后会通过硬件的INT13中断功能实现读取MBR,读取MBR中的Boot Loader,Boot Loader是一个软件,它具有提供菜单功能,直接加载内核信息及相关控制权转换,MBR只有512bytes,其中前446bytes存储的是Boot Loader,46bytes存储分区表信息,2bytes为分区标志位。446bytes不足以安装Boot Loader,事实上MBR前446bytes只是安装了Boot Loader的最小主程序,即stage1,因为Boot Loader 分为stage1、stage1.5、stage2三个阶段来执行的,stage1.5存放在MBR随后的扇区中,主要用于和stage2所在分区的文件系统交互,stage2加载硬盘分区/boot目录下所有文件、配置文件与环境参数信息。

3、 Kernel、initrd/initramfs:

/boot目录下包含vmlinuz,initramfs等内核相关的文件,Boot Loader读取/boot目录下所有文件、配置文件与环境参数信息后,会把内核解压加载到内存中,根据内核提供的功能开始检测,加载各个设备,此次检测与BIOS自检不同,执行到此,后续工作都由内核来完成(因为Boot Loader已把vmlinuz,initramfs加载到内存中),此时内核还没有加载磁盘,因为还没有磁盘驱动程序,内核通过/boot目录下的虚拟文件系统,也就是initramfs,模拟一个rootfs(根文件系统),加载启动过程中所需要的核心模块,加载后释放rootfs(根文件系统),且以只读方式挂载真实的根文件系统,开始正常的启动过程。

4、 Init:

用户空间第一个执行程序,在内核,硬件及驱动加载完成后,内核会执行用户空间的第一个执行程序/sbin/init,init 程序主要功能为准备软件运行环境,包括系统主机名称,网络配置,文件系统格式等其他服务配置。

Init的配置文件:

CentOS 6:采用Upstart的方式,其特点是守护进程间的通信依赖于D-Bus进行,因此,可基本实现类似并行启动,配置文件:/etc/inittab、/etc/init/*.conf

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,如有疑问可以留言或者到本站社区讨论交流,共同进步!

(0)

相关推荐

  • CentOS系统中MySQL5.1升级至5.5.36

    记录下CentOS 6.4环境将MySQL5.1升级至5.5.36的过程,希望对大家有个参考. 1.为了安全期间,首先需要备份原有数据 2.卸载原有MySQL,先停止原有的MySQL服务,再查找 find / -name mysql [root@linuxidc /]# find / -name mysql /var/lib/mysql /var/lib/mysql/mysql /usr/lib64/mysql 并移除服务 [root@linuxidc /]# rm -rf /var/lib/m

  • 详解Centos下YUM安装PHP的两种方式

    在Centos下安装PHP时, 先后使用了两种方式进行实现, 现整理出来以作记录. 摘要 一般Centos下安装软件我们采用源码安装或者RPM包安装的方式,有时候更简单我们可以采用YUM源的方式 安装PHP的时候有个特殊的地方,其有两个YUM源可供选择 Webtatic方式安装升级PHP 安装webtatic源 [root@i-bskmtj6q ~]# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm Retrieving https

  • centos6.4下python3.6.1安装教程

    本文实例为大家分享了python3.6.1安装教程,供大家参考,具体内容如下 1.安装编译环境所需包 #yum install zlib-devel bzip2-devel openssl-devel ncurese-devel gcczlib 安装成功 2.下载源码包 #wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz 3.安装 解压源码包进入到解压完的python源码包目录下 #tar zxvf Python-3.6.

  • vmware安装CentOS 7的详细教程

    使用vmware安装CentOS7的详细教程,具体内容如下 1.先创建一个文件夹用以存放镜像 2.运行vmware,点击创建新的虚拟机 3. 3.选择典型安装 4. 选择稍后安装操作系统 5. 5.选择客户机操作系统为Linux,版本为CentOS 64位 6. 选择一开始创建的用以存放镜像的文件,并给虚拟机命名 7.选择磁盘大小,选择默认20G即可 8.点击完成 9.点击CD/DVD(IDE)项 10.选择使用ISO映像文件(M),并选择已经下载的CentOS7的ISO文件 11点击开启虚拟机

  • 阿里云ECS centos6.8下安装配置MySql5.7的教程

    阿里云默认yum命令下的MySQL是5.17****,安装mysql5.7之前先卸载以前的版本,包括清除以前的数据库--查看/var/lib/mysql下,如果有历史文件备份后清除. 1.从https://dev.mysql.com/downloads/repo/yum/查找合适的rpm下载 2.下载完成后,执行命令"yum localinstall mysql-community-release-el6-5.noarch.rpm": 3.完成后,执行命令"yum insta

  • centos6.4下nginx1.12.1安装教程

    本文为大家分享了nginx1.12.1的安装教程,供大家参考,具体内容如下 安装所需环境 1. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ 2. PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库.nginx 的 http 模块使用 pcre 来解析正则

  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    验证环境: [root@~~/]# rpm -qa | grep mysql mysql-5.6.28-1.el6.x86_64 [root@~~/]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core [root@~

  • centos下Oracle11G图文安装教程

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 第一步: 软件安装: 本菜是在VMware虚拟机上安装的centOS6.5,开辟的虚拟硬盘空间一定要大于30G(本菜一开始只开辟了20g,结果最后提示空间不够,惨痛的经历,所以第二遍直接开辟了50G硬盘空间),建议在40G~50G,内存最低要1G!!! 至于VMware虚拟机和centOS的安装不是本文重点,更不是难点,大家可以参考其他内容进行安装,在此不再赘述! 软件准备: oracle的下载,分为32位和6

  • CentOS 6 启动流程详细介绍

    CentOS 6 启动流程详细介绍 1. POST(Power On Selt Test) 上电自检: 按下电源键首先要检测硬件设备是否能正常运行,如:cpu.内存.硬盘等硬件设备.当然POST不是由硬件去检测(硬件也不会啊!),而是依靠一个软件来完成的,这个软件就是BIOS(Basic Input Output System)基本输入输出系统,它安装在CMOS芯片上,上电就是给CMOS加电,然后启动BIOS程序,BIOS会根据CMOS上记录的硬件信息去读取硬件并检测是否能正常运行,之后初始化硬

  • linux启动流程详细介绍

    linux启动流程简介 我们都知道,由于linux的稳定性,通常被作为服务器系统,要想称为一个PHP的高手,linux是必修之课.那么linux系统从开机到启动,中间到底都发生了什么?本文来简单探讨一下中间的神秘过程. 1. BIOS加电自检 BIOS是英文"Basic Input Output System"的缩略词 其实,它是一组固化到计算机内主板上一个ROM芯片上的程序. 计算机会首先加载BIOS信息,这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息

  • SpringCloud使用Feign实现远程调用流程详细介绍

    目录 前言 1. 导入依赖坐标 2. 开启Feign自动装配 3. 声明远程调用 4. 替代RestTemplate 5. 测试 前言 本次示例代码的文件结构如下图所示. 1. 导入依赖坐标 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标. <!-- Feign远程调用客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifa

  • Activity 四种启动模式详细介绍

    Activity 四种启动模式详细介绍 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /&

  • Linux启动过程详细介绍

    Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了. 启动第二步--读取MBR 众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大

  • Android中View绘制流程详细介绍

    创建Window Window即窗口,这个概念在AndroidFramework中的实现为android.view.Window这个抽象类,这个抽象类是对Android系统中的窗口的抽象.在介绍这个类之前,我们先来看看究竟什么是窗口呢? 实际上,窗口是一个宏观的思想,它是屏幕上用于绘制各种UI元素及响应用户输入事件的一个矩形区域.通常具备以下两个特点: 独立绘制,不与其它界面相互影响: 不会触发其它界面的输入事件: 在Android系统中,窗口是独占一个Surface实例的显示区域,每个窗口的S

  • Vue electron前端开启局域网接口实现流程详细介绍

    目录 一.主要实现原理 二.获取本机局域网IP 三.开启服务器 四.关闭服务器 五.简单演示 六.整体代码 七.展望 一.主要实现原理 electron本身就集成了Nodejs,简直是不要太舒服.直接用最基本的http模块开接口即可,也可以用express,看个人喜好.下面演示的是http模块. 二.获取本机局域网IP 首先要获取本机局域网的IP,这就是接口的IP地址了. // 获取本机的局域网IP function getServerIp() { let interfaces = os.net

  • AngularJS 执行流程详细介绍

    一.启动阶段 大家应该都知道,当浏览器加载一个HTML页面时,它会将HMTL页面先解析成DOM树,然后逐个加载DOM树中的每一个元素节点.我们可以把AngularJS当做一个类似jQuery的js库,我们通过<script>标签引入到HTML中,那么此时Angular就做为一个普通的DOM节点等待浏览器解析,当浏览器解析到这个节点时,发现它是一个js文件,那么浏览器会停止解析剩余的DOM节点,开始执行这个js(即angular.js),同时Angular会设置一个事件监听器来监听浏览器的DOM

  • React Native 启动流程详细解析

    导读:本文以 react-native-cli 创建的示例工程(安卓部分)为例,分析 React Native 的启动流程. 工程创建步骤可以参考官网.本文所分析 React Native 版本为 v0.64.2. 我们知道上述工程是一个安卓应用,打开 android/ 目录下源码文件,首先发现它创建了两个 java 文件:MainApplication.java 和 MainActivity.java,分别做了应用以及主 Activity 的定义. 安卓应用的启动流程是:在启动第一个 acti

  • Android Init进程对信号的处理流程详细介绍

    Android  Init进程对信号的处理流程 在Android中,当一个进程退出(exit())时,会向它的父进程发送一个SIGCHLD信号.父进程收到该信号后,会释放分配给该子进程的系统资源:并且父进程需要调用wait()或waitpid()等待子进程结束.如果父进程没有做这种处理,且父进程初始化时也没有调用signal(SIGCHLD, SIG_IGN)来显示忽略对SIGCHLD的处理,这时子进程将一直保持当前的退出状态,不会完全退出.这样的子进程不能被调度,所做的只是在进程列表中占据一个

随机推荐