Esempio didattico sul file system ext2 (2026)
Jump to navigation
Jump to search
truncate -s 128K disk /sbin/mkfs.ext2 disk hexdump -C disk documento con spiegazioni: https://dondi.lmu.build/share/os/ext2-walkthrough.pdf disco immagine di prova e tool sperimentale per facilitare la lettura: https://www.cs.unibo.it/~renzo/so/ext2test.tgz Il disco immagine è stato creato con questi comandi: mount /tmp/disk /mnt ls /mnt mkdir /mnt/dir echo ciao mare > /mnt/ciao ln /mnt/ciao /mnt/dir/ciao2 echo addio > /mnt/dir/bye ln -s /mnt/dir/bye /mnt/symlink umount /mnt bvi :set cm=32
Aiuti per la lettura del dump esadecimale:
Blocchi: 00000000 0 -> boot block 00000400 1 superblocco 00000800 2 blockgroup 00000C00 3 BitMap blocchi 00001000 4 BitMap inode 00001400 5 area inode (vedi oltre) ... 00002400 9 inizio area dati, il blocco 9 e' la directory / 00002800 A ... fino a 00005400 15 e' la dir lost+found 00005c00 17 dati file ciao (detto anche dir/ciao2) 00006000 18 dati file bye 0001fc00 7F directory dir Inode: 00001400 inode 1 (riservato) 00001500 inode 2 directory / 00001600 inode 3 00001e00 inode B lost+found 00001f00 inode C directory dir 00002000 inode D file ciao (dir/ciao2) 00002100 inode E file bye 00002200 inode F symlink
esempi di uso del tool e2exp:
dump di un blocco (con indirizzo hex): ./e2exp disk dump 0x400 00000400 10 00 00 00 80 00 00 00 06 00 00 00 66 00 00 00 |............f...| 00000410 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................| 00000420 00 20 00 00 00 20 00 00 10 00 00 00 71 54 d3 69 |. ... ......qT.i| 00000430 94 54 d3 69 01 00 ff ff 53 ef 01 00 01 00 00 00 |.T.i....S.......| .... dump di un blocco (con numero blocco): ./e2exp disk ddump 1 00000400 10 00 00 00 80 00 00 00 06 00 00 00 66 00 00 00 |............f...| 00000410 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................| 00000420 00 20 00 00 00 20 00 00 10 00 00 00 71 54 d3 69 |. ... ......qT.i| .... dump di alcuni campi del superblock: ./e2exp disk super 400 00000400 10 00 00 00 --> 16 s_inodes_count 00000404 80 00 00 00 --> 128 s_blocks_count 0000040c 66 00 00 00 --> 102 s_free_blocks_count 00000410 01 00 00 00 --> 1 s_free_inodes_count 00000414 01 00 00 00 --> 1 s_first_data_block 00000418 00 00 00 00 --> 0 s_log_block_size 00000438 53 ef --> 61267 s_magic dump di alcuni dati del blockgroup: ./e2exp disk group 800 00000800 03 00 00 00 --> 3 bg_block_bitmap 00000804 04 00 00 00 --> 4 bg_inode_bitmap 00000808 05 00 00 00 --> 5 bg_inode_table 0000080c 66 00 --> 102 bg_free_blocks_count 0000080e 01 00 --> 1 bg_free_inodes_count 00000810 03 00 --> 3 bg_used_dirs_count dump parziale bitmap allocazione blocchi: ./e2exp disk bmb c00 00000c00 ff ff ff 00 00 00 00 00 0000000000000000000000000000000000000000000000000000000000000000| 0000000000000000111111111111111122222222222222223333333333333333| 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef| XXXXXXXXXXXXXXXXXXXXXXXX---------------------------------------- 00000c08 00 00 00 00 00 00 00 c0 0000000000000000000000000000000000000000000000000000000000000000| 4444444444444444555555555555555566666666666666667777777777777777| 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef| --------------------------------------------------------XX------ dump parziale bitmap allocazione ino: ./e2exp disk bmi 1000 00001000 ff 7f ff ff ff ff ff ff 0000000000000000000000000000000000000000000000000000000000000000| 0000000000000000111111111111111122222222222222223333333333333333| 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef| XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 00001008 ff ff ff ff ff ff ff ff 0000000000000000000000000000000000000000000000000000000000000000| 4444444444444444555555555555555566666666666666667777777777777777| 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX dump di dati di un inode: ./e2exp disk inode 1400+2 00001500 ed 41 --> 4 (S_IFDIR) ---RWXR-XR-X 00001502 00 00 --> 0 i_uid 00001504 00 04 00 00 --> 1024 i_size 00001508 78 54 d3 69 --> 1775457400 i_atime 0000150c 8f 54 d3 69 --> 1775457423 i_ctime 00001510 8f 54 d3 69 --> 1775457423 i_mtime 00001518 00 00 --> 0 i_gid 0000151a 04 00 --> 4 i_links_count 0000151c 02 00 00 00 --> 2 i_blocks 00001528 09 00 00 00 --> [0] 9 i_block 0000152c 00 00 00 00 --> [1] 0 i_block 00001530 00 00 00 00 --> [2] 0 i_block 00001534 00 00 00 00 --> [3] 0 i_block 00001538 00 00 00 00 --> [4] 0 i_block 0000153c 00 00 00 00 --> [5] 0 i_block 00001540 00 00 00 00 --> [6] 0 i_block 00001544 00 00 00 00 --> [7] 0 i_block 00001548 00 00 00 00 --> [8] 0 i_block 0000154c 00 00 00 00 --> [9] 0 i_block 00001550 00 00 00 00 --> [10] 0 i_block 00001554 00 00 00 00 --> [11] 0 i_block 00001558 00 00 00 00 --> [12] 0 i_block 0000155c 00 00 00 00 --> [13] 0 i_block 00001560 00 00 00 00 --> [14] 0 i_block Scansione di una dir: ./e2exp disk dir 02400 00002400 02 00 00 00 --> 2 inode 00002404 0c 00 --> 12 rec_len (next 0x240c) 00002406 01 --> 1 name_len 00002407 02 --> 2 file_type 00002408 2e --> . ./e2exp disk dir 0240c 0000240c 02 00 00 00 --> 2 inode 00002410 0c 00 --> 12 rec_len (next 0x2418) 00002412 02 --> 2 name_len 00002413 02 --> 2 file_type 00002414 2e 2e --> .. ./e2exp disk dir 02418 00002418 0b 00 00 00 --> 11 inode 0000241c 14 00 --> 20 rec_len (next 0x242c) 0000241e 0a --> 10 name_len 0000241f 02 --> 2 file_type 00002420 6c 6f 73 74 2b 66 6f 75 6e 64 --> lost+found ./e2exp disk dir 0242c 0000242c 0c 00 00 00 --> 12 inode 00002430 0c 00 --> 12 rec_len (next 0x2438) 00002432 03 --> 3 name_len 00002433 02 --> 2 file_type 00002434 64 69 72 --> dir ./e2exp disk dir 02438 00002438 0d 00 00 00 --> 13 inode 0000243c 0c 00 --> 12 rec_len (next 0x2444) 0000243e 04 --> 4 name_len 0000243f 01 --> 1 file_type 00002440 63 69 61 6f --> ciao ./e2exp disk dir 02444 00002444 0f 00 00 00 --> 15 inode 00002448 bc 03 --> 956 rec_len (next 0x2800) 0000244a 07 --> 7 name_len 0000244b 07 --> 7 file_type 0000244c 73 79 6d 6c 69 6e 6b --> symlink