Vous pouvez le faire en combinant les périphériques de boucle et le mappeur de périphériques, grâce à "tout est un fichier". Mais avec une limitation :la taille du fichier ne peut pas être modifiée (car vous ne pouvez pas augmenter les périphériques de bloc en y écrivant). Donc, si vous souhaitez ajouter des données, vous devez créer un périphérique de bloc plus grand et écraser les données factices ajoutées.
# for testing, Create 4 files
echo foo | dd of=block0 cbs=512 conv=block
echo bar | dd of=block1 cbs=512 conv=block
echo bat | dd of=block2 cbs=512 conv=block
echo baz | dd of=block3 cbs=512 conv=block
# Create a loop device for each of the 4 files
losetup /dev/loop0 block0
losetup /dev/loop1 block1
losetup /dev/loop2 block2
losetup /dev/loop3 block3
# Create a device map named "test" using those loop devices
(
echo "0 1 linear /dev/loop0 0"
echo "1 1 linear /dev/loop1 0"
echo "2 1 linear /dev/loop2 0"
echo "3 1 linear /dev/loop3 0"
) | dmsetup create test
$EDITOR /dev/mapper/test # use overwrite mode only
Pour étendre le fichier, vous pouvez créer un gros fichier fragmenté et l'utiliser comme périphérique supplémentaire.