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.