无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: hihk
打印 上一主题 下一主题

[分享] 混合MBR\混合分区表\本质\应用\现状

    [复制链接]
31#
 楼主| 发表于 3 天前 | 只看该作者
本帖最后由 hihk 于 2026-3-4 21:57 编辑

抬扛的太多,没意思
回复

使用道具 举报

32#
 楼主| 发表于 3 天前 | 只看该作者
2010sya 发表于 2026-3-2 22:12
现在老机器+大硬盘的情况不少,希望能提供一个简单易用的方案,多数人还是用不了代码!

去折腾吧,看好你哦
回复

使用道具 举报

33#
发表于 3 天前 | 只看该作者
好的,文章有点长要想大人学习学习了
回复

使用道具 举报

34#
发表于 3 天前 | 只看该作者
围观
回复

使用道具 举报

35#
发表于 3 天前 | 只看该作者
感谢分享
回复

使用道具 举报

36#
发表于 前天 00:18 | 只看该作者
谢谢分享!
回复

使用道具 举报

37#
发表于 前天 00:40 | 只看该作者
围观
回复

使用道具 举报

38#
发表于 前天 06:34 | 只看该作者
谢谢分享
回复

使用道具 举报

39#
发表于 前天 06:46 | 只看该作者
感谢分享, 大佬太牛了,
我记得以前玩黑苹果时, 有个叫幸运草的boots引导文件, 也能虚拟EFI和MBR引导
还有一个开源的能创建苹果混合分区表的分区小软件, 好像还能跨平台, 忘了名字了

点评

整个构建的LBA0适用于微软的混合引导的MBR,与苹果那个混合分区兼容好像还是有亿点不同,印象中那个四个分区表项(捆绑的16字节)排列顺序好像有所不同?这方面我没有细看,匆匆看了几篇文章,没有深究,之前看到资料那些工  详情 回复 发表于 前天 09:22
回复

使用道具 举报

40#
发表于 前天 07:00 | 只看该作者
谢谢分享
回复

使用道具 举报

41#
发表于 前天 08:23 | 只看该作者
感谢大佬整理分享
回复

使用道具 举报

42#
发表于 前天 08:30 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

43#
发表于 前天 08:51 | 只看该作者
打字不易
回复

使用道具 举报

44#
发表于 前天 09:00 | 只看该作者
谢谢楼主分享啊
回复

使用道具 举报

45#
 楼主| 发表于 前天 09:22 | 只看该作者
2013kyj 发表于 2026-3-3 06:46
感谢分享, 大佬太牛了,
我记得以前玩黑苹果时, 有个叫幸运草的boots引导文件, 也能虚拟EFI和MBR引导
还 ...

整个构建的LBA0适用于微软的混合引导的MBR,与苹果那个混合分区兼容好像还是有亿点不同,印象中那个四个分区表项(捆绑的16字节)排列顺序好像有所不同?这方面我没有细看,匆匆看了几篇文章,没有深究,之前看到资料那些工具必须有苹果或者黑苹果的环境才能用,我个人没有这个环境,就没有继续查下去了,你可以研究一下.
回复

使用道具 举报

46#
发表于 前天 09:41 | 只看该作者
文章太长,需要慢慢看
回复

使用道具 举报

47#
发表于 前天 10:49 | 只看该作者
謝謝分享,非常感謝您!
回复

使用道具 举报

48#
发表于 前天 11:07 | 只看该作者
感谢分享
回复

使用道具 举报

49#
发表于 前天 11:17 | 只看该作者
谢谢分享
回复

使用道具 举报

50#
 楼主| 发表于 前天 11:27 | 只看该作者
本帖最后由 hihk 于 2026-3-4 22:03 编辑

个人对微软的底层逻辑比较感兴趣,走过的弯路很多,地图很多也是假的,好不容易终于偷摘了一颗微软的野生石榴,尝了一口,呸,不好吃,想想这玩意虽然不好吃,但让大伙尝尝味也可以,就兴冲冲的过来分享,没想到,麻了个隔壁的,杠精真多,搞得没心情了.
回复

使用道具 举报

51#
发表于 前天 11:46 | 只看该作者
谢楼主分享!
回复

使用道具 举报

52#
发表于 前天 11:52 | 只看该作者
支持分享
回复

使用道具 举报

53#
发表于 前天 12:37 | 只看该作者
本帖最后由 hilsonma 于 2026-3-3 15:51 编辑
2010sya 发表于 2026-3-2 22:12
现在老机器+大硬盘的情况不少,希望能提供一个简单易用的方案,多数人还是用不了代码!

楼主分享的是一段深入剖析MBR的文字辩论,是很好的学习MBR的素材。但其中存在的瑕疵也要注意甄别。

争议的焦点混合分区表的winhex脚本不建议拿来实际使用。
我支持反方的这一点说法:
2.如果你只是用BIOSLegacy模式启动grub4dos,UEFI模式用原生Windows引导,完全不需要做混合MBR,原生合规的保护性MBR就足够用了,不会影响你的双引导,还完全符合规范。

可参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421926&page=1#pid4130920
附件是我做的简化操作的批处理
grldr_gpt_boot.7z (466.39 KB, 下载次数: 10)

当然,这个方案也只是能解决gpt磁盘的legacy启动,并不支持windows的安装程序和更新程序,会出现:Windows安装程序无法将Windows配置为在此计算机的硬件上运行。
因为安装程序和更新程序要求legacy启动模式下, \Boot\bcd 所在分区是激活分区,该分区的分区引导记录是bootmgr引导代码

楼主分享的混合分区表winhex脚本也没有涉及修改分区引导记录,所以也是不支持windows的安装程序和更新程序的。
注:刚查看了gpt磁盘的分区,第一扇区是有扇区引导记录的,就是bootmgr引导代码,所以如果使用混合分区表是有可能支持windows的安装程序的,我就不折腾验证了,有需要的可以自行测试。

安装时出现 ”Windows安装程序无法将Windows配置为在此计算机的硬件上运行“ 的解决方案:
出现如上提示的时候,按Shift+F10或Shift+Fn+F10启动命令提示符
然后有两种做法,我是直接用第二种做法。
做法一:
输入oobe\msoobe回车即可进入下一步操作,但错误提示框仍然在,不用理会
按照屏幕提示输入相应的信息直至完成系统的安装.然后重启
这个做法在以前的windows安装中试过是有效的,但新版本的windows安装中不行了。
做法二:
输入regedit打开注册表编辑器,修改 HKLM/SYSTEM/setup 的各项数值,数据为零 (右边窗口的数据,是大于0的数字的都改为0)
然后自己用命令行创建用户: (下面3行中的admin是用户名,可随意改成想要的用户名,3行的用户名要一致)
  net user admin /add
  net localgroup administrators admin /add
  net user admin /active
或者开启Administrator用户 (注意,要么用上面3行,要么用下面这1行,2选1)
  net user administrator /active
创建完用户后重启应该就能进入系统了。

点评

问一下,这样再用G4D引导win.vhd可以吗,需要补充哪些文件?  详情 回复 发表于 前天 13:39
可不可以也做一個 wee 的MBR啟動,畢竟 wee 不需文件, 而且透過 wee 後也可啟動任意文件名或位置的grldr, 並沒強制放在根目錄下。  详情 回复 发表于 前天 13:12
文章只是讲解硬盘的第0扇区上的二进制基础理论解析,和你讲的不是一个类型,实现办法因人而异,假如你没有吃透基础,根本不知道别人在讲什么,就没有讨论的基础.  详情 回复 发表于 前天 12:50
回复

使用道具 举报

54#
 楼主| 发表于 前天 12:50 | 只看该作者
本帖最后由 hihk 于 2026-3-3 13:38 编辑
hilsonma 发表于 2026-3-3 12:37
楼主分享的是一段深入剖析MBR的文字辩论,是很好的学习MBR的素材。但其中存在的瑕疵也要注意甄别。

争 ...

文章只是讲解硬盘的第0扇区上的二进制基础理论解析,和你讲的不是一个类型,实现办法因人而异,假如你没有吃透基础,根本不知道别人在讲什么,就没有讨论的基础.看来另一些基础内容还要普及:
BIOS 引导链(Legacy)
MBR -> 活动分区 -> DBR -> bootmgr -> \Boot\BCD -> 系统内核


UEFI 固件 -> ESP 分区 (FAT32) -> \EFI\ -> 厂商目录 -> .efi 引导文件 -> 系统内核

默认 fallback:\EFI\BOOT\BOOTX64.EFI
Windows:\EFI\Microsoft\Boot\bootmgfw.efi -> BCD
Linux:\EFI\ubuntu\grubx64.efi -> grub.cfg

全程可以使用BOOTICE简单配置,想用命令提前预置也可以,我们运维的思维方式是怎么方便怎么来.你所说的没有配置BIOS传统引导代码用BOOTICE,的主引导记录中自己添加即可.
配置个BCD文件,没有那么复杂的.把这两个引导链中的目录与文件一起复制到单个FAT32分区,用BOOTICE修改一下,很简单的,就不要秀这个基础命令了,没意思.系统已经打包成VHD,提前预置好,没有那么复杂的,上述的系统内核,可以替换成成品VHD系统.等于现实中我们看到的东西就是做了一个混合分区表,前面的FAT32引导分区放了两个目录,里面有完整的启动文件,用BOOTICE改一下BCD,在第二个分区内(NTFS格式)放一下VHD系统,这就是全部了,从你所说的基础命令,看来你根本还没有入门.


点评

我对柱面、扇区、代码这些都不太了解,请问能否像hilsonma那样给一个现成的工具?谢谢!  详情 回复 发表于 前天 13:41
怎么就不是一个类型呢,就是解决你的初衷,实现gpt磁盘双引导的方案之一。 动的就是0扇区的前面440字节,而且只用了112个字节 只是后面还要把真正的g4d的mbr代码写到分区表和分区的间隙中。 混合分区表我以前接  详情 回复 发表于 前天 13:12
回复

使用道具 举报

55#
发表于 前天 13:12 | 只看该作者
hilsonma 发表于 2026-3-3 12:37
楼主分享的是一段深入剖析MBR的文字辩论,是很好的学习MBR的素材。但其中存在的瑕疵也要注意甄别。

争 ...

可不可以也做一個 wee 的MBR啟動,畢竟 wee 不需文件,
而且透過 wee 後也可啟動任意文件名或位置的grldr,
並沒強制放在根目錄下。

点评

wee虽然强大,但实现起来要复杂些,在gpt磁盘要搭配umbr使用 umbr+wee不如yaya后来做grldr_gpt+grldr.mbr简单方便。 由于umbr的引导记录中有一个校验码我不懂搞,所以担心批处理做的不正确,虽然我忽略校验码也  详情 回复 发表于 前天 13:40
您所说的,当然可以,看好你哦.加油折腾吧.  详情 回复 发表于 前天 13:39
回复

使用道具 举报

56#
发表于 前天 13:12 | 只看该作者
hihk 发表于 2026-3-3 12:50
文章只是讲解硬盘的第0扇区上的二进制基础理论解析,和你讲的不是一个类型,实现办法因人而异,假如你没有吃 ...

怎么就不是一个类型呢,就是解决你的初衷,实现gpt磁盘双引导的方案之一。
动的就是0扇区的前面440字节,而且只用了112个字节
只是后面还要把真正的g4d的mbr代码写到分区表和分区的间隙中。

混合分区表我以前接触过,但好象都不太建议使用,而且也不是很需要,所以就放弃了。
就算使用混合分区表,也还是要处理引导代码来实现引导的,就是要在前面440字节中写入一定的代码,我上面分享的代码也是方案之一。

下面我也分享一下我学习MBR的笔记:

主引导记录(MBR,Master Boot Record)指硬盘开头的引导代码,可能占用一个或多个扇区。
通常也指硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区,又叫做MBR扇区(主引导扇区)。

主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区。

在深入讨论主引导扇区内部结构的时候,有时也将其开头的启动代码(440字节或早期的446字节)特指为主引导记录

因此,在使用“主引导记录”(MBR)这个术语的时候,需要根据具体情况判断其到底是泛指整个主引导扇区,还是特指主引导扇区的启动代码(前440或446字节)。

主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性地重建数据结构信息后,才可能重新访问原先的数据。
主引导扇区内的信息可以通过任何一种基于某种操作系统的分区软件写入,但和某种操作系统没有特定的关系,即只要创建了有效的主引导记录就可以引导任意一种操作系统。

主引导记录(master boot record,MBR)位于硬盘的第一物理扇区。由于历史原因,硬盘的一个扇区大小是512字节。

主引导扇区内部结构:
000-1B7 440字节 MBR 启动代码 曾经是446字节,后来缩为440字节,留4字节记录磁盘ID,2字节留空
1B8-1BB   4字节 ID  反向读
1BC-1BD   2字节 NUL
1BE-1FD  64字节 DPT 磁盘分区表 (4个分区表项,每个16字节)
1FE-1FF   2字节 END 结束标志 (55 AA 反向读为0xAA55)

LBA0
512 = 440      + 4      + 2   + 64              + 2
      BootCode + DiskID + Nul + PartitionRecord + BootSignature

