=head1 NAME libguestfs-test-tool - Diagnostics for libguestfs =head1 SYNOPSIS libguestfs-test-tool [--options] =head1 DESCRIPTION libguestfs-test-tool is a test program shipped with libguestfs to allow you to check basic libguestfs functionality is working. This is needed because libguestfs occasionally breaks for reasons beyond our control: usually because of changes in the underlying qemu or kernel packages, or the host environment. If you suspect a problem in libguestfs, then just run: libguestfs-test-tool It will print lots of diagnostic messages. If it runs to completion successfully, you will see this near the end: ===== TEST FINISHED OK ===== and the test tool will exit with code 0. If it fails (and/or exits with non-zero error code), please paste the I output of the test tool into a bug report. More information about reporting bugs can be found on the L website. =head1 OPTIONS =over 4 =item B<--help> Display short usage information and exit. =item B<--qemu> qemu_binary If you have downloaded another qemu binary, point this option at the full path of the binary to try it. =item B<--qemudir> qemu_source_dir If you have compiled qemu from source, point this option at the source directory to try it. =item B<-t> N =item B<--timeout> N Set the launch timeout to C seconds. The default is 600 seconds (10 minutes) which does not usually need to be adjusted. =item B<-V> =item B<--version> Display the libguestfs version number and exit. =back =head1 TRYING OUT A DIFFERENT VERSION OF QEMU If you have compiled another version of qemu from source and would like to try that, then you can use the I<--qemudir> option to point to the qemu source directory. If you have downloaded a qemu binary from somewhere, use the I<--qemu> option to point to the binary. Note when using these options, you can ignore the business of qemu wrapper scripts (L), since libguestfs-test-tool writes a wrapper script for you if one is needed. =head1 TRYING OUT A DIFFERENT KERNEL You can tell supermin to try a different kernel. You do this by setting the environment variables C, C and/or C. Refer to L for further information. =head1 TRYING OUT A DIFFERENT VERSION OF LIBVIRT To find out which backend is the default in your libguestfs package, do: unset LIBGUESTFS_BACKEND guestfish get-backend If you are using the libvirt backend, then you can try out a different (eg. upstream) version of libvirt by running these commands (I as root): killall libvirtd lt-libvirtd ~/path/to/libvirt/run libguestfs-test-tool The first command kills any session C process(es) that may be running on the machine. The second command uses libvirt’s C script (in the top-level libvirt build directory) to set some environment variables so that the alternate version of libvirt is used to run the program. =head1 TRYING OUT WITH / WITHOUT LIBVIRT To find out which backend is the default in your libguestfs package, do: unset LIBGUESTFS_BACKEND guestfish get-backend If you are using the libvirt backend, you can try without (ie. libguestfs directly launching qemu) by doing: export LIBGUESTFS_BACKEND=direct Or if you are using the default (direct) backend, then you can try libvirt: export LIBGUESTFS_BACKEND=libvirt or with libvirt and a specific L: export LIBGUESTFS_BACKEND=libvirt:qemu:///session =head1 TRYING OUT DIFFERENT SELINUX SETTINGS To find out which backend is the default in your libguestfs package, do: unset LIBGUESTFS_BACKEND guestfish get-backend To find out if SELinux is being used, do: getenforce If you are using libvirt, SELinux and sVirt, then you can try to see if changing SELinux to "permissive" mode makes any difference. Use this command as root: setenforce Permissive If this makes a difference, look in the audit logs for recent failures ("AVCs"): ausearch -m avc -ts recent You can convert AVCs into suggested SELinux policy rules using tools like L. For more information, see the "Security Enhanced Linux User Guide". To re-enable SELinux and sVirt, do: setenforce Enforcing =head1 SELF-DIAGNOSIS Refer to L to understand the messages produced by libguestfs-test-tool and/or possible errors. =head1 EXIT STATUS libguestfs-test-tool returns I<0> if the tests completed without error, or I<1> if there was an error. =head1 ENVIRONMENT VARIABLES For the full list of environment variables which may affect libguestfs, please see the L manual page. =head1 SEE ALSO L, L, L. =head1 AUTHORS Richard W.M. Jones (C) =head1 COPYRIGHT Copyright (C) 2009-2025 Red Hat Inc.