我的任务是编写一个能够读取ext2分区的Windows阅读器程序。
对于我的测试,我使用的格式为ext2的驱动器和使用mkfs创建的文件(在linux下安装并运行良好的文件)
出于某种原因,当我从驱动器(真实的)读取超级块时,我得到了所有正确的元数据(即块大小,inode计数等...)但对文件执行完全相同的操作会返回错误的结果(这毫无意义)。
2?
之间有区别吗?我使用\。\ X打开驱动器: 然后我使用mkfs制作文件。
答案 0 :(得分:1)
分区上的ext2与存储在文件中之间应该没有任何区别(实际上没有;我只是检查过);但是,IIRC,如果ext2安装在裸盘上(例如/dev/sda
而不是/dev/sda1
),则主超级块的偏移量为2048而不是1024。这是为了容纳MBR和其他垃圾。 (我现在无法在文档中找到它,但是在我看来这是我遇到的问题。)然而,安装到裸驱动器有点不寻常,所以我怀疑这是你的问题。 / p>
几年前我写了一些ext2实用程序,在开始手工编写之后,我转而使用Ted Ts'o(ext2文件系统创建者)的e2fsprogs,它带有headers / libraries /等等以更加灵活和可靠的方式完成所有这些工作。
你可能还想在偏移0x438
检查神奇数字0xEF53
的文件/分区,并认为它不是ext2 / 3文件系统,如果那不存在,那么在拉入整个超级块,就像理智检查一样。
以下是一些可能有用的文档:http://www.nongnu.org/ext2-doc/ext2.html