NTFS文件系统详解(二)之MBR(EBR)基本信息

article/2025/8/27 15:48:00

经过上一篇文章对硬盘的基本结构的详细介绍后,我们再来看看MBR和EBR的结构

MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。

主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分 区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变 的,从而实现多系统共存。

这里写图片描述

其中从0x01BE到0x01FD这六十四个字节表示的是4个主分区的信息。每个主分区16个字节描述,这16反个字节的含义是:

这里写图片描述
注:由于硬盘的发展,234字节的分区起始扇区所在柱面,磁头,扇区,678字节的分区终止扇区所在的柱面,磁头,扇区信息已不正确,如果硬盘稍微大点,chs逻辑硬盘地址方案中的c值有可能就不能由现在分配的位数表达了。因而,在柱面超过3FF的时候,将失效,这三个值一般为FE FF FF(16450560个扇区之后,也就是扇区位置超过7.44G時设为这个值),在MBR规范中,直接舍弃“virtual CHS values逻辑硬盘地址方案”,而采用LBA方案,

更详细的分区类型符如下
这里写图片描述

知道MBR的基本信息之后,我们再来看看实际的情况事怎样的.我将我电脑磁盘分了五个区,其中三个基本分区,三个扩展分区(其中一个分区格式化成FAT16)
这里写图片描述

然后,用WinHex查看MBR的数据
这里写图片描述
可以看到446字节的主引导程序和64字节的分区表项+两字节的”55 AA”有效分区结束标志

第一个分区表项
80 01 01 00 07 FE FF FF 3F 00 00 00 C1 FF BF 03
80 活动分区
01 01 00 磁头号1,扇区号1,柱面号0
07 NTFS分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
3F 00 00 00 分区起始扇区号63
C1 FF BF 03 分区所占扇区数03BFFFC1(62914497),30G大小
这里写图片描述

第二个分区表项
00 FE FF FF 07 FE FF FF 00 00 C0 03 00 00 40 00
00 非活动分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
07 NTFS分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
00 00 C0 03 分区起始扇区号62914560
00 00 40 00 分区所占扇区数(4194304),2G大小
这里写图片描述

第三个分区表项
00 FE FF FF 07 FE FF FF 00 00 00 04 00 00 40 00
00 非活动分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
07 NTFS分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
00 00 00 04 分区起始扇区号67108864
00 00 40 00 分区所占扇区数(4194304),2G大小
这里写图片描述

第四个分区表项
00 FE FF FF 0F FE FF FF 00 00 40 04 00 00 C0 00
00 非活动分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
0F 扩展分区
FE FF FF 超过第16450560个扇区,设为最大值,可忽视
00 00 40 04 分区起始扇区号71303168
00 00 C0 00 分区所占扇区数(12582912),6G大小
这里写图片描述

通过分区表项,我们便可以得到分区所在的扇区范围,找到分区相应的扇区.但是如果是扩展分区,还需要EBR找到相应扩展分区所在的位置

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个 逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记 录和逻辑


http://chatgpt.dhexx.cn/article/r3Okxp1V.shtml

相关文章

EBR内容解析

原先博客放弃使用,几篇文章搬运过来 EBR(Extended Boot Record)即扩展分区引导记录.类似于主引导记录MBR.因为MBR的四条分区信息的限制,可以使用EBR方便扩展. 它的结构与MBR类似于,但是没有引导程序和磁盘签名,仅仅保留了分区表和结束标志. 下面以实例分析: 新建一个512MB虚拟…

C++中常见的几种输入字符串的方法

C中常见的几种输入字符串的方法_是赵薰薰呀的博客-CSDN博客_c输入字符串 可以用的函数 substr substr有2种用法: 假设:string s "0123456789"; string sub1 s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 &…

MATLAB-字符串

本节我们学习如何在MATLAB中创建一个字符串。 例如: my_string 搬砖工程师domi MATLAB执行上述语句,返回以下结果: my_string 搬砖工程师domi MATLAB 认为所有变量,数组和字符串被视为字符数组。 让我们使用命令检查上面创建…

c语言:动态输入字符串数组

考研题中经常会遇到给定一条英文句子,让我们对其每个单词进行操作,不同于对整型数据操作,字符串在c语言中必须存放到数组中,无形之中又给考题增加了难度 一般情况下,字符串数组都以二维数组或指针数组定义&#xff0c…

用scanf_s输入字符串

用的是vs2019。 为了安全,scanf_s输入字符串时需要加一个数字来限制最多读取的字符数。 错误示例: char* str[100]; scanf_s("%s",str);这样写编译器没有报错,但是运行会出错,debug显示 正确写法: char…

写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。

写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 解题思路&#xff1a; 字符串以\0作为结尾&#xff0c;则从第一个字符开始向后移动遇到\0认为字符串结束。 答案&#xff1a; #include <stdio.h> int mystrlen(char *str) {int len 0;char *pt…

C++输入字符串的几种方式

最近有复习到 C 基础知识&#xff0c;这里总结下在 C 中输入字符串的几种方式&#xff0c;有需要的可以参考&#xff1a; 1、cin >> <1> 输入一个数字 void Cin1() {int a, b;cin >> a >> b;cout << "a b " << a b <&l…

c语言如何用循环输入字符串,C语言使用scanf连续输入字符串出现的问题

#include int main() { char a,b; scanf("%c",&a)&#xff1b; scanf("%c",&b); printf("%c,%c",a,b); } 一段看上去很简单的代码&#xff0c;即使是C语言初学者也能看懂。 可是在运行的时候却出现了问题&#xff1a; ①输入a后按下回车…

c语言用scanf输入指针字符串,c语言如何用scanf输入字符串

在C语言中&#xff0c;可以使用“scanf(“格式控制字符串”,变量内存地址)”语句输入字符串。scanf()函数的第一个参数是格式字符串&#xff0c;它指定了输入的格式&#xff0c;并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。 本教程操作环…

C++中输入字符串的几种方法

C中输入字符串的几种方法 C的字符串输入方式有 1.cin>> 2.cin.get() 3.cin.getline() 4.getline() 5.gets()cin 第一种用法是逐个输入数字或者字符&#xff0c;中间用空格隔开。 第二种用法是读入一个字符串&#xff0c;遇到“空格”“TAB”“回车” 都会结束。例如&a…

C语言输入字符串

文章目录 1.scanf2.gets 1.scanf 输入字符串使用 %s。不能读取空格&#xff0c;遇到空格自动结束。例如&#xff0c;输入abcde&#xff0c;得到abcde&#xff1b;而输入abc de&#xff0c;只能得到abc。输入格式&#xff1a;scanf("%s",str)。其中str表示 地址值。 …

【C语言】字符串输入的三种方式

一、gets() 该函数原型为&#xff1a; # include <stdio.h> char *gets(char *str);gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间 # include <stdio.h> int main(void) {char a[256] {0};gets(a);printf("%s…

字符串输入的2种常用方法详解

字符串输入的2种常用方法详解 一.scanf函数1.扫描集2.逆向使用扫描集 二.gets函数 一.scanf函数 int main() {char arr[50] { 0 };scanf("%s", arr);printf("%s", arr);return 0; }这种方法可以输入字符串&#xff0c;但是只能输入一个词&#xff0c;遇到…

字符串的输入

字符串数据作为经常需要使用的数据&#xff0c;我们需要掌握它的输入&#xff0c;下面总结了不同的输入字符串的方式 c和c的有一点点不同 ①逐个逐个字符输入 我们可以设置一个数组&#xff0c;或者数组加指针的形式&#xff0c; 通过for循环或while循环的方式&#xff0c;…

C++字符串的几种输入方法(string和字符数组)

ps:本文大部分内容参考于这篇博客&#xff0c;在这里加入了自己对这些函数在字符数组和string变量的理解和总结。 C中的输入大致有6种方法&#xff1a;cin&#xff0c;cin.get(),cin.getline(),gets(),getchar() 1,cin 用法一&#xff1a;最常用的方法&#xff0c;接收一个字…

制作黑苹果安装U盘(Clover+OC+PE)三引导

制作黑苹果安装U盘&#xff08;OCCloverPE&#xff09;三引导 1.删除U盘分区表2.写入dmg到U盘3.替换EFI(Clover引导)4.扩建U盘分区表5.转换U盘分区类型 效果如图所示&#xff0c;嫌麻烦可以关注 黑果小兵的部落阁微信公众号&#xff0c;在“安装镜像”里找"10.15.6 19G73…

MINIS FORUM U820 黑苹果引导OC或CLOVER更新教程

准备工具&#xff1a;1.OC Auxiliary Tools&#xff08;简称OCAT)&#xff0c;OC Auxiliary Tools for Mac-OC Auxiliary Tools Mac版下载 V0.6.9-PC6苹果网 即新OC引导的编辑器&#xff0c;须与OC引导版本相对应&#xff0c;否则容易出错&#xff1b;2.Clover ConfiGurator&a…

黑苹果引导介绍篇

引导篇 1、EFI分区&#xff1a;全称是EFI System Partition(ESP)&#xff0c;是一个使用FAT16或FAT32的系统引导物理分区&#xff0c;支持EFI模式的电脑需要从ESP分区启动系统&#xff0c;EFI固件可从ESP加载EFI启动程序或者应用。目前主流的Clover安装的黑苹果&#xff0c;普…

WINDOWS系统下四叶草CLOVER引导U盘制作

1、进入WINDOWS系统&#xff0c;下载Boot Disk Utility ,解压并打开它。插入U盘&#xff1b; 2、点击Options设置&#xff0c;根据图选或者默认&#xff0c;点击OK&#xff1b; 制作不成功的请参照下面纠正&#xff1a;&#xff08;需要点开U盘的&#xff0b;下面的U盘&#x…

MacOS+Win10 双系统引导程序 Clover 的修复

首先&#xff0c;请做好以下准备工作&#xff1a; 1&#xff09;特定型号笔记本的EFI引导文件 2&#xff09;WinPE启动盘一枚 3&#xff09;DiskGenius 打开DiskGenius&#xff0c;我们可以看到磁盘列表 第一个磁盘&#xff0c;即ESP&#xff0c;是系统的引导盘。 开机之后&…