What is SBUML?

Programming ClassSBUML is an extension to User-mode Linux(UML) that can save complete Linux runtime states in mid-execution(including all hard disks, devices, processes, and kernel space). The same state can be restored at a later time on the same PC, or migrated to another PC. The states can be delta compressed to a few megabytes or less, making it practical to download running Linux machines from websites.

SBUML stands for Scrapbook for User-Mode Linux, because it builds on top of the established User-Mode Linux project, and because it provides a Computation Scrapbook that can save multiple Linux computation states persistently for various creative and useful applications.

SBUML is potentially useful for traditional checkpointing applications such as software suspend and resume (swsusp), fault tolerance, and process migration. Other applications in software model checking and programming tools are currently being researched. Scripting languages can control SBUML through its API, which makes snapshot programming possible. It is complete enough to do proof-of-concept demonstrations for many of these ideas.

With help from the open source community, SBUML will hopefully become practical for these ideas. Currently, the most practical application is for distributing pre-configured runtime state. This could be useful for demonstrating complete software installations or specific program features. For example, SBUML could be used to distribute example demonstrations of programming and debugging environments, which could be used in programming classes for almost any programming language that has been ported to Linux.

Core Architecture

SBUML represents both running Linux virtual machines and saved snapshots as Linux directories. Typically, the first parameter to a command is a machine directory and the second parameter, if any, is the snapshot directory. For example:

sbumlboot /tmp/mymachine will boot a new virtual machine and put all the machines resources in the directory /tmp/mymachine.
sbumlsave /tmp/mymachine /tmp/mysnapshot -f -c will freeze mymachine, copy all of its state to /tmp/mysnapshot-uniquesuffix, and then continue execution of mymachine.
sbumlrestore /tmp/acopy /tmp/mysnapshot -c will make a new virtual machine in /tmp/acopy with a copy of the state saved in /tmp/mysnapshot-uniquesuffix, and continue execution of the machine.

Because these are simply directories, normal Linux commands can be used on them. Here are just a few of the possibilities:

du -s /tmp/mymachine will show the amount of resources used by mymachine.
du -s /tmp/mysnapshot-uniquesuffix will show the amount of resources used by the snapshot.
tar czvf mysnapshot.tar.gz /tmp/mysnapshot-uniquesuffix will create a tar file that can be transfered to another computer using any means the user desires.

See these pages for more information on: