我的任务是为windows编写一个能够读取ext2分区的读取器程序。
在我的测试中,我使用了一个格式化为ext2的驱动器和一个使用mkfs创建的文件(一个在linux下挂载和工作良好的文件)。
由于某些原因,当我从驱动器(真正的)读取超级数据块时,我获得了所有正确的元数据(即数据块大小、索引节点计数等)。但是对文件执行完全相同的操作会返回错误的结果(这是没有意义的)。
这两个有区别吗?
我使用.\X:打开驱动器,并使用mkfs创建文件。
发布于 2011-03-08 23:33:51
分区上的ext2和文件中的存储应该没有任何区别(确实没有,我刚刚检查过了);但是,如果ext2安装在裸盘上(例如,/dev/sda而不是/dev/sda1),那么主超级块的偏移量是2048而不是1024。这是为了容纳MBR和其他垃圾。(我刚才在文档中找不到它,但这是我遇到的东西。)然而,安装到一个空驱动器上有点不寻常,所以我怀疑这是你的问题。
几年前,我编写了一些ext2实用程序,在开始手工编写之后,我改用Ted T‘o( ext2文件系统创建者)的e2fsprogs,它附带了头/库等,以便以更灵活、更可靠的方式完成所有这些工作。
您可能还想在文件/分区中检查幻数0xEF53的偏移量0x438,如果不存在,则认为它不是ext2/3文件系统,然后再引入整个超级块,这只是作为一种理智检查。
这里有一些可能会有帮助的文档:http://www.nongnu.org/ext2-doc/ext2.html
https://stackoverflow.com/questions/5234213
复制相似问题