是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零?

2024-02-15

在实施的同时我自己的引导扇区加载程序从 2012 年开始 https://hg.ulukai.org/ecm/ldosboot/rev/17884e6352e6#l1.255我确保将偏移量 508 和 509 处的字节清零。这些是标准 512 字节大小扇区的倒数第四个和倒数第三个字节。这就是我放在那里的内容:

    _fill 508,38,start 

    dw 0
; 2-byte magic bootsector signature
    dw 0AA55h

我现在不记得任何具体的来源,但我相信我添加了两个零字节是为了提高对某些或另一个操作系统驱动程序的兼容性。在某些时候我一定知道这可能是需要的。

翻阅文档“Microsoft 可扩展固件计划 - FAT32 文件系统规范 - FAT:磁盘格式概述 - 版本 1.03,2000 年 12 月 6 日”没有产生有关字节 508 和 509 的任何信息。在第 13 页,它指出:

关于 FAT 卷的扇区 0,还有另一项重要说明。如果我们考虑的内容 扇区作为字节数组,扇区[510]必须等于0x55,扇区[511]等于0xAA。

注意:许多 FAT 文档错误地说这个 0xAA55 签名占据了“最后 2 个字节” 当且仅当 BPB_BytsPerSec 为 512 时,此语句才是正确的。如果 BPB_BytsPerSec 大于 512,这些签名字节的偏移量不会改变(尽管它是 引导扇区末尾的最后两个字节也包含此签名是完全可以的)。

最接近于讨论字节 508 和 509 的是 FAT32 的 FSINFO 结构的描述,第 22 页:

FSI_TrailSig 508 4

值 0xAA550000。该跟踪签名用于验证这实际上是一个 FSInfo 扇区。注意这个的高2字节 值(进入偏移量 510 和 511 处的字节)与 扇区 0 中相同偏移处使用的签名字节。

但它没有指定整个双字应该与引导扇区中的此签名匹配。

现代 FreeDOS 引导扇区加载程序确实将这两个字节提供为零 https://github.com/FDOS/kernel/blob/977023f85c701d740260ccffea373d333cce676e/boot/boot.asm#L508 too:

       times   0x01f1-$+$$ db 0

filename        db      "KERNEL  SYS",0,0

sign            dw      0xAA55

这一页“一项检查 MSWIN4.1操作系统启动记录》 https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm描述了 MS Windows 4.x 引导扇区的两个字节也为零。在标题为“数据位置和 内存中的错误消息”最后一行包含这些零:

7DF0  00 57 49 4E 42 4F 4F 54 20 53 59 53 00 00 55 AA   .WINBOOT SYS..U.

这些零字节是否有原因,或者这都是货物崇拜的一个实例?


刚刚回顾了所有 FreeDOS 内核引导扇区加载程序的状态,我在他们的另一个文件中发现了一个特定的声明。这是在LBA FAT32 加载程序 https://github.com/FDOS/kernel/blob/977023f85c701d740260ccffea373d333cce676e/boot/boot32lb.asm#L402:

       times 0x01ee-$+$$ db 0

msg_BootError   db "No "
        ; currently, only "kernel.sys not found" gives a message,
        ; but read errors in data or root or fat sectors do not.

filename    db "KERNEL  SYS"

sign        dw 0, 0xAA55
        ; Win9x uses all 4 bytes as magic value here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零? 的相关文章

