我指的是关于OS开发的BrokenThorn教程,目前正在编写第一阶段引导加载程序和加载第二阶段的章节。
我编写了整个代码,并在使用qemu运行它时遇到了崩溃。 经过一些调试后,我发现问题出在第二阶段引导加载程序的名称上,我通过循环遍历根目录条目来读取它。
如果我将第二阶段的文件名用作INITKRNL.BIN,一切正常。但是,如果我使用initkrnl.bin(因此只有名称的区别),它会崩溃。
我还打印了从根目录中读取的名称。对于大写名称,它仅读取INITKRNL.BIN。对于小写名称,它会读取名称的一些字母和一些随机字符。
为什么文件名的情况很重要,这个差异的原因是什么?
注意:我使用Ubuntu 13.04作为我的开发环境。我使用mkfs.vfat
使用VFAT文件系统格式化软盘映像。
答案 0 :(得分:0)
它实际上存储为一个11字符串,格式为8.3格式(文件名为8个字符,扩展名为3个字符)。所以在ram中它将是INITKRNLASM
。
另外,我建议不要在软盘驱动器上使用VFAT文件系统,而是使用FAT12文件系统,因为它更简单,更适合那种大小的媒体。