i節點即index node索引節點。接下來的是第五個磁盤塊了,480個i節點,每個i節點佔用32個字節,總共佔用480*32/1024=15個磁盤塊,現在再重新理清一下磁盤塊的關係了:
0塊:引導塊,每塊1024B
1塊:超級塊
2塊:i節點位圖
3塊:邏輯塊位圖
4...18:i節點區塊
19塊:數據塊,剛好和Linux文件系統分析之二中提到的數據塊開始於第19塊吻合。
下面分析第一個i節點,它位於塊號爲4的塊中,即是第五塊了。
00001000h: ED 41 00 00 80 00 00 00 9E AA 2E 84 00 08 13 00 ; 鞟..?..灙.?...
00001010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
爲分析這二進制中的數據涵義,下面列出i節點結構,這個i節點其實就是表示根目錄了。
struct d_inode{
unsigned short i_mode;
unsigned short i_uid;
unsigned long i_size;
unsigned long i_time;
unsigned char i_gid;
unsigned char i_nlinks;
unsigned short i_zone[9];
}
剛好是32個字節,
i_mode表示文件類型和屬性,這裏是41ED即0100.0001.1110.1101
見stat.h文件中的定義:
第一個四位0100表示這是一個目錄文件,確實如此,這就是根目錄。
接下來的三位000表示文件的屬性,執行或搜索時是否設置uid
最後面的九位1.1110.1101表示rwxrwxrwx了,這個用過linux的都知道
i_uid爲0000,表示這個文件的所有者的uid是0,通常root用戶的uid就是0
i_size爲00000080,表示這個文件的長度爲80H=128個字節,後面可以驗證。
i_time爲842EAA9E,表示這個文件的創建時間
i_gid爲00,表示該文件所有者所在group的id爲0
i_nlinks爲08,表示有8個文件目錄項指向該i節點
最後一個13H即19表示該文件的數據塊號,後面都是0,表示該文件在一個數據塊中存得下,不用更多的數據塊。
分析之四將追溯到這個i節點的數據塊即19塊,用以說明目錄項的數據結構。