ext2“图像”文件与真正的ext2设备

时间:2011-03-08 15:04:33

标签: linux filesystems inode ext2 superblock

我的任务是编写一个能够读取ext2分区的Windows阅读器程序。

对于我的测试,我使用的格式为ext2的驱动器和使用mkfs创建的文件(在linux下安装并运行良好的文件)

出于某种原因,当我从驱动器(真实的)读取超级块时,我得到了所有正确的元数据(即块大小,inode计数等...)但对文件执行完全相同的操作会返回错误的结果(这毫无意义)。

2?

之间有区别吗?

我使用\。\ X打开驱动器: 然后我使用mkfs制作文件。

1 个答案:

答案 0 :(得分:1)

分区上的ext2与存储在文件中之间应该没有任何区别(实际上没有;我只是检查过);但是,IIRC,如果ext2安装在裸盘上(例如/dev/sda而不是/dev/sda1),则主超级块的偏移量为2048而不是1024。这是为了容纳MBR和其他垃圾。 (我现在无法在文档中找到它,但是在我看来这是我遇到的问题。)然而,安装到裸驱动器有点不寻常,所以我怀疑这是你的问题。 / p> 几年前我写了一些ext2实用程序,在开始手工编写之后,我转而使用Ted Ts'o(ext2文件系统创建者)的e2fsprogs,它带有h​​eaders / libraries /等等以更加灵活和可靠的方式完成所有这些工作。

你可能还想在偏移0x438检查神奇数字0xEF53的文件/分区,并认为它不是ext2 / 3文件系统,如果那不存在,那么在拉入整个超级块,就像理智检查一样。

以下是一些可能有用的文档:http://www.nongnu.org/ext2-doc/ext2.html