2012-03-31 88 views
1

我使用osdev wiki作为编程OS的资源。到目前为止,我已经有了一个2阶段的引导程序,具有非常小的32位保护模式内核。USB上的Ext2文件系统

但是,对于引导加载程序,我一直在写入特定的扇区,并从特定的扇区读取数据,并且我决定采用“正确的方式”并使用文件系统,所以我选择ext2文件系统,因为wiki上有它的文档。所以我使用ext2格式化我的闪存驱动器,使用gparted在Ubuntu 11.10上,并抓住lde(linux光盘编辑器),并用我的闪存驱动器运行它。

问题是,我没有看到ext2页面上描述的表,我查看了其他地方的字节1024(0x400),我似乎无法找到表。我回到gparted,它仍然格式化。另外,lde表示“无法识别的文件系统”,即使我指定它是ext2。闪存驱动器是否不使用标准的ext2文件系统,文件系统是否被改变太多以至于与页面上描述的类似,还是我没有在正确的位置查找?

链接:

的Ext2 - http://wiki.osdev.org/Ext2

OsDev维基 - http://wiki.osdev.org/Main_Page

+0

我听说_some_ cheap闪存驱动器使用FAT文件系统中的“私有”空间用于其自己的内部使用,因此无法可靠地处理使用其他文件系统。但我希望这些设备不再上市,因为它们听起来很不错。 'debugfs(8)'对你的文件系统有什么看法? – sarnold 2012-03-31 00:30:13

+0

它说:超级块在打开文件系统时出现坏的幻数,它们听起来很可怕,希望这里不是问题。 – Codesmith 2012-03-31 00:50:58

+0

大多数棍子都是未分区使用的;我不知道不同的工具在分区时会如何处理它们,但要确保一直使用'/ dev/sdX'或'/ dev/sdX1'。 – sarnold 2012-03-31 00:56:41

回答

1

正如评论所说,我已经回答了我的问题。我的问题不是格式化我的闪存驱动器,或使用闪存驱动器的方式,或其他技术。问题是,当我使用我的光盘编辑器时,我告诉它读取驱动器本身(/dev/sdb),并且我需要使用该分区(/dev/sdb1)。当我看着分区时,我看着0x400(超级块的开始),而超级块确实是它应该在的地方。我还将超级块和其他块/ inode中的几个块与硬盘驱动器上的数据块进行了比较,格式相同,但数据不一样,这是预料之中的。