我在閱讀ext2分區的超級塊時看到過一些問題,但我有些問題沒有在這些問題中得到解答。
這裏他們去:
1.使用read()從磁盤讀取到ext2_super_block結構中應該要求結構中的所有字段按照它們在代碼中呈現的順序進行編譯,以及必須在那裏沒有結構填充(或正確的結構填充)。這是如何保證的?
2. Linux在非特權級別嘗試從設備讀取時的行爲如何?讀取必須有一個初始偏移量(更準確地說,禁止訪問前N個字節),因爲我寫的程序僅在以root身份運行時纔有效。無論如何,Linux在這種情況下的表現如何?
3.我在哪裏可以找到有關使用ext2/ext3的良好文檔?到目前爲止,我一直在閱讀/usr/include/linux/ext2_fs.h和一些隨機文件,但沒有發現任何完整的東西。將ext2超級塊讀入ext2_super_block結構問題
我也想聽聽建議/下面的代碼,至今工作正常在我的機器上的修正(包括略去了,該程序打印「ef53」):
int main() {
int fd;
char boot[1024];
struct ext2_super_block super_block;
fd = open("/dev/sda1", O_RDONLY);
/* Reads the boot section and the superblock */
read(fd, boot, 1024);
read(fd, &super_block, sizeof(struct ext2_super_block));
/* Prints the Magic Number */
printf("%x\n", super_block.s_magic);
close(fd);
return 0;
}
在此先感謝。
ext2fs類似於UFS和FFS,所以你可以參考這些文檔(雖然ext2每塊總是有1個片段)。 – ninjalj 2011-08-02 22:36:16