Linux文件系统分析之四(目录项)

下面顺着分析之三的思路,追溯到19号磁盘块,首先算出其偏移地址19*1024=19456即4C00处,这里的磁盘映象如下:
00004c00h: 01 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00004c10h: 01 00 2E 2E 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00004c20h: 02 00 62 69 6E 00 00 00 00 00 00 00 00 00 00 00 ; ..bin...........
00004c30h: 06 00 64 65 76 00 00 00 00 00 00 00 00 00 00 00 ; ..dev...........
00004c40h: 19 00 65 74 63 00 00 00 00 00 00 00 00 00 00 00 ; ..etc...........
00004c50h: 1E 00 75 73 72 00 00 00 00 00 00 00 00 00 00 00 ; ..usr...........
00004c60h: 3C 00 74 6D 70 00 00 00 00 00 00 00 00 00 00 00 ; <.tmp...........
00004c70h: 44 00 72 6F 6F 74 00 00 00 00 00 00 00 00 00 00 ; D.root..........
00004c80h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; 该块后面都为0

这里每一行,即16个字节,表示一个目录项。
struct dir_entry{
 unsigned short inode;
 char name[NAME_LEN];
};
第一个目录项,4c00那一行中,inode为01,表示该目录所在i节点为第1个i节点,name为"."就是所谓的当前目录了"/",这个目录i节点确实

就是第一个,即我们在分析之三中分析的那个。
第二个目录项,inode为01,name为".."表示上一层目录,目前已是根目录了,上层目录也是根目录,这就是为什么在根目录时执行cd ..命令

时结果还是根目录。
第三个目录项,inode为02,name为"bin",它就表示/bin目录了。
后面的几个同理可知其涵义。如此,这个文件系统根目录下面有.,..,bin,dev,etc,usr,tmp,root这8个目录了,每个目录占用16个字

节,总共就占用了128个字节了,这个数字和分析之三中的i_size为128刚好吻合。

下面我们顺藤摸瓜,看看这个root目录下面有些什么东西。root位于第44H=68个i节点,在磁盘映象中找到如下:
00001860h: ED 41 00 00 20 00 00 00 00 58 9C 29 00 02 4D 05 ; 鞟.. ....X?..M.
00001870h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
这个root目录的i节点显示其数据块在054DH=1357块中,即1357*1024=153400H处
00153400h: 44 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 ; D...............
00153410h: 01 00 2E 2E 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
除了两个.,..目录外这个目录下面什么也没有,可以看到.目录就是当前目录,其i节点为44,..指向根目录,而根目录i节点为01,和前面的

分析刚好吻合。
再看看usr目录下面有什么东西,usr位于第1EH=30个i节点,再磁盘映象中找到如下:
000013a0h: ED 41 00 00 50 00 00 00 80 79 73 29 00 05 95 01 ; 鞟..P...?ys)..?
000013b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
这个目录的i节点显示其数据块在0195H=405块中,即405*1024=414720=65400H处
00065400h: 1E 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00065410h: 01 00 2E 2E 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00065420h: 1F 00 62 69 6E 00 00 00 00 00 00 00 00 00 00 00 ; ..bin...........
00065430h: 3B 00 6C 6F 63 61 6C 00 00 00 00 00 00 00 00 00 ; ;.local.........
00065440h: 3D 00 72 6F 6F 74 00 00 00 00 00 00 00 00 00 00 ; =.root..........
显然比root目录多了bin,local,root目录了,下面往该文件系统中写一个文件,看看通过这里的分析方法是否能够找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值