我在EXT2文件系统中打开了超级块和组描述符,但我不知道如何读取例如根目录或其中的文件......
以下是我得到的一些内容
fd=open("/dev/sdb2", O_RDONLY);
lseek(fd, SuperSize, SEEK_SET);
read(fd, &super_block, SuperSize);
lseek(fd, 4096, SEEK_SET);
read(fd, &groupDesc, DescriptSize);
但下一部分似乎不起作用......
lseek(fd, super_block.s_log_block_size*groupDesc.bg_inode_table, SEEK_SET);
lseek(fd, InodeSize*(EXT2_ROOT_INO-1), SEEK_CUR);
read(fd, &root, InodeSize);
答案 0 :(得分:2)
我不完全清楚你在问什么,但是这里有:
要读取目录的内容,你基本上需要查看它的指针块,查看指针指定的磁盘上的相应块,并读取那里找到的内容以获取目录中文件的描述
这是一个非常高级别的建议,但其余部分实际上归结为系统结构本身的细节。
我建议你看看第4章: http://www.nongnu.org/ext2-doc/ext2.html
并确保您清楚了解您案件中涉及的具体结构,这应该在作业的某个地方为您提供......
答案 1 :(得分:1)
块组描述符是遍历ext文件系统所需的全部内容。超级块为您提供有关文件系统的一般信息,以及块组描述符(BGD)的位置。进入BGD后,您可以获得有关文件系统中每个块组的信息。
要查找根目录,您需要查看FIRST块组,并检查第二个inode;也可以从第一个inode的位置,+ sizeof(inode)到达。也可以称为inode编号2。反过来,第一个inode的位置可以在第一个块组的BGD条目中找到。
如果您需要更多信息,请与我们联系。