MBR简介

  1. 概述

    本文档介绍磁盘MBR相关概念和引导操作系统流程。

  2. MBR

  3. MBR简介

    MBR(Main  Boot  Record),是位于磁盘最前面的一段引导代码,存在于整个磁盘最开始的那个扇区,即0盘0道1扇区(该处用CHS方式表示MBR引导扇区地址,因此以1开始),它负责操作系统对磁盘进行读写时的分区合法性的判别、分区引导信息的定位,它由操作系统在对磁盘进行格式化的过程中产生的。

    通常,我们把包含MBR引导代码的分区称为主引导扇区,该扇区不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。主引导扇区MBR由如图 2.1所示的4个部分组成。

    图 2.1 MBR结构图

    MBR中64字节的分区表由4个分区项组成,它由磁盘介质类型和用户在使用fdisk定义分区时确定的。在SylixOS中,对SD卡划分的主分区可少于4个,但最多不超过4个。每个分区表项为16字节,其内容含义如图 2.2所示。

    图 2.2分区表项含义说明

    1. 主引导程序(偏移地址0000H—0088H):负责从活动分区中装载并运行系统引导程序;
    2. 出错信息数据区:偏移地址0089H—00E1H为出错信息,00E2H—01BDH全为0;
    3. 分区表:分为4个分区项,偏移地址01BEH—01FDH,每个分区表项长16字节,共64字节;
    4. 结束标志字:偏移地址01FEH—01FFH的2个字节为结束标志55AA,如果该标志错误则系统不能启动。
  4. MBR引导系统过程

    当MBR拿到处理器的使用权后,MBR中的主引导程序需要在主分区中查找到活动分区,并加载其中的系统引导程序,这样就将处理器的控制权交给操作系统了。

    要完成该过程,MBR首先就要找到主分区中的活动分区,参考图 2.2说明,MBR结构中的分区表项的第一个字节为引导标志,若该字节值为80H,则表示该分区为活动分区,若为00H,则为非活动分区。

    下面以一张格式化为FAT32分区的SD卡为例,分析其分区表项的含义,如图 2.3所示。

    图 2.3分区表项举例

    当主引导程序寻找到活动分区后,将CPU的控制权交给此分区的引导程序——系统内核加载器。为了让MBR更方便找到内核加载器,内核加载器的入口地址通常在固定的位置,即活动分区的最开始的扇区,该扇区就被称作操作系统引导扇区,该扇区中的内核加载器即为操作系统的引导记录OBR(OS BOOT Record),所以操作系统引导扇区又被称作OBR扇区,它包括一个引导程序和一个被称为BPB的本分区参数记录表。

    引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件,如果是,就把第一个文件读入内存,并把控制权交予文件;BPB参数这块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。

    此后,整个CPU的控制权就完全交给操作系统,MBR的引导任务也完成了。

  5. 参考资料

    1、《操作系统真相还原》

时间: 2024-08-29 19:02:11

MBR简介的相关文章

linux 系统中多重操作系统引导管理器grub学习

注:以下学习均在X86架构的CPU下搭建完成的linux系统. 一.linux系统启动流程简介 POST开机自检-->加载BIOS-->读取MBR-->启动Boot Loader/Grub程序-->加载内核-->用户层init依据inittab文件来设定运行等级-->init进程执行rc.sysinit-->启动内核模块-->执行不同运行级别的脚本程序-->执行/etc/rc.d/rc.local-->执行/bin/login程序,进入登录状态

Linux磁盘管理和文件系统

前言分区的概念:分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即 MasterBootRecord,一般简称为 MBR)和引导记录备份的存放位置.而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过以后的高级格式化,即 Format 命令来实现.面.磁道和扇区硬盘分区后,将会被划分为面(Side).磁道(Track)和扇区(Sector).需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划轨道MBR简介:MBR(Mai

硬盘MBR,GPT分区简介

硬盘分区简介 硬盘相关知识 硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的).每个盘片的划分规则通常是一样的.这样每个盘片的半径均为固定值R的同心圆在逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0.1.2--每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则

CentOS开机启动流程简介

我们都知道按下电脑电源键后,屏幕上会一闪而过很多信息,然后显示登录界面,然后输入用户名,密码就可以畅享网络世界了.那么这中间到底发生了什么呢,今天就让我们来简单探讨一下CentOS的简易版开机启动流程吧. 第一阶段:通电自检过程 我们都知道电脑所有数据指令都是在内存上才能被cpu处理的吧,我们还知道内存在断电后其上面的所有数据都会丢失吧,那么开机的时候内存应该是没有东西的吧,那上面都不能干了,更别说启动一个操作系统了,其实啊,我们内存并不只是我们常见的那个内存卡,很多硬件都会映射一段内存到cpu

【Android 系统开发】 Android 系统启动流程简介

Android 系统启动总结 : Android 系统启动分底层 Linux 内核启动 和 应用系统启动; -- 底层系统启动 : 系统上电, bootloader 启动, linux kernel 启动, init 进程启动; -- 应用系统启动 : init 进程启动关键的进程如 Zygote 进程 和 System Server 等系统服务, 之后进入 Home 界面; 一. Android 底层系统启动流程(Bootloader Kernel init) 1. 系统上电 执行 ROM 引

Bootloader之uBoot简介

本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程序来进行初始化:关闭 WATCHDOG.改变系统时钟.初始化存储控制器.将更多的代码复制到内存中等等.如果它能将操作系统内核(无论从本地,比如Flash:还是从远端, 比如通过网络)复制到内存中运行,就称这段程序为Bootloader. 简单地说,Bootloader就是这么一小段程序,它在系统上电

Linux 内核引导参数简介

概述 内核引导参数大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数.比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明.大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(..

cobbler简介+安装

(介绍部分的内容是借鉴网上的非原创) 回顾pxe+kickstart PXE PXE(preboot execute environment,预启动执行环境) PXE启动原理: 当计算机引导时,BIOS把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行. PXE工作原理示意图说明: 1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果

dd if= of= MBR

1.备份分区表信息 sudo fdisk -l >hda.txt  #分区表信息重定向输出到文件中 2.备份MBR sudo dd if=/dev/sda of=mbr bs=512 count=1  #备份MBR  输入文件/dev/sda, 输出文件mbr(自己定义),输入(出)块大小512字节,复制一次,由于mbr是512个字节,所以读取写到mbr文件中了:主引导记录512字节,前446是程序代码,后64字节包含分区表信息,最后2字节标识是MBR 1KB= 1024字节 1MB= 1024