MBR的Linux分区机制启动过程,linux系统启动流程(MBR)

总:POST---> Boot Squence ---> Bootloader ---> kernel ---> init

---> 完成启动

系统:CentOS6

1、按下电源,cpu找到CMOS中的BIOS并运行起来,这个小程序会完成硬件自检。

BIOS:Basic Input and Output System

2、bios会根据设置的boot squence来找设备上的MBR,找到以后控制权移交给MBR中的bootloader(1 stage).

MBR存在磁盘上的0号扇区。

有3部分组成:

446:bootloader

64: 分区表 16个字节表示一个分区

2: 55AA

3、bootloader加载MBR之后的一部分扇区中的基本文件系统驱动(1.5 stage),如之后的27个扇区。然后再加载引导分区中的第2阶段。linux上面的bootloader程序是GRUB.

GRUB有3个阶段组成。

bootloader:1st stage

Partition:filesystem driver, 1.5 stage

Partition:/boot/grub, 2nd

stage

因为1.5阶段的文件系统驱动只能驱动基本文件系统,所以第2阶段所在的分区不能使用lvm或软raid之类的上层文件系统。

4、加载第2阶段以后,会提供一个选择启动系统的窗口。内容就是/boot/grub/grub.conf文件中的各条目。

如果所选条目就是本机的linux系统的话:

在点击进入系统之后。GRUB会加载grub.conf文件中指定的内核和要传递给内核的参数。参数中有真实根的地址。有时候还要加载与内核同版本的initrd。 initrd是一个模拟根的文件,由GRUB把它与内核一起加载到内存。此文件展开以后就是一个虚拟的根。内核工作于此根中并开始以只读方挂载真实的根。所需驱动和程序在此根中加载。挂载完成以后开始把一些必要文件,如设备文件复制到真实的根。然后执行根切换。如果没有initrd文件,内核会直接挂载真实的根,如果内核里面没有根分区的驱动,则系统启动失败。

12d63fef3ed9792cfb376231a495fe9a.png

而如果所选条目是指向其它分区的另一个系统,则GRUB的控制权移交给那个分区首部的引导程序来管理(各个分区首部保留有引导空间(linux上面好像是1024Byte),也正是这样才有了双系统或多系统)。

kernel:自身初始化:

探测可识别到的所有硬件设备;

加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)

以只读方式挂载根文件系统;

运行用户空间的第一个应用程序:/sbin/init

initrd文件有两种:ramdisk

ramfs

Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问;

在使用ramdisk的时候,在内存中模拟成磁盘,但因为磁盘都要有缓冲(buffer)和缓存(cache),这样的结果就是还要在内存中使用缓冲和缓存。多此一举,所以就有了ramfs。

在使用ramfs的时候,直接在内存中模拟成文件系统,不需要在内存中使用缓冲和缓存。

可以生成initrd的工具。可以手动用以下工具生成。

CentOS 5: initrd(ramdisk)

工具程序:mkinitrd

CentOS 6,7:

initramfs(ramfs)

工具程序:dracut, mkinitrd(脚本)

5、根切换完成以后,内核开始执行第一个用户空间应用程序(如果之前的切换根不算的话)/sbin/init。之后内核退居幕后,前面由init程序来负责。init负责启动初始化已定义的各种服务程序和环境。

init就是用户空间的所有程序的祖先。

init是完成系统用户空间初始化的项目总称,它在不同的系统版本上有不同的实现:

init程序的类型:

CentOS 5-:SysV init

配置文件:/etc/inittab

CentOS 6:Upstart

配置文件:/etc/inittab

