Ou você está falando sobre um FUSE filesystem (sistema de arquivos no espaço do usuário - Linus chama-os de brinquedos ) ou um kernel compilado personalizado OU squashfs. Squash não é exatamente como você descreve - você não pode simplesmente montar um tarball por exemplo - não com o VFS suportado pelo kernel, de qualquer forma - mas você pode certamente mksquash qualquer número de arquivos ou diretórios e monta o arquivo resultante somente leitura. Você tem a opção de xz, lzma, or gz compression. Squash é usado o tempo todo - se você já usou uma imagem live linux, as chances são muito boas, foi squashed.
Eu vou te dizer um truque que eu uso com squashfs. Eu gosto de criar um arquivo de imagem btrfs e usar btrfstune -S 1 para torná-lo um seed volume . Eu então coloquei essa imagem em um arquivo squashfs . A partir daí, posso mount -o loop the image.sfs e de dentro dessa mount -o loop a btrfs image.
O volume btrfs seed será inicialmente montado como read-only - o que é esperado, considerando que ele está contido em uma montagem de loop squashed . Mas se eu fizer então:
GB_tmp_loop=$(
fallocate -l $((1024*1024*1024)) /tmp/1GB_tmp.img &&
losetup -f --show $_
)
btrfs device add "$GB_tmp_loop" "${btrfs_seed=/path/to/btrfs_image_mount}"
umount "$btrfs_seed"
mount -o compress-force=lzo,autodefrag,rw "$GB_tmp_loop" "$btrfs_seed"
De repente, estou aproveitando a funcionalidade btrfs s copy-on-write e compactação automática de gravação AND squashfs s compactação superior tudo na RAM AND no kernel.