随机推荐

  • SQLite3如何使用索引?

    我正在研究 SQLite3 索引 这是一个表 COMPANY CREATE TABLE COMPANY ID INT PRIMARY KEY NOT NULL NAME TEXT NOT NULL AGE INT NOT NULL ADDR
  • 如何在软件中将两个物理串行端口相互桥接(并记录穿过的数据)?

    基本上 我想将我的计算机放在串行线中间并记录通过它的对话 我正在尝试对这段对话进行逆向工程 并最终模拟对话的一端 我正在尝试做的事情的粗略图 通常 我有这个 Device 1 lt gt Device 2 我想做这个 Device 1 lt
  • 如何为 API 客户端提供端点的最新验证规则?

    在我们的 API 中 我们希望实现允许客户端提取验证规则的解决方案 同步验证规则和 您的密码应该是 8 100 个符号 等字段下的任何有用文本将很有用 例如 当客户端请求注册验证规则时 API 使用以下 JSON 进行响应 email ht
  • 未找到具有有效 http:// 前缀的活动(浏览器)

    所以我的应用程序出现了异常 如下所示 android content ActivityNotFoundException No Activity found to handle Intent act android intent actio
  • 在 web.config 中设置要加载的 DLL 的位置

    是否可以在 web config 中设置要加载的特定 DLL 的本地文件路径位置 而不是将这些 DLL 放在 GAC 中或C Windows System32 这将使部署 Web 服务变得更加容易 而不必搞乱其中任何一个 我已经尝试将 DL
  • 有什么方法可以为函数指针比较生成警告吗?

    我花了很长时间才发现我的代码中有一个错误被触发 OPT ICF Because OPT ICF 可以导致相同的地址被分配给不同的函数或只读数据成员 使用 Gy 编译的 const 变量 它可能会破坏依赖于函数或只读数据成员的唯一地址的程序
  • Git 挂钩脚本可以与存储库一起管理吗?

    我们想要制作一些我们都可以共享的基本钩子脚本 用于预格式化提交消息之类的事情 Git 有钩子脚本 通常存储在
  • Xcode 6 链接器错误 - 架构 armv7 的未定义符号

    升级到 Xcode 6 beta 7 现在仍然使用 Xcode 6 GM 后 我无法链接我的 Swift 应用程序 我收到如下错误 架构armv7的未定义符号 swift stdlib compareNSStringDeterministi
  • 回收位图

    我正在从事涉及位图操作的项目 因为我不想出现 OutofMemoryError 所以我尝试回收每个未使用的位图 不幸的是 我回收了太多并且出现了 尝试使用回收的位图 错误 我在用 Bitmap createBitmap bmp x y w
  • 如何检查设备是否已加入 AD 或 Azure AD 加入/注册?

    我需要检查我的设备是否已加入本地域或 Azure AD 加入 注册 如何检查这个 我试过NetGetJoin信息 https learn microsoft com en us windows desktop api lmjoin nf l
  • 如何跨面或网格绘制 geom_line [重复]

    这个问题在这里已经有答案了 我的数据 Plate Month Day Concentration A April 1 17 1094 B April 2 16 001 C April 3 17 9501 D April 4 18 3686
  • 当 NSPasteboard 添加内容时收到通知

    在我的应用程序中 如果 NSPasteboard 中添加了某些内容 我希望收到通知 如果我从任何其他程序复制文本 我希望我的应用程序知道它 我在某处读到 不能那样做 我应该创建一个计时器并自己检查 NSPasteboard 的内容 这是要做
  • 检查Python脚本中的程序是否存在[重复]

    这个问题在这里已经有答案了 如何从 python 脚本检查程序是否存在 假设您想检查是否wget or curl可用 我们假设它们应该在路径中 最好能看到多平台解决方案 但目前 Linux 就足够了 Hints 运行命令并检查返回代码并不总
  • client.user.setActivity 发现为 null? (节点.js)

    我正在尝试将我的 Discord 机器人的活动设置为 游戏 但是我在网上找到的示例根本没有帮助 client user setActivity what the bot is playing 根本不起作用 它给了我这个错误 说明我正在尝试找
  • 挂起互操作 COM 对象的问题

    我有一个应用程序 它使用 COM 互操作来创建一个电子表格 该电子表格在客户端计算机上的 Excel 中打开 但是 如果我查看任务管理器 当用户关闭 Excel 时 EXCEL exe 进程并不总是结束 如果我保存工作簿并以编程方式关闭 E
  • 使用 Netty 的异步 HTTP 客户端

    我是 Netty 新手 仍在努力寻找自己的方法 我正在寻找创建一个异步工作的 http 客户端 http的netty例子只展示了如何等待IO操作 并没有展示如何使用添加监听器 所以最近几天我一直在努力解决这个问题 我正在尝试创建一个请求类
  • jQgrid 工具栏搜索 - 从任何列动态删除搜索框

    我正在使用 jqgrid 版本 4 4 4 现在我面临一个与工具栏搜索相关的问题 正如我在标题中提到的 我想从任何列中删除工具栏搜索的搜索框 动态地 在渲染网格期间或之后 我用谷歌搜索 但没有找到关于我的这个问题的任何相关解决方案 我用了s
  • 列表中 dict 对象的元素顺序

    我从 HOSTS 获得以下列表 HOSTNAME H1 H2 H3 SW VERSION 7 2 2 5 2 2 6 2 2 OSPF NEIGHBOR 10 1 1 1 10 1 1 2 10 1 1 3 我将它们转换为字典对象列表 如下
  • PayPal REST 订阅 API 未在订单摘要中显示价格

    我正在沙箱环境中测试用于订阅的 PayPal REST API 并注意到 当转到创建协议后返回的批准 URL 时 页面左侧的订单摘要窗格下没有显示价格 显示描述 但没有价格 税等 计划 ID 将传递给创建协议的调用 其中包含我希望作为用户在
  • 是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零?

    在实施的同时我自己的引导扇区加载程序从 2012 年开始 https hg ulukai org ecm ldosboot rev 17884e6352e6 l1 255我确保将偏移量 508 和 509 处的字节清零 这些是标准 512