Ext4_Disk_Layoutの「Finding an Inode」を見ていて気づいたところのめも。前回の日記でも同じようにやってたはず。。。
ブロックグループは以下の式で。
bg = (inode_num - 1) / sb->s_inodes_per_group.
test.txtの場合は。
(0xC - 1) / 0x2000
だから
masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B/2000" | bc 0
inodeのインデックスは
index = (inode_num - 1) % sb->s_inodes_per_group
なので
masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B%2000" | bc B
最終的なアドレスは
addr = index * sb->s_inode_size.
ということで、
masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B*100" | bc B00
あとはこのB00にinodeテーブルの開始アドレスを足せばOK。
そうするとブロックグループ0のinodeテーブルを見るのは間違っていなかったということで。
- 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/02/26
- メディア: 大型本
- 購入: 9人 クリック: 269回
- この商品を含むブログ (68件) を見る