【发布时间】:2016-10-23 15:56:32
【问题描述】:
所以我一直在尝试自己编写一个小引导加载程序(为了娱乐和教育)。到目前为止,我已经完成了一个与 MSDOS 完全一样的引导加载程序(或者更确切地说是“可引导程序”)。然后当我尝试实现更多的东西时,我超过了 512 字节的限制。我决定扩展我的微型操作系统。我已经开始编写类似 2 阶段引导加载程序的内容,其中第 2 阶段充当主内核,因此我将拥有超过 512 个字节。
我已经编写了引导加载程序的第一阶段。几乎。我有了跳到stage 2所在扇区执行它的想法,但问题是,我使用的是FAT32 USB而不是每个人都在为其编写代码和教程的软盘映像。
我的问题会很幼稚:如何在 FAT32 文件系统中使用 stage1.bin 加载 stage2.bin?
到目前为止,这对我没有帮助: Loading second stage of a bootloader
【问题讨论】:
-
你只有足够的空间来写一个 512 字节的单块卷引导记录,它可以扫描 FAT32 主目录并将文件加载到内存中,这两个步骤都需要你遵循它们各自的分配链胖的。您需要为 FAT32 BPB 保留空间,因为这是文件系统元数据的一部分,但这仍然留下了足够的空间
-
通过查看它的 FAT 条目并读取它来找出它所在的扇区。
标签: assembly kernel bootloader