引导流程:
INT19将MBR读到0:7C00
将MBR程序从0:7C00移到0:0600
读分区表,找出活动分区
  活动分区标志不是80或00就报Invalid Partition Table并停机
  找不到80就停机或进入ROM BASIC
其他分区正确吗
  不正确就报Invalid Partition Table并停机
加载MBR至0:7C00
  无法读MBR就报Error Loading Operation并停机
结束标志是否55AA
  不是就报Invalid Partition Table并停机
执行MBR
  NT6/NT5即是转PBR(DBR)

--------------------
MBR分区结构

MBR磁盘分区是一种使用最为广泛的分区结构,它也被称为DOS分区结构,但它并不仅仅应用于Windows系统平台,也应用于Linux,基于X86的UNIX等系统平台。它位于磁盘的0号扇区(一扇区等于512字节),是一个重要的扇区(简称MBR扇区)。

BIOS引导硬盘会先读取硬盘的首个扇区(0柱面,0磁头,1扇区,也就是0扇区)。该扇区开头的440字节内容特指为“主引导记录”(Master Boot Record,缩写:MBR)。

零号扇区由以下四部分组成:启动代码、磁盘ID、分区表、引导标志
共512字节(000-1FF),其中:512=440+4+2+64+2=代码+ID+空+分区表+标志
000-1B7 440字节,为Bootstrap code area,引导代码(MBR),负责整个系统启动。如果引导代码被破坏,系统将无法启动。
1B8-1BB   4字节,为磁盘ID,是Windows初始化磁盘写入的磁盘标签,也叫磁盘签名。如果此标签被破坏,则系统会提示“初始化磁盘”。此数据反向读 ( F9 38 B1 EE 读为 EEB138F9 )。
1BC-1BD   2字节,为空值
1BE-1FD  64字节,为MBR磁盘分区表(DPT),是整个硬盘的分区表。(DPT,4个分区表项,每个16字节)
1FE-1FF   2字节,为Boot signature,MBR结束标志(END),一直为“55 AA”,非55AA则表示0扇区为无效MBR,系统将不能正常启动。

早前的代码部分
000-1BD 446字节,启动代码 引导程序 后来缩为440字节,留4字节记录磁盘ID,2字节留空

更早前的代码部分
000-088 137字节,主引导程序
089-0E1  89字节,出错信息
0E2-1BD 220字节,空值

nt6 > PBR_bootmgr > bootmgr (可以是其他引导器改名)
nt5 > PBR_ntldr > ntldr (只能是nt5系统的引导器)


MBR分区表结构

DBT信息(16字节*4个主分区=64字节)
1字节是否活动分区 BootIndicator
3字节起始CHS      StartingCHS
1字节文件系统类型 OSType
3字节结束CHS      EndingCHS
4字节起始扇区号   StartingLBA
4字节扇区总数     SizeInLBA

OSType或SizeInLBA为0则忽略该条分区记录
OSType为EE,SizeInLBA不为0,则表示该盘为GPT盘
  StartingCHS 为00 02 00 表示GPT分区表开始字节位置为0x000200
  EndingCHS 为FF FF FF
  StartingLBA 为01 00 00 00 表示GPT头所在LBA(反向读)为0x00000001
  SizeInLBA 为总扇区数-1,最大值FF FF FF FF (超出最大值就使用最大值)

1BE 1字节 80=活动分区 00=非活动分区 其他数值无效
1BF 1字节 分区起始磁头号,用到全部8位
1C0 2字节     0-5位:分区起始扇区号;6-15位:分区起始磁柱号
1C2 1字节 文件系统类型标志,如07=NTFS 05=2GB_CHS 0F=2TB_LBA 0B=2GB_CHS 0C=2TB_LBA 0F=LBA扩展分区
1C3 1字节 分区结束磁头号,用到全部8位
1C4 2字节     0-5位:分区结束扇区号;6-15位:分区结束磁柱号
1C6 4字节 分区起始相对扇区号 如00 00 08 00 即起始扇区为2048 或者是逻辑分区入口即扩展引导记录EBR地址
1CA 4字节 分区总的扇区数 如 00 20 03 00 即204800个扇区(100MB)

EBR的数据要反向读,如扇区数即末四位00 80 38 01 应是0x01388000个扇区(20480000个扇区)
EBR的分区表第一项是分区信息,第二项是下一分区表指针,第三第四项为0

--------------------
GPT分区详解

LBA0 保护性MBR
LBA1 GPT头
LBA2至33 GPT分区表
LBA34至LBA N-33 GPT分区
LBA N-32至N-1 GPT分区表备份
LBA N GPT头备份

MBR 分区方案中,磁盘的第一个扇区( 512 字节),存放磁盘引导代码和 4 个分区表项。这 512 个字节也称为 MBR
GPT 分区方案中,分区表放在第 1~33 扇区,共 33 个扇区(32*512字节),另外在磁盘最末尾 33 个扇区,备份一个分区表。
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

因为第一个扇区已被 MBR 分区方案使用,GPT 分区方案保留第一扇区,被称为 protective MBR。 protective MBR 上只有一个分区项,并标记为特殊的"EE"类型,尽可能大的覆盖整个磁盘。防止只识别 MBR 的系统操作磁盘。

LBA0 字节偏移0x0至0x1ff
LBA1 GPT头。字节偏移0x200-3ff
    字节偏移0x28至2f共8字节 可用于分区的起始LBA,22 00 00 00 00 00 00 00 (0x22)即扇区LBA34
              50-53 共4字节 分区表总项数,通常 80 00 00 00 (0x80) 128个
              54-57 共4字节 每个分区表项占用字节数,通常 80 00 00 00 (0x80) 128字节
LBA2-LBA33 分区表。128字节*128项共16384字节,所以要32个扇区,每扇区4个分区表项

-------------------------------------
https://blog.csdn.net/li33293884/article/details/50562527
GPT分区表详解

LBA0 保护性MBR
LBA1 分区表头
LBA2-LBA33 分区表

LBA1
200-207 8字节 EFI PART
208-20B 4字节 修订
20C-20F 4字节 GPT头的大小
210-213 4字节 GPT头的CRC32校验。计算时,先置0,然后计算各分区项的crc32,最后再计算这个crc32
214-217 4字节 保留,必须是0
218-21F 8字节 当前表头位置
220-227 8字节 备份表头位置
228-22F 8字节 可用于分区的起始扇区 反序,如22 00 00 00 00 00 00 00即0x22即第34扇区开始
230-237 8字节 可用于分区的最后扇区
238-247 16字节 磁盘GUID
248-24F 8字节 分区表项的起始扇区
250-253 4字节 分区表项的数量
254-257 4字节 单个分区表项的大小
258-25B 4字节 分区表项的CRC32
25C-3FF 420字节 保留,必须是0

LBA2
400-40F  16字节 分区类型GUID  (4字节反-2字节反-2字节反-2字节顺-6字节顺)
410-41F  16字节 分区GUID
420-427   8字节 起始LBA 反序,如00 08 00 00 00 00 00 00 即0x800即第2048扇区开始
428-42F   8字节 末尾LBA
430-437   8字节 属性
438-47F  72字节 分区名
480-4FF 128字节 第2项
500-57F 128字节 第3项
580-5FF 128字节 第4项

点评

你根本只会复制,你真的知道我在讲什么吗?为了重装WINDOWS系统,无视BIOS设置中的引导类型设置,硬盘类型设置,无视安全引导,用VHD完美实现,达到可量化时间的重装系统效率.你的命令是在干嘛?小孩子玩泥巴吗?  详情 回复 发表于 前天 13:41
回复

使用道具 举报

57#
发表于 前天 13:26 | 只看该作者
大佬,感谢分享!
回复

使用道具 举报

58#
发表于 前天 13:26 | 只看该作者
感谢分享,已拷贝存档学习
回复

使用道具 举报

59#
 楼主| 发表于 前天 13:39 | 只看该作者
guies 发表于 2026-3-3 13:12
可不可以也做一個 wee 的MBR啟動,畢竟 wee 不需文件,
而且透過 wee 後也可啟動任意文件名或位置的grld ...

您所说的,当然可以,看好你哦.加油折腾吧.
回复

使用道具 举报

60#
发表于 前天 13:39 | 只看该作者
hilsonma 发表于 2026-3-3 12:37
楼主分享的是一段深入剖析MBR的文字辩论,是很好的学习MBR的素材。但其中存在的瑕疵也要注意甄别。

争 ...

问一下,这样再用G4D引导win.vhd可以吗,需要补充哪些文件?

点评

只需要放一个grldr在任意分区的根目录,然后菜单文件menu.lst这个你知道的,或者直接把菜单内置到grldr里面去。 g4d引导win.vhd可以chainloader bootmgr 也可以使用siso/run/ntboot这些内置bootmgr的g4d外部命令。  详情 回复 发表于 前天 14:00
我也正在学习,从一点都不会开始学,你学得一定比我快,到时候教教我.谢谢你  详情 回复 发表于 前天 13:54
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-3-5 18:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表