Use libguestfs for better disk handling in the test suite
Originally created by Tails on #5294 (Redmine)
Currently we use an ad-hoc
dd/@parted@ combo in the storage helper to
create disk images with formatted filesystems outside of Tails to later
be used within Tails (e.g. for the untrusted partitions feature). This
limits us in many ways:
- the disk can only be backed by a
rawimage, which consumes its full capacity in disk space on the host unlike e.g.
- we can only create filesystems supported by
partedwhich are very limited in number.
- acting directly on the block device (= image) if we want to use
LUKSwill probably get complicated permission-wise as the test suite runs as an unprivileged user. It gets impossible if we’d use image types other than
raw(unless something like
qemu-nbdis used to create virtual block devices of the images, which again will require privileges).
This forces us to use
udisks from inside Tails to query disk
usb_install.feature, but this should preferably be made
from the "outside" (i.e. no inside Tails, which is what we test).
In the same feature we also have to completely boot Tails again in the
only the expected files should persist on USB drive ... step, which is
really slow, and have proved to be quite error prone when changes are
made to the steps it uses (one usually only looks for step usage in
.feature files, and forgets to look inside step definition files).
libguestfs supports all of the above and is part of the libvirt "family" of tools (and deal with permissions in the same, sane way), and it has ruby bindings. It seems like a perfect fit.
Feature Branch: test/7822-untrusted-partitions