linux文件系统镜像 结构,ROMFS文件系统分析[三]ROMFS映像文件结构

上一节

/* On disk inode */

struct romfs_inode {

__be32 next; /* low 4 bits see ROMFH_ */

__be32 spec;

__be32 size;

__be32 checksum;

char name[0];

};初看,似乎和其超级块结构一样,都有5个域。结构本身大小也一样(都为16字节)。实际上,在生成romfs映像的工具genromfs中,就是使用一个结构(struct romfsfh)来代表这两个结构的,之所以分开,是因为其代表的对象不同。romfs_super_block代表整个romfs文件系统,而romfs_inode只代表文件。虽然两个结构一样,但个个域的含义是不一样的。下面我们一一讲解。

1. next域该域是非常重要的一个字段。因为整个romfs映像中的文件头最少都对齐在16字节边界上,也就是说其在romfs映像文件中的偏移的低四位一定为0。所以我们正还利用这4位来做些什么。

romfs文件系统使用其低4位来表示文件类型和文件的权限,具体分配为:[0:2]共3位和起来表示文件类型,可见在romfs文件系统中,支持的文件类型有8中,具体有:

#define ROMFH_HRD 0 /* 硬链接文件 */

#define ROMFH_DIR 1 /* 目录文件 */

#define ROMFH_REG 2 /* 普通文件 */

#define ROMFH_LNK 3 /* 链接文件 */

#define ROMFH_BLK 4 /* 块设备文件 */

#defin

你可能感兴趣的:(linux文件系统镜像,结构)