This project is able to mount an EXT2 disk image file and perform some common filesystem operations.
apt install build-essential libext2fs-dev
make && make run
Lists all commands. All commands are fully functional.
gid=0 uid=0> help
shell: ls mkdir rmdir create link unlink mkfs cat cp help cd disk inode blockbitmap inodebitmap rawblock pwd
Draws a file to screen. This works correctly with single, double, and triple indirect blocks.
Shows infomation about an INode.
gid=0 uid=0> inode 1
Size: 1024
Blocks: 2
Links: 7
Block[ 0]: 33
Block[ 1]: 0
Block[ 2]: 0
Block[ 3]: 0
Block[ 4]: 0
Block[ 5]: 0
Block[ 6]: 0
Block[ 7]: 0
Block[ 8]: 0
Block[ 9]: 0
Block[ 10]: 0
Block[ 11]: 0
Block[ 12]: 0
Block[ 13]: 0
Block[ 14]: 0
Mode: drwxr-xr-x
Shows which INodes are used.
gid=0 uid=0> inodebitmap
0 8 16 24 32 40 48 56
0 ▆▇▆▇▆▇▆▇ ▆▇▆▇▆▇▆▇ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
64 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
128 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
Shows which blocks are used at a glance.
gid=0 uid=0> blockbitmap
0 8 16 24 32 40 48 56
0 ▆▇▆▇▆▇▆▇ ▆▇▆▇▆▇▆▇ ▆▇▆▇▆▇▆▇ ▆▇▆▇▆▇▆▇ ▆▇▆▇▁▂▁▂ ▁▂▁▂▆
64 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
128 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
192 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
256 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
320 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
384 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
448 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
512 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
576 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
640 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
704 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
768 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
832 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
896 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
960 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1024 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1088 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1152 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1216 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1280 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1344 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂
1408 ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▂ ▁▂▁▂▁▂▁▇ ▆▇▆▇▆▇▆▇
Loads a block, then draws out its raw values in base 10.
gid=0 uid=0> rawblock 1
0: 184 1440 72 1402 170 1 0 0
8: 8192 8192 184 1587135586 1587135586 -65535 126803 1
16: 1587135586 0 0 1 0 11 128 56
24: 2 3 917695292 1011666672 587505342 1266331585 0 0
32: 0 0 1953393967 0 0 0 0 0
40: 0 0 0 0 0 0 0 0
48: 0 0 0 327680 0 0 0 0
56: 0 0 0 -838617390 1498404596 -719719248 566481809 1
64: 12 0 1587135586 0 0 0 0 0
72: 0 0 0 0 0 0 0 0
80: 0 0 0 0 0 0 0 0
88: 1 0 0 0 0 0 11 0
96: 0 0 0 0 0 0 0 0
104: 0 0 0 0 0 0 0 0
112: 0 0 0 0 0 0 0 0
120: 0 0 0 0 0 0 0 0
128: 0 0 0 0 0 0 0 0
136: 0 0 0 0 0 0 0 0
144: 0 0 0 0 0 0 0 0
152: 0 0 0 0 0 0 0 0
160: 0 0 0 0 0 0 0 0
168: 0 0 0 0 0 0 0 0
176: 0 0 0 0 0 0 0 0
184: 0 0 0 0 0 0 0 0
192: 0 0 0 0 0 0 0 0
200: 0 0 0 0 0 0 0 0
208: 0 0 0 0 0 0 0 0
216: 0 0 0 0 0 0 0 0
224: 0 0 0 0 0 0 0 0
232: 0 0 0 0 0 0 0 0
240: 0 0 0 0 0 0 0 0
248: 0 0 0 0 0 0 0 0