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

本文深入剖析Linux ROMFS文件系统的inode结构,解释next域的重要作用,如标识文件类型和权限,并探讨spec域在不同文件类型中的不同含义。此外,讨论size域如何表示文件大小,以及checksum域的校验和计算。

上一节

/* 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 /* 块设备文件 */

#define ROMFH_CHR 5 /* 字符设备文件 */

#define ROMFH_SCK 6 /* 套接字文件 */第4位表示文件是否有可执行权限。如果其他用户具有读写执行权限,并且文件是一个目录或者普通文件,则给文件加上可执行权限。硬链接文件不具有可执行权限。将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值