mountin mounts disk images in an appropriate guest operating system, using its
kernel and filesystem drivers, then exposes it over 9p. So you get read/write
access to obscure filesystems using a well tested driver (in theory).
In future, it'll support archive formats and obscure data files too.
MAKE BACKUPS OF YOUR DISK IMAGES BEFORE USING THIS TOOL
Currently, there's:
- guests for Linux 2.6, Linux 6.12, NetBSD 10.0, Dragonfly BSD, PureDarwin, AROS, Haiku and Illumos. Architecture coverage varies depending on build host.
- 9P2000.U support via a 9p server a 9pfuse client.
- A huge collection of test data fixtures, with many custom mkfs and archive and compression tools.
- A Python-based, podman-isolated build system that runs rootless and dodges dependency hell.
- A Rust library to detect and extract filesystems from many image formats.
- Full archival backup sources, outputs and containers used to build everything, saved on archive.org for future historians.
Install:
podman,make,python3(+ venv + pip) to build.fuseto mount images with the 9p client.xzif you want to archive the lot.
Everything else is installed in containers, use the mountin module or
script to build stuff. It might take a while.
# install
make dev
source .venv/bin/activate
# list targets
mountin-build outputs
# pick one and build it
mountin-build build bin/qemu/x86_64-linux/6.12/boot/rootfs.img
# inspect or explicitly request cross-platform outputs
mountin-build outputs --output-arch i386
mountin-build outputs --output-platform x86_64-windows-gnu
mountin-build outputs --all-platforms
# record the catalogue artefacts currently present
mountin-build inventory
make help # for a full list of targets.
# make # build everything for this arch
# make all # to build everything possible. might take a while.Guest and transport selection, detection engine and launch layer are still
under construction, see the todo list. There's
./scripts for data recovery though.
Catalogue and format encyclopedia can be found is in the src/mountin/
tree - there's no html builder yet.
Guest operating systems are the smallest builds I could get running while
preserving broad support. Every entry below has been tested end to end; (ro)
means read-only. Absence of evidence, YMMV, expect occasional regressions etc.
| Guest | Tables / layouts | Filesystems |
|---|---|---|
| Linux 6.12 | MBR/DOS, GPT, BSD disklabel, Apple APM, Amiga RDB, Atari AHDI, Sun SPARC VTOC8, SGI DVH, LDM, Minix, UBI, Acorn, AIX, Ultrix, SYSV68, Rio Karma, OSF/1, HP-UX LIF, QNX4 PT, Plan 9, NetWare, Hybrid MBR, Protective MBR, OpenBSD, DragonFly, CP/M-86 | ext2/3/4, FAT12/16/32, exFAT, NTFS (ntfs3), ISO9660, UDF, HFS/HFS+, XFS, JFS, Btrfs, F2FS, bcachefs, EROFS, ReiserFS, Amiga OFS/FFS, Minix, V7, SysV, SquashFS, CramFS, RomFS, EFS, BeFS, HPFS, QNX4/6, ADFS, VxFS, OMFS, NILFS2, GFS2, BFS, JFFS2, UBIFS, High Sierra |
| Linux 2.6 | MBR/DOS, GPT, BSD disklabel, Apple APM, Amiga RDB, Atari AHDI, Sun SPARC VTOC8, SGI DVH, Minix, UBI, Acorn, AIX, Ultrix, SYSV68, OSF/1, HP-UX LIF, QNX4 PT, Plan 9, NetWare, Hybrid MBR, Protective MBR, OpenBSD, CP/M-86 | ext2/3/4, FAT12/16/32, ISO9660, UDF, HFS/HFS+, XFS, JFS, Btrfs, ReiserFS, Amiga OFS/FFS, Minix, V7, SquashFS, CramFS, RomFS, EFS, BeFS, HPFS, QNX4, ADFS, VxFS, OMFS, NILFS2, GFS2, OCFS2, BFS, JFFS2, High Sierra |
| NetBSD 10 | MBR/DOS, GPT, BSD disklabel, Apple APM, Amiga RDB, Atari AHDI, Hybrid MBR, Protective MBR | ext2/3 (ext3 via ext2), FAT12/16/32, ISO9660, UDF, HFS+, UFS/FFS, LFS, V7, EFS, Filecore |
| DragonFly 6.4 | MBR/DOS, GPT, BSD disklabel, Hybrid MBR, Protective MBR | ext2/3 (ext3 via ext2), FAT12/16/32, ISO9660, UDF (ro), UFS1, HAMMER/HAMMER2 |
| AROS i386 | MBR/DOS, GPT, Amiga RDB, Protective MBR | FAT12/16/32, ISO9660, Amiga OFS/FFS, SFS, PFS |
| Haiku x86_64 | MBR/DOS, GPT, Hybrid MBR, Protective MBR | ext2/3/4, FAT12/16/32, exFAT (ro), NTFS, ISO9660, UDF (ro), Btrfs (ro), ReiserFS (ro), BeFS |
| PureDarwin 17.4 | MBR/DOS, GPT, Apple APM, Protective MBR | HFS/HFS+/HFSX |
| 9front | MBR/DOS, Plan 9 | FAT12/16/32, ISO9660 (no Rock Ridge symlinks), PAQFS (ro), FlashFS, HJFS, GEFS, CWFS, V5/V6 (ro), UNIX/32V (ro), V10 (ro) |
| illumos x86_64 | MBR/DOS, GPT, Solaris x86 VTOC16 (inside MBR) | FAT12/16/32, ISO9660, UFS1 |
- Linux 6.12: UFS/FFS support is limited.
- Linux 2.6: NTFS (
ntfs), UFS/FFS, and SysV; SysV symlinks can crash the guest. - NetBSD 10: NTFS (
ntfs) and Amiga OFS/FFS (adosfs). - DragonFly 6.4: NTFS directory reads can panic the guest.