Taking snapshots of live virtual machines is much easier than with real hardware, because a virtual machine's devices are simulated in software where it is easier to capture 100% of the necessary state. More so than for real machines, snapshot functionality has become fundamental for virtual machines. It is a necessary feature for administrators who use virtual machines to quickly balance the loads of servers in data centers, and developers who use snapshots to restore test environments to pristine state. This paper describes SBUML, a system that extends the User-Mode Linux (UML) virtual machine to provide snapshot functionality. SBUML snapshots are more portable than those of other virtual machines, such as Xen, that take on more restrictive host requirements. SBUML also integrates several alternative and complementary techniques for optimizing the storage and transfer of multiple, multi-gigabyte virtual machine states. This makes SBUML an ideal platform for researching design trade-offs that can make snapshot techniques practical for cutting-edge applications such as sustainable systems, model checking, software demonstrations, and others.