/etc/init/*.conf

CentOS 7:Systemd

配置文件:/usr/lib/systemd/system/,

/etc/systemd/system/

443357b86b99bec766606cb7f0501bb6.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.netcore 极速接入第三方登录

新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下:Github: https://github.com/mrhuo/MrHuo.OAuth唯一官网:https:…

mongodb可视化工具 linux,Linux中安装启动MongoDB与可视化工具

MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包。下载地址:https://www.mongodb.com/download-center#community下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) 。curl -O https://fastdl.mongodb.org/…

年轻有为的老黄2020

0x01 不知道开篇要说什么好,那就来个经典的 0x01 吧。这个世界不止苟且,还有诗和远方。工作 工作上面还算是比较忙碌的,在20年也做了很多东西,本来面试进公司的时候title是高开,在基础架构组,光杆部门。过完…

推荐:Dapper扩展-Dapper.SimpleCRUD

背景Dapper目前应该是大家比较喜欢的orm框架之一,但是它灵活的背后,还是有很多不尽人意的地方,谁想编写基本的读取/插入/更新/删除语句?下面推荐SimpleCRUD为Dapper提供了简单的CRUD帮助器。解放了大家,提高生产力。功…

群策群力:破机房征求灵丹妙药

我校有一年代久远之计算机教室,现已经迈入日落西山之境。特征求灵丹妙药,不求妙手回春,只愿其能为我校的信息技术教育事业再尽最后一把微力,也为我校即将面临无地授课的教师提供继续上岗的救命稻草一枝。具体情况说明:…

使用 C# 9 的records作为强类型ID - 路由和查询参数

上一篇文章,我介绍了使用 C# 9 的record类型作为强类型id,非常简洁public record ProductId(int Value);但是在强类型id真正可用之前,还有一些问题需要解决,比如,ASP.NET Core并不知道如何在路由参数或查询字符串参数中…

公司高层要我转Java 我直接邮件回怼...

2020年艰难而短暂,而互联网的历史车轮还是轰隆隆一路向前,服务网格/云原生/Serverless架构,各种新架构大行其道。重新审视当下主流的编程语言,天下第一的Java已老,下行多年的.NET却浴火重生,焕发生机&#…

.NET斗鱼直播弹幕客户端(2021)

.NET斗鱼直播弹幕客户端(2021)离之前更新的两篇《.NET斗鱼直播弹幕客户端》已经有一段时间,近期有许多客户向我反馈刚好有这方面的需求,但之前的代码不能用了——但网上许多流传的Node.js、Python脚本却可以用,这岂能忍?&#xff…

Exceptionless服务端本地化部署

背景分布式异常日志收集框架Exceptionless是开源的工具,根据官方给出的说明:Exceptionless提供两种使用方式,一种是官网创建账号,需要付费,免费版有限制;一种是自己搭建本地项目,无任何限制。准备安装包准备…

ABP vnext模块化架构的最佳实践的实现

在上一篇文章《手把手教你用Abp vnext构建API接口服务》中,我们用ABP vnext实现了WebAPI接口服务,但是并非ABP模块化架构的最佳实践。我本身也在学习ABP,我认为ABP新手应该从最佳实践开始学习,可以少走很多弯路,所以写…

iphone查看删除的短信_手机资讯:iPhone手机可以批量删除短信吗如何操作

如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道iPhone手机可以批量删除短信吗如何操作,那么既然现在大家对于iPhone手机可…

如何在 C# 8 中使用 模式匹配

模式匹配 是在 C# 7 中引入的一个非常????的特性,你可以在任何类型上使用 模式匹配,甚至是自定义类型,而且在 C# 8 中得到了增强,引入了大量的新模式类型,这篇文章就来讨论如何在 C# 8 中使用模式匹配。C# 8 中的表…

Hadoop 中zoo_0基础如何入门HADOOP

原标题:0基础如何入门HADOOP学习一样东西,肯定先要了解这个东西是什么,那什么是HADOOP呢?我们就来看看什么是HADOOP和如何学习HADOOP及学习内容。一,什么是HADOOPHADOOP是apache旗下的一套开源软件平台HADOOP提供的功能…

.NET 5 程序高级调试-WinDbg

上周和大家分享了.NET 5开源工作流框架elsa,程序跑起来后,想看一下后台线程的执行情况。抓了个进程Dump后,使用WinDbg调试,加载SOS调试器扩展,结果无法正常使用了:0:000> .loadby sos clrUnable to find…

.Net在线编辑工具.NET Fiddle

介绍推荐工具:.NET Fiddle推荐理由:在线调试,编译,运行.net代码,同时支持C#,VB.NET,F#推荐说明::对于.NET开发者来说是福音,因为我们可以不用再担心环境与庞大…

Typora markdown公式换行等号对齐_下了31个markdown编辑器,我就不信选不出一个好用的...

markdown编辑器测评标准总体标准渲染领域编辑领域数据管理其他TyporaVnoteMwebJoplinZettlrmacdownulyssesMarktextghostwriterfocusedbywordmarkedFarBoxNotablebear(熊掌笔记)iA writerMarxico(马克飞象)JetBrains系列的IDEsublime(贫穷,没有插件&…

WSUS专题之二:部署与规划1

部署场景: 我们这里仅讨论和Internet完全物理隔离的企业内网的WSUS部署 Internet断开的WSUS服务器环境 部署WSUS服务时,并不要求你必须连接到Internet。对于没有连接到Internet的网络环境,你一样可以部署WSUS服务。通过在其他连接到Internet上的WSUS服务…

.Net Core in Docker - 使用阿里云Codepipeline及阿里云容器镜像服务实现持续交付/部署(CD)...

上一次演示了如何.Net Core in Docker - 使用阿里云Codepipeline及阿里云容器镜像服务实现持续集成(CI),讲到这里我们push一下代码后就自动编译、自动跑单元测试、自动构建镜像、自动推送镜像到私仓。那么离我们最初设定的目标只差那么一小步…

spyder pyecharts不显示_我的显示器需要定时校色吗?

在对图像色彩有要求的领域中,显示器的色彩准确是相当重要的。专业的显示器,能够具有更大的色域,更大的色深,以及更精确的ΔE色准值。这也是一个专业显示器所应有的品质。但是,我们在讨论色彩准确性的同时,往…

外观模式(Façade Pattern)

概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说…