【问题标题】:ext2 "image" files vs real ext2 devicesext2“图像”文件与真正的 ext2 设备
【发布时间】:2011-07-11 04:34:54
【问题描述】:

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

对于我的测试,我使用了一个格式化为 ext2 的驱动器和一个使用 mkfs 创建的文件(一个可以在 linux 下挂载并运行良好的文件)

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

两者有区别吗?

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

【问题讨论】:

    标签: linux filesystems inode ext2 superblock


    【解决方案1】:

    partition 上的 ext2 和存储在文件中应该没有任何区别(实际上没有;我刚刚检查过);但是,IIRC,如果 ext2 安装在 裸磁盘 上(例如 /dev/sda 而不是 /dev/sda1),主超级块的偏移量是 2048 而不是 1024。这是为了容纳 MBR 和其他垃圾。 (我刚刚在略读的文档中找不到它,但这在我的脑海中突出显示为我遇到的问题。)但是,安装到裸驱动器有点不寻常,所以我怀疑这是你的问题。

    几年前我写了一些 ext2 实用程序,在开始手工编写之后,我转而使用 Ted Ts'o(ext2 文件系统创建者)的e2fsprogs,它带有头文件/库/等。以更灵活和可靠的方式完成所有这些工作。

    您可能还想在文件/分区中检查偏移量 0x438 以获取幻数 0xEF53,如果不存在,则认为它不是 ext2/3 文件系统,然后再拉入整个超级块,就像健全性检查。

    这里有一些可能会有所帮助的文档:http://www.nongnu.org/ext2-doc/ext2.html

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2016-10-14
      • 1970-01-01
      • 2012-04-14
      • 2020-11-01
      • 2023-04-05
      • 2013-10-30
      • 1970-01-01
      • 2015-01-29
      相关资源
      最近更新 更多