【Linux】引导扇区(boot sector)的结构

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

Boot sector是硬盘(严格来说是所有可引导的存储介质)上的第一个扇区,大小为512字节,这个扇区对于计算机启动来说至关重要。
这个小小的512字节包含了很多内容,主要分为三个部分,分别是:

    MBR(master boot record,主引导记录)446字节

    DPT(disk partition table,磁盘分区表)64字节
    BRID(boot record ID引导记录标识)2字节

有很多人把主引导扇区和MBR混为一谈,实际上是不对的。

主引导记录MBR(446字节)

主引导记录的作用是安装基本的引导加载程序(boot loader),在Linux中是grub。这个引导加载程序主要有以下三个功能:

  1.     提供菜单:用户可以选择不同的开机选项,这是多重引导的重要功能。
  2.     载入内核文件:直接指向可开机的程序区段来开始操作系统
  3.     转交其他loader:将引导加载功能转交给其他loader处理。

转交其他loader功能在安装了多个系统的时候非常重要,例如在电脑上安装了windows和Linux双系统的时候,开机的时候,Linux的boot loader(grub)会提供菜单让用户选择需要进入的系统(在倒计时界面,按任意键即可进入菜单界面),如果用户选择的是Windows系统,grub则将控制权转交给windows的loader,由windows的loader来加载windows内核,启动windows系统。

    注意:在安装双系统的时候,要先安装windows系统,再安装Linux系统。因为Linux在安装的时候,你可以选择将boot loader安装在MBR或各别分区的启动分区, 而且Linux的loader可以手动配置菜单,所以你可以在Linux的boot loader里面加入Windows启动的选项,Windows在安装的时候,他的安装程序会主动覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会。当然,如果非要先装Linux再装windows也可以,只不过要对MBR进行特别的处理,比较麻烦。
 

磁盘分区表DPT(64字节)

DPT占用64个字节,每16个字节表示一个分区,这16个字节的含义如下:

由这个表13-16字节可以看出来,每个分区支持的最大的扇区数是2^(4*8),{13~16字节} 个,每个扇区是512字节,因此,每个分区的最大容量为:
512∗2^32/2^30 (/GB) =2048G  (B)  =2T

再看9~12字节,分区的逻辑地址也是四字节,因此,单个硬盘可利用的最大空间也是2TB。

BRID(引导记录标识)

BRID的主要作用就是判断该设备是否可以用于启动。BIOS按照“启动顺序”,把控制权转交给排在第一位的储存设备。这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给“启动顺序”中的下一个设备。其实主引导记录的作用就是告诉计算机到硬盘的哪一个位置去找操作系统。
————————————————
版权声明:本文为CSDN博主「Vincent's Blog」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ww1473345713/article/details/51602825

 

C/C++底层实现FAT文件系统读写:从引导扇区到簇链遍历 文件系统是操作系统管理存储设备的核心组件,它定义了数据在磁盘上的组织方式。其基本原理是通过元数据(如目录项、分配表)来映射逻辑文件与物理扇区,实现文件的创建、读取、写入和删除。FAT(File Allocation Table)文件系统因其结构清晰、广泛兼容,成为理解文件系统原理的经典模型,在嵌入式系统、数据恢复和存储驱动开发中具有重要技术价值。通过手动解析引导扇区、文件分配表和目录项,开发者可以深入掌握存储管理、字节序处理及缓存优化等底层技能。本文聚焦于使用C/C++直接操作FAT结构,涵盖引导扇区解析、 阅读详情

相关推荐

boot-sector:这是用于操作系统启动的引导扇区汇编代码!

这是书中的源代码:“如何制作一个简单的操作系统” 测试工具: qemu bochs 目录:bios-boot-sector bios-boot-sector 是 16 位实模式引导扇区代码 目录:boot-sector-pm boot-sector 是 32 位保护模式下的引导扇区代码 用法: nasm [filename] -f bin -o [dest_filename] Eg: nasm boot_helloworld.asm -f bin -o boot_helloworld.bin 中银国际使用: QEMU 用法: qemu-system-i386 [bin_filename] Eg: qemu-system-i386 boot_helloworld.bin

硬盘Boot Sector

1. Boot Sector 的组成     Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (MasterBoot Record),DPT (D isk Partition Table)Boot Record ID 三部分组成.     MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节( 0 to 0x1BD ),存放 系统主引导程序 (

木易云清 1124

Win11系统重装全记录:从备份Office激活到搞定RAID阵列,我的微星笔记本复活记

本文详细记录了Win11系统重装的完整过程,从数据备份到RAID阵列配置,特别针对微星笔记本的特殊硬件驱动问题提供了解决方案。文章涵盖了Office激活状态备份、BIOS设置、驱动安装顺序等关键步骤,帮助用户顺利完成系统重装并优化性能。

weixin_31421613的博客 280

在 EXT 文件系统下,分区开头的Boot Sector与操作系统启动之间的爱恨情仇

如下图所示,在的分区中,每个分区开头都有1-2个扇区,称作分区开头的实际上与操作系统的启动流程没有直接的关系。这是因为操作系统启动过程中更多依赖于(如 GRUB 或其他引导程序)以及系统所在的文件系统,并不是依赖 ext 文件系统的特定设计。

zyqash的博客 1099

Boot Sector简介

 Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (Master Boot Record), DPT (Disk Partition Table)Boot Record ID 三部分组成。MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ), 存放系统主引导程序 (它负责从活动分区中装载并运行系统引导程序).     DPT

无本之木 1610

【os-tutorial】二,boot_sector的“裸骨架”

boot_sect

humanof的专栏 637

Linux下制作能Boot的SD卡

因为板子要从SD卡启动,编译了bootloader、kernel、rootfs后需要格式化sd卡并写入这3个文件 插入sd卡后,通过 dmesg 命令检查设备名,下面假设为/dev/sdb。 1、$ sudo fdisk /dev/sdb,进入格式化命令行,命令行都是以字母表示,具体命令格式按m可以列出所有命令。 2、列出所有分区,按p 3、如果SD卡已有分区,按d,删

ccx_john的专栏 1519

fat扇区结构

struct fat_boot_sector { uint8_t ignored[3]; /* 0x00 Boot strap short or near jump 引导程序短跳或近跳*/ int8_t system_id[8]; /* 0x03 Name - can be used to special case partition manager volumes 名称——可以用于特殊情况下分区管理器的卷*/ uint8

qq_39048131的博客 588

Linux 0.12内核学习之(1)——用MASM编写Boot Sector引导扇区

最近在学习Linux0.12内核,正在读《Linux内核完全剖析》。一开始就被ax86写的引导扇区弄晕了。于是Google了很多资料。最终实验了一晚上终于搞定。下面来看看我们怎么用Windows下的MASM来写个Boot Sector。因为我MASM汇编用的比较熟,所以就用MASM来写,当然,汇编只有语法差异,你用什么来写都没关系。     首先,先来说说计算机怎么启动的。经过一系列BIOS

Linux Kernel Developer 1816

linux 活动主分区,主引导扇区(MBR),分区表(DPT)及活动分区(DBR) | 技术部落

引导扇区:硬盘的0柱面、0磁头、1扇区(也叫主引导记录MBR),大小为512Byte。分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节。活动分区DBR:DBR(DOS BOOT RECORD,原意为DOS引导记录),位于柱面0,磁头1,扇区1(操作系统可以访问的第一个扇区),即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)一、硬盘的0柱...

weixin_28676983的博客 1856

DOS分区表(Boot Sector引导扇区

>>DOS分区体系的硬盘也叫MBR硬盘,0号扇区是主引导记录MBR,DOS分区体系的硬盘用分区表记录每个分区的类型起始位置和分区的大小。其中,分区表就在0号扇区内,所以0号扇区如果损坏,那么这个硬盘就不能正确识别分区。 >>DOS分区的使用范围:windows系统,Linux系统以及基于IA32平台FreeDBS和OpenDBS等操作系统都使用DOS分区体系。 &g...

weixin_34041003的博客 1413

引导扇区(Master Boot Record:MBR)

http://en.wikipedia.org/wiki/Master_boot_record 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为“主引导记录”(M

Fybon的专栏 4097

linux引导扇区(二)

上一节讲到了引导扇区结构,这种是基于FAT12文件系统的。但是内部的引导程序却只是用打印字符串来代替,现在来加深一下代码,添加读取磁盘数据到内存的功能 这个功能需要用到BIOS中断int 13h,它的用法如下 可以看到 ah = 02h 时,int 13h 可以进行读取磁盘扇区功能。 在这里需要先了解一下磁盘的一些基础知识 磁盘由N个盘片组成,每个盘片一般有两面,一面一个磁头(hea...

lhm的博客 971

自制操作系统Antz(1)——Boot Sector

0.引子   最近在看操作系统底层方面的东西,最开始的为什么是07c00h这个问题就让我对操作系统有了很大的兴趣。所以准备在看书之余顺便写一个操作系统(Anz)。至于为什么这个系统会被叫做Antz,可以参考Antz Uhl Kone(某个日漫男主的名字), 日语为アインズ·ウール·ゴウン , 与之对应的还有接下来准备写的自制脚本语言AntzScript,因为准备是用Java实现解释器,所以如何把...

weixin_30709809的博客 195

TetrOS社区贡献指南:如何参与这个开源引导扇区游戏项目

欢迎来到 TetrOS 开源社区!🎮 这是一个令人惊叹的技术项目——一个完全运行在 512 字节引导扇区中的俄罗斯方块游戏。如果你对汇编语言、引导扇区编程或极简主义软件开发感兴趣,那么 TetrOS 正是你展示才华的绝佳平台。本指南将详细介绍如何参与这个开源引导扇区游戏项目的贡献流程。 [![TetrOS 俄罗斯方块游戏截图](https://raw.gitcode.com/gh_mirror

gitblog_00217的博客 417

Linux引导扇区的认识

根据对PC BIOS 的了解,引导时首先要读入引导扇区。 我安装完毕Oracle Enterprise Linux x86_64 5.3以后,用 fdisk -l 看,可以看到: [root@localhost ~]# fdisk -l Disk /dev/sda: 12.8 GB, 12884901888 bytes 255 heads, 63 se...

weixin_33798152的博客 127
上一篇: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
下一篇: compile kernel with debug info
o_alpha
博客等级 码龄11年 13粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值