Tip: Run test scripts in guestfish

In guestfish ≥ 1.3.5 you can run arbitrary test scripts using the debug backdoor (if it is enabled in your build, which it is in all Fedora builds). This is a good way to use the libguestfs appliance for your own tests or experiments. You can already do this using virt-rescue, but this gives you a way to script it.

For example, here we use the mke2fs “-T” option as an experiment:

$ guestfish
><fs> sparse /tmp/test.img 100M
><fs> run
><fs> part-disk /dev/sda mbr
><fs> debug-upload -<<EOF /tmp/script.sh 0755
#!/bin/sh -
/sbin/mke2fs -T news /dev/${sd}a1
><fs> debug sh "/tmp/script.sh"
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
25600 inodes, 25599 blocks
1279 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=29360128
1 block group
32768 blocks per group, 32768 fragments per group
25600 inodes per group

Note that two environment variables are made available to “debug sh” scripts:

  • root is the path to where filesystems are mounted in the appliance, eg. “/sysroot”
  • sd is the prefix for block devices, usually expanding to either “sd”, “hd” or “vd” depending on the block device driver and appliance kernel in use

None of this is portable or stable. We can change the “debug” interface at any time, and it might be disabled in particular builds on libguestfs. You should add commands that you need to the libguestfs API — it’s easy!


Leave a comment

Filed under Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.