Add a writeable overlay on top of read-only files
$ nix run github:ErrorNoInternet/overmask -- --help
$ git clone https://github.com/ErrorNoInternet/overmask
$ cd overmask
$ cargo install --path .
# required for the virtual block device (/dev/nbd*)
$ sudo modprobe nbd
# create (empty) files to store data in
$ touch overlay_file mask_file
# device mode:
# read from /dev/sda, but redirect all writes to overlay_file and
# use mask_file to keep track of what has been written so that
# future reads would read from overlay_file instead of /dev/sda
$ overmask -s /dev/sda -o overlay_file -m mask_file dev
# you can now send arbitrary write commands to the virtual block device
$ sudo dd if=/dev/zero of=/dev/nbd0
# and all the zeros would be in overlay_file instead of /dev/sda