<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Virt Tools Blog Planet</title>
	<link rel="self" href="http://planet.virt-tools.org/atom.xml"/>
	<link href="http://planet.virt-tools.org/"/>
	<id>http://planet.virt-tools.org/atom.xml</id>
	<updated>2012-05-19T09:11:06+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">qemu-img diff</title>
		<link href="http://rwmj.wordpress.com/2012/05/18/qemu-img-diff/"/>
		<id>http://rwmj.wordpress.com/?p=3966</id>
		<updated>2012-05-18T10:54:27+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://lists.nongnu.org/archive/html/qemu-devel/2012-05/msg02484.html&quot;&gt;This patch I posted yesterday needs some reviews!&lt;/a&gt;  It adds a qemu-img &amp;#8220;diff&amp;#8221; subcommand.  One use for this is for when you&amp;#8217;ve copied/cloned a guest, and you want to go back to a thin-provisioned guest over a base image.&lt;/p&gt;
&lt;p&gt;To show it in action, we can use &lt;a href=&quot;http://libguestfs.org/virt-ls.1.html&quot;&gt;virt-ls&lt;/a&gt;.  Firstly I&amp;#8217;ll start with a Windows 2003 guest which I&amp;#8217;ll copy:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;xzcat /mnt/media/guest-library/win2003.img.xz &amp;gt; base.img&lt;/b&gt;
$ &lt;b&gt;cp base.img copy.img&lt;/b&gt;
&lt;/pre&gt;
&lt;p&gt;At this point, I boot &lt;code&gt;copy.img&lt;/code&gt;, log in and install the Windows updates, just so the guest has some changes over the base image.&lt;/p&gt;
&lt;p&gt;Now I have two 6 GB files**, but I know that they&amp;#8217;re very similar to each other:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;ll -h&lt;/b&gt;
total 6.9G
-rw-rw-r--. 1 rjones rjones 6.0G May 18 11:26 base.img
-rw-rw-r--. 1 rjones rjones 6.0G May 18 11:42 copy.img
&lt;/pre&gt;
&lt;p&gt;I could save some space here using qemu-img diff!&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;~/d/qemu/qemu-img diff -b base.img copy.img diff.qcow2&lt;/b&gt;
Formatting 'diff.qcow2', fmt=qcow2 size=6442450944 backing_file='base.img' encryption=off cluster_size=65536 
$ &lt;b&gt;ll -h&lt;/b&gt;
total 7.2G
-rw-rw-r--. 1 rjones rjones 6.0G May 18 11:26 base.img
&lt;s&gt;-rw-rw-r--. 1 rjones rjones 6.0G May 18 11:42 copy.img&lt;/s&gt;
-rw-r--r--. 1 rjones rjones 308M May 18 11:44 diff.qcow2
&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;copy.img&lt;/code&gt; is no longer needed because &lt;code&gt;base.img&lt;/code&gt; + &lt;code&gt;diff.qcow2&lt;/code&gt; contains the same data.  Before we delete it, let&amp;#8217;s check that using &lt;code&gt;virt-ls&lt;/code&gt;*:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;virt-ls -lR -a base.img --checksum / &amp;gt; base.files&lt;/b&gt;
$ &lt;b&gt;virt-ls -lR -a copy.img --checksum / &amp;gt; copy.files&lt;/b&gt;
$ &lt;b&gt;virt-ls -lR -a diff.qcow2 --checksum / &amp;gt; diff.files&lt;/b&gt;
&lt;/pre&gt;
&lt;p&gt;Note we expect that &amp;#8220;base&amp;#8221; is different from the other two, but &amp;#8220;copy&amp;#8221; and &amp;#8220;diff&amp;#8221; should be identical if all went well:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;md5sum *.files&lt;/b&gt;
bef46650ff6f2d3f22f562c2a820230f  base.files
fc723e43a9c16bffd6a9fb7dfd701752  copy.files
fc723e43a9c16bffd6a9fb7dfd701752  diff.files
&lt;/pre&gt;
&lt;p&gt;So we can now in confidence delete &lt;code&gt;copy.img&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;* = Note &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=822490&quot;&gt;there is a bug&lt;/a&gt; which stops &lt;code&gt;--checksum&lt;/code&gt; from working in released versions of virt-ls.&lt;/p&gt;
&lt;p&gt;** = The eagle-eyed will spot that I don&amp;#8217;t in fact have two 6 GB files, because cp has cleverly made the copy sparse,  Nevertheless qemu-img diff still saves space.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3966/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3966/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3966&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Tip: Using mount-local API from C</title>
		<link href="http://rwmj.wordpress.com/2012/05/14/tip-using-mount-local-api-from-c/"/>
		<id>http://rwmj.wordpress.com/?p=3958</id>
		<updated>2012-05-14T11:22:36+00:00</updated>
		<content type="html">&lt;p&gt;Previously if you wanted to mount a disk image on the host from &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs&lt;/a&gt;, you had to use a separate program called &lt;a href=&quot;http://libguestfs.org/guestmount.1.html&quot;&gt;guestmount&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rwmj.wordpress.com/2012/03/29/libguestfs-mount-local/&quot;&gt;A couple of months ago&lt;/a&gt;, we &lt;a href=&quot;http://libguestfs.org/guestfs.3.html#mount_local&quot;&gt;added FUSE support directly into the libguestfs API&lt;/a&gt;, and rewrote guestmount to use it.  This also means you can use FUSE from your own libguestfs programs.&lt;/p&gt;
&lt;p&gt;Yesterday I wrote a &lt;a href=&quot;https://github.com/libguestfs/libguestfs/blob/master/examples/mount_local.c&quot;&gt;short example of using the mount-local API from C&lt;/a&gt;.  This program creates a new disk image, formats it etc using libguestfs, then gives you a subshell so you can copy your own files, directories etc. in.  When you quit the subshell, the disk image is synced and closed, and you end up with a virtual disk image containing all the files you just added.  (Nothing that you couldn&amp;#8217;t &lt;a href=&quot;http://libguestfs.org/virt-make-fs.1.html&quot;&gt;easily do before&lt;/a&gt;, but a nice little demonstration anyway).&lt;/p&gt;
&lt;p&gt;Here it is in use:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;gcc -Wall &lt;a href=&quot;https://github.com/libguestfs/libguestfs/blob/master/examples/mount_local.c&quot;&gt;mount_local.c&lt;/a&gt; -o mount_local -lguestfs&lt;/b&gt;
$ &lt;b&gt;./mount_local /tmp/test.img&lt;/b&gt;

This is the 'mount-local' demonstration program.  Follow the
instructions on screen.

Creating and formatting the disk image, please wait a moment ...

The _current directory_ is a FUSE filesystem backed by the disk
image which is managed by libguestfs.  Any files or directories
you copy into here (up to 512 MB) will be saved into the disk
image.  You can also delete files, create certain special files
and so on.

When you have finished adding files, hit ^D or exit to exit the
shell and return to the mount-local program.

mount-local-shell&amp;gt; &lt;b&gt;ls&lt;/b&gt;
lost+found  PUT_FILES_AND_DIRECTORIES_HERE
&lt;/pre&gt;
&lt;p&gt;From the subshell, I copy in some files:&lt;/p&gt;
&lt;pre&gt;
mount-local-shell&amp;gt; &lt;b&gt;cp -a /usr/share/doc/libguestfs-devel-1.17.40/ .&lt;/b&gt;
mount-local-shell&amp;gt; &lt;b&gt;ls&lt;/b&gt;
libguestfs-devel-1.17.40  lost+found  PUT_FILES_AND_DIRECTORIES_HERE
mount-local-shell&amp;gt; &lt;b&gt;ls libguestfs-devel-1.17.40/&lt;/b&gt;
AUTHORS			       example-ubuntu.xml
BUGS			       example-windows-2003-x64-cd.xml
ChangeLog		       example-windows-2003-x86-cd.xml
copy_over.c		       example-windows.xml
create_disk.c		       example-windows-xp-cd.xml
display_icon.c		       HACKING
example-debian-netinst-cd.xml  inspect_vm.c
example-debian.xml	       README
example-fedora-dvd.xml	       RELEASE-NOTES
example-fedora-netinst-cd.xml  ROADMAP
example-fedora.xml	       TODO
example-rhel-6-dvd.xml	       virt-dhcp-address.c
example-rhel-6-netinst-cd.xml  virt-inspector.rng
example-ubuntu-live-cd.xml
&lt;/pre&gt;
&lt;p&gt;After copying in my files, I exit from the subshell:&lt;/p&gt;
&lt;pre&gt;
mount-local-shell&amp;gt; &lt;b&gt;exit&lt;/b&gt;

Any files or directories that you copied in have been saved into
the disk image called '/tmp/test.img'.

Try opening the disk image with guestfish to see those files:

  guestfish -a /tmp/test.img -m /dev/sda1
&lt;/pre&gt;
&lt;p&gt;Here is the disk image that was created (note it is sparse, so it&amp;#8217;s not really so large as it appears):&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;ll /tmp/test.img&lt;/b&gt;
-rw-r--r--. 1 rjones rjones 536870912 May 14 12:03 /tmp/test.img
$ &lt;b&gt;du -sh /tmp/test.img&lt;/b&gt;
18M	/tmp/test.img
&lt;/pre&gt;
&lt;p&gt;We can use guestfish to look inside it:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;guestfish -a /tmp/test.img -m /dev/sda1&lt;/b&gt;

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;ll /&lt;/b&gt;
total 18
drwxr-xr-x  4 root root  1024 May 14 12:03 .
drwxr-xr-x 23 1000 1000  4096 May 14 12:18 ..
-rw-r--r--  1 root root     0 May 14 12:03 PUT_FILES_AND_DIRECTORIES_HERE
drwxr-xr-x  2 root root  1024 May 14 08:37 libguestfs-devel-1.17.40
drwx------  2 root root 12288 May 14 12:03 lost+found
&lt;/pre&gt;
&lt;p&gt;Download the test program here: &lt;a href=&quot;https://github.com/libguestfs/libguestfs/blob/master/examples/mount_local.c&quot;&gt;https://github.com/libguestfs/libguestfs/blob/master/examples/mount_local.c&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3958/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3958/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3958&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">gettextize — replaced!</title>
		<link href="http://rwmj.wordpress.com/2012/05/01/gettextize-replaced/"/>
		<id>http://rwmj.wordpress.com/?p=3938</id>
		<updated>2012-05-01T14:14:59+00:00</updated>
		<content type="html">&lt;p&gt;As discussed here &lt;a href=&quot;https://rwmj.wordpress.com/2012/04/13/genuine-fragment-from-rhel-spec-file/&quot;&gt;previously&lt;/a&gt;, gettextize is a particularly sociopathic piece of software that causes unncessary confusion when building any software that it touches.&lt;/p&gt;
&lt;p&gt;Well, in &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs&lt;/a&gt; we finally &lt;a href=&quot;https://github.com/libguestfs/libguestfs/commit/6aa95e87c1f259589ff9c7812707e4b30b8f6fd7&quot;&gt;got rid&lt;/a&gt; of &lt;a href=&quot;https://github.com/libguestfs/libguestfs/commit/75514ab57a06e534f26698fe1725ca29b966c3ad&quot;&gt;it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The replacement, a simple Makefile.am, is 110 lines long, which is considerably smaller than the maze of m4 macros and shell scripts that it replaced.  It also runs much faster because make can compile the PO files in parallel.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3938/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3938/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3938&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The libguestfs FAQ has been rewritten and updated</title>
		<link href="http://rwmj.wordpress.com/2012/05/01/the-libguestfs-faq-has-been-rewritten-and-updated/"/>
		<id>http://rwmj.wordpress.com/?p=3936</id>
		<updated>2012-05-01T14:09:03+00:00</updated>
		<content type="html">&lt;p&gt;The updated FAQ is here:&lt;br /&gt;
&lt;a href=&quot;http://libguestfs.org/guestfs-faq.1.html&quot;&gt;libguestfs Frequently Asked Questions&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3936/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3936/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3936&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">virt-rescue –scratch</title>
		<link href="http://rwmj.wordpress.com/2012/04/26/virt-rescue-scratch/"/>
		<id>http://rwmj.wordpress.com/?p=3932</id>
		<updated>2012-04-26T12:08:39+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://libguestfs.org/virt-rescue.1.html&quot;&gt;virt-rescue&lt;/a&gt; is a useful &amp;#8220;rescue tool&amp;#8221; (like a rescue CD) for virtual machines.&lt;/p&gt;
&lt;p&gt;New in &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs &amp;ge; 1.17.36&lt;/a&gt; is the &lt;code&gt;virt-rescue --scratch[=N]&lt;/code&gt; option which lets you create scratch disks to play with.&lt;/p&gt;
&lt;p&gt;Firstly it&amp;#8217;s useful for playing around with Linux utilities that you might not normally get to use, such as mdadm and btrfs.  For example, suppose you want to try spanning a btrfs filesystem over 4 devices.  This is now simple and you don&amp;#8217;t even need root:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;virt-rescue --scratch=4&lt;/b&gt;
&amp;gt;&amp;lt;rescue&amp;gt; &lt;b&gt;mkfs.btrfs /dev/vda /dev/vdb /dev/vdc /dev/vdd&lt;/b&gt;
&amp;gt;&amp;lt;rescue&amp;gt; &lt;b&gt;mount /dev/vda /sysroot&lt;/b&gt;
&amp;gt;&amp;lt;rescue&amp;gt; &lt;b&gt;btrfs filesystem show&lt;/b&gt;
Label: none  uuid: da1693d6-a89f-4cb6-8405-d277869e289b
	Total devices 4 FS bytes used 28.00KB
	devid    1 size 10.00GB used 2.02GB path /dev/vda
	devid    2 size 10.00GB used 2.00GB path /dev/vdb
	devid    3 size 10.00GB used 1.01GB path /dev/vdc
	devid    4 size 10.00GB used 1.01GB path /dev/vdd
&lt;/pre&gt;
&lt;p&gt;Secondly it&amp;#8217;s a way to get a second temporary disk attached to an ordinary guest while you&amp;#8217;re rescuing it, for example if you need to temporary copy some data off the guest while you&amp;#8217;re fixing it.&lt;/p&gt;
&lt;pre&gt;
# &lt;b&gt;virt-rescue -d Fedora16 --scratch&lt;/b&gt;
&amp;gt;&amp;lt;rescue&amp;gt; &lt;b&gt;fdisk /dev/vdb&lt;/b&gt;
&lt;i&gt;&lt;small&gt;(use fdisk and mkfs to partition the scratch disk
and then use it for temporary data)&lt;/small&gt;&lt;/i&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3932/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3932/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3932&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Using libguestfs live without libvirt</title>
		<link href="http://rwmj.wordpress.com/2012/04/25/using-libguestfs-live-without-libvirt/"/>
		<id>http://rwmj.wordpress.com/?p=3929</id>
		<updated>2012-04-25T16:20:28+00:00</updated>
		<content type="html">&lt;p&gt;You should use &lt;a href=&quot;https://rwmj.wordpress.com/2011/07/06/libguestfs-live/&quot;&gt;libguestfs live with libvirt&lt;/a&gt; because it takes the pain out of it.&lt;/p&gt;
&lt;p&gt;However if for some reason you don&amp;#8217;t want to use libvirt, here is how to use it directly.  Note normally you should use libvirt and &lt;b&gt;you do not need to do any of this!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;(1) Your guest needs to have &lt;code&gt;guestfsd&amp;nbsp;-r&lt;/code&gt; installed and running.  [Normally you just install &lt;code&gt;libguestfs-live-service&lt;/code&gt; which does everything necessary]&lt;/p&gt;
&lt;p&gt;(2) You need to start up qemu (the guest) with these special options, or the equivalent.  [Normally you just set this up through libvirt]&lt;/p&gt;
&lt;pre&gt;
-chardev pty,id=charserial0
-device isa-serial,chardev=charserial0,id=serial0
-chardev socket,id=charchannel0,path=/tmp/socket,server,nowait
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.libguestfs.channel.0
&lt;/pre&gt;
&lt;p&gt;(3) Start guestfish and use the &lt;code&gt;attach-method&lt;/code&gt; command to point to the socket.  [Normally using '-d Guest --live' does all this automatically for you by getting the necessary information out of libvirt]&lt;/p&gt;
&lt;pre&gt;
$ guestfish
&amp;gt;&amp;lt;fs&amp;gt; attach-method unix:/tmp/socket
&amp;gt;&amp;lt;fs&amp;gt; run
&amp;gt;&amp;lt;fs&amp;gt; ll /
&lt;i&gt;[use libguestfs command as normal here]&lt;/i&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3929/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3929/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3929&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Using virt-sparsify and xz, we can really compress VMs for storage</title>
		<link href="http://rwmj.wordpress.com/2012/04/16/using-virt-sparsify-and-xz-we-can-really-compress-vms-for-storage/"/>
		<id>http://rwmj.wordpress.com/?p=3914</id>
		<updated>2012-04-16T22:40:27+00:00</updated>
		<content type="html">&lt;pre&gt;
17G	debian5x64.img.orig
&lt;/pre&gt;
&lt;p&gt;The original image has about 4.7 GB of data, plus a large swap partition, according to &lt;a href=&quot;http://libguestfs.org/virt-df.1.html&quot;&gt;virt-df&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
$ virt-df -a debian5x64.img.orig -h
Filesystem                        Size       Used  Available  Use%
debian5x64.img.orig:/dev/sda1     322M        66M       239M   21%
debian5x64.img.orig:/dev/debian5x64.home.annexia.org/home
                                  3.4G       359M       2.9G   11%
debian5x64.img.orig:/dev/debian5x64.home.annexia.org/root
                                  320M       301M       2.4M   95%
debian5x64.img.orig:/dev/debian5x64.home.annexia.org/tmp
                                  300M       8.2M       276M    3%
debian5x64.img.orig:/dev/debian5x64.home.annexia.org/usr
                                  3.4G       2.0G       1.2G   60%
debian5x64.img.orig:/dev/debian5x64.home.annexia.org/var
                                  2.6G       2.0G       536M   76%
&lt;/pre&gt;
&lt;p&gt;Using &lt;a href=&quot;http://libguestfs.org/virt-sparsify.1.html&quot;&gt;virt-sparsify&lt;/a&gt;, all unused space in the image is made sparse.  The most recent version can sparsify swap partitions too:&lt;/p&gt;
&lt;pre&gt;
4.6G	debian5x64.img
&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;xz --best -T 0&lt;/code&gt; reduces the final image to under a gigabyte:&lt;/p&gt;
&lt;pre&gt;
971M	debian5x64.img.xz
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3914/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3914/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3914&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Tip: Detecting guest activity: three methods</title>
		<link href="http://rwmj.wordpress.com/2012/04/03/tip-detecting-guest-activity-three-methods/"/>
		<id>http://rwmj.wordpress.com/?p=3889</id>
		<updated>2012-04-03T20:06:21+00:00</updated>
		<content type="html">&lt;p&gt;&lt;b&gt;(1) Is the guest generating disk and network activity (a.k.a are the lights flashing)?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t have nice code for this, but you can &lt;a href=&quot;https://github.com/clalancette/oz/blob/73a6c5f56755744822e16706659fa19a3bc823c6/oz/Guest.py#L568&quot;&gt;see the technique that Oz uses here&lt;/a&gt;.  Oz uses the libvirt monitoring APIs to look for &lt;a href=&quot;http://people.redhat.com/~rjones/virt-top/faq.html#stats&quot;&gt;disk and network activity&lt;/a&gt;, and signals when it hasn&amp;#8217;t seen any after a certain timeout period.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(2) When was the last time a user logged in?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If this is the sort of &amp;#8220;activity&amp;#8221; you&amp;#8217;re after, then you can use &lt;a href=&quot;http://libguestfs.org/virt-cat.1.html#examples&quot;&gt;virt-cat&lt;/a&gt; on Linux, or &lt;a href=&quot;http://libguestfs.org/virt-win-reg.1.html&quot;&gt;virt-win-reg [sorry, no actual example yet]&lt;/a&gt; on Windows.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(3) What was the last file updated in a guest?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Finally, if you&amp;#8217;re interested in the newest file updated in a guest, see &lt;a href=&quot;http://rwmj.wordpress.com/2012/02/27/using-libguestfs-to-find-out-why-a-windows-guest-was-hanging/&quot;&gt;this technique&lt;/a&gt; which will work for any Linux or Windows guest.&lt;/p&gt;
&lt;p&gt;Are there other kinds of &amp;#8220;activity&amp;#8221; that it&amp;#8217;s interesting to find from guests?&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3889/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3889/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3889&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs 1.16.15 preview packages for RHEL 6.2</title>
		<link href="http://rwmj.wordpress.com/2012/04/03/libguestfs-1-16-15-preview-packages-for-rhel-6-2/"/>
		<id>http://rwmj.wordpress.com/?p=3887</id>
		<updated>2012-04-03T17:10:17+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve updated the &lt;a href=&quot;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/&quot;&gt;libguestfs preview packages for RHEL 6.2/6.3&lt;/a&gt;.  These contain many new features and bug fixes compared to RHEL 6.2.&lt;/p&gt;
&lt;p&gt;An easy way to use these packages is to run this command, which creates a yum repository pointing to the preview packages:&lt;/p&gt;
&lt;pre&gt;
# &lt;b&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/yum.repos.d/libguestfs-RHEL-6.3-preview.repo&lt;/b&gt;
[libguestfs-RHEL-6.3-preview]
name=libguestfs RHEL 6.3 preview - x86_64
baseurl=http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/
enabled=1
gpgcheck=0
EOF
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3887/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3887/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3887&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Next week: Fedora 17 virtualization test day</title>
		<link href="http://rwmj.wordpress.com/2012/04/03/next-week-fedora-17-virtualization-test-day/"/>
		<id>http://rwmj.wordpress.com/?p=3885</id>
		<updated>2012-04-03T13:43:52+00:00</updated>
		<content type="html">&lt;p&gt;Thursday 2012-04-12 is &lt;a href=&quot;https://fedoraproject.org/wiki/Test_Day:2012-04-12_Virtualization_Test_Day&quot;&gt;Fedora 17 virtualization test day&lt;/a&gt; and you are warmly invited.&lt;/p&gt;
&lt;p&gt;You will need: &lt;a href=&quot;http://fedoraproject.org/get-prerelease&quot;&gt;A Fedora 17 pre-release version installed&lt;/a&gt; and fully updated, and at least one guest.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fedoraproject.org/wiki/Test_Day:2012-04-12_libguestfs&quot;&gt;Here are the libguestfs tests&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3885/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3885/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3885&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs: mount local</title>
		<link href="http://rwmj.wordpress.com/2012/03/29/libguestfs-mount-local/"/>
		<id>http://rwmj.wordpress.com/?p=3870</id>
		<updated>2012-03-29T19:48:00+00:00</updated>
		<content type="html">&lt;p&gt;New in &lt;a href=&quot;http://libguestfs.org/&quot;&gt;libguestfs&lt;/a&gt; &amp;ge; 1.17.22 is the ability to mount the guest filesystem on a local mountpoint.  Well, you can already do that using &lt;a href=&quot;http://libguestfs.org/guestmount.1.html&quot;&gt;guestmount&lt;/a&gt;, but the new thing is that you can do it &lt;a href=&quot;http://libguestfs.org/guestfs.3.html#mount_local&quot;&gt;from the API (from any language)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is an example using guestfish:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;guestfish --ro -a /dev/vg_pin/F16x64 -i&lt;/b&gt;
 
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

Operating system: Fedora release 16 (Verne)
/dev/vg_f16x64/lv_root mounted on /
/dev/vda2 mounted on /boot

&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;! mkdir /tmp/mnt&lt;/b&gt; &lt;small&gt;&lt;i&gt;# creates a local directory&lt;/i&gt;&lt;/small&gt;
&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;mount-local /tmp/mnt readonly:true&lt;/b&gt;
&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;mount-local-run&lt;/b&gt;
&lt;small&gt;&lt;i&gt;# the errors come from a GNOME daemon that
# looks at all new mountpoints&lt;/i&gt;&lt;/small&gt;
libguestfs: error: lstat: /.Trash: No such file or directory
libguestfs: error: lstat: /.Trash-500: No such file or directory
&lt;/pre&gt;
&lt;p&gt;Over in another terminal, we can see the filesystem mounted on the local directory /tmp/mnt:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;ls /tmp/mnt&lt;/b&gt;
bin   dev  home  lib64       media  opt   root  sbin     srv  tmp  var
boot  etc  lib   lost+found  mnt    proc  run   selinux  sys  usr
$ &lt;b&gt;cat /tmp/mnt/etc/redhat-release&lt;/b&gt;
Fedora release 16 (Verne)
&lt;/pre&gt;
&lt;p&gt;Unmounting the filesystem causes the guestfish &lt;code&gt;mount-local-run&lt;/code&gt; command to return (since that command was actually serving the FUSE requests from the kernel).&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;fusermount -u /tmp/mnt&lt;/b&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3870/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3870/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3870&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">New in virt-sparsify</title>
		<link href="http://rwmj.wordpress.com/2012/03/15/new-in-virt-sparsify/"/>
		<id>http://rwmj.wordpress.com/?p=3867</id>
		<updated>2012-03-15T19:12:47+00:00</updated>
		<content type="html">&lt;p&gt;New in &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs 1.17.18&lt;/a&gt;, &lt;a href=&quot;http://libguestfs.org/virt-sparsify.1.html&quot;&gt;virt-sparsify&lt;/a&gt; can now find and sparsify even more space in your guests &amp;#8212; Linux swap partitions are detected and zeroed (though not if they contain hibernation data).&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--zero&lt;/code&gt; option can be used to remove unwanted partitions.&lt;/p&gt;
&lt;p&gt;The new version is also faster and uses less temporary space during the first stage.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3867/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3867/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3867&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs RHEL 6.3 yum repo</title>
		<link href="http://rwmj.wordpress.com/2012/03/14/libguestfs-rhel-6-3-yum-repo/"/>
		<id>http://rwmj.wordpress.com/?p=3865</id>
		<updated>2012-03-14T16:09:57+00:00</updated>
		<content type="html">&lt;p&gt;You can now easily add the libguestfs RHEL 6.3 preview packages to your RHEL 6.2 system as a yum repo:&lt;/p&gt;
&lt;pre&gt;
# &lt;b&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/yum.repos.d/libguestfs-RHEL-6.3-preview.repo&lt;/b&gt;
[libguestfs-RHEL-6.3-preview]
name=libguestfs RHEL 6.3 preview - x86_64
baseurl=http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/
enabled=1
gpgcheck=0
EOF
&lt;/pre&gt;
&lt;p&gt;For more information, see &lt;a href=&quot;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/README.txt&quot;&gt;the README file&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3865/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3865/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3865&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs and rkhunter (root-kit hunter)</title>
		<link href="http://rwmj.wordpress.com/2012/03/10/libguestfs-and-rkhunter-root-kit-hunter/"/>
		<id>http://rwmj.wordpress.com/?p=3838</id>
		<updated>2012-03-10T07:44:01+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://pseudogen.blogspot.com/2012/03/fun-with-libguestfs-rkhunter-and.html&quot;&gt;http://pseudogen.blogspot.com/2012/03/fun-with-libguestfs-rkhunter-and.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(thanks Adam Miller)&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3838/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3838/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3838&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Getting started hacking on OpenStack Nova</title>
		<link href="http://berrange.com/posts/2012/03/09/getting-started-hacking-on-openstack-nova/"/>
		<id>http://berrange.com/?p=619</id>
		<updated>2012-03-09T11:37:17+00:00</updated>
		<content type="html">&lt;p&gt;In recent months I have spent more of my time working on projects immediately above/related to the core libvirt library, such as libvirt-glib, libosinfo and virt-sandbox. To that list I have now added OpenStack, where my goal is to ensure that the libvirt driver is following all the best practices and start to take advantage of libosinfo for optimizing virtual hardware configuration. I&amp;#8217;m familiar with hacking on python so that&amp;#8217;s no big issue, but what is new about OpenStack is dealing with Gerrit.  For the sake of reference, here were the steps I went through on Fedora 16 for my first patch (a tweak to the tools/install_venv.sh file)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get the initial Nova GIT checkout
&lt;pre&gt;$ mkdir $HOME/src/cloud
$ cd $HOME/src/cloud
$ git clone git://github.com/openstack/nova.git
$ cd nova&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Install some basic pre-reqs, and ensure python-distutils-extra is not present since that conflicts with part of the openstack build system
&lt;pre&gt;$ sudo yum install gcc python-pep8 python-virtualenv m2crypto libvirt libvirt-python libxslt-devel libxml2-devel
$ sudo yum remove python-distutils-extra&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Visit the &lt;a href=&quot;https://review.openstack.org/&quot; rel=&quot;nofollow&quot;&gt;OpenStack Gerrit Website&lt;/a&gt;, and follow &amp;#8216;Sign In&amp;#8217; link which redirects to LaunchPad for authentication&lt;/li&gt;
&lt;li&gt;Back on Gerrit site, now signed in, follow &amp;#8216;Settings&amp;#8217; link, select &amp;#8216;SSH Public Keys&amp;#8217; page, and paste your SSH public key (eg contents of &lt;code&gt;$HOME/.ssh/id_rsa.pub&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Test SSH connectivity from the CLI
&lt;pre&gt;$ ssh -p 29418 berrange@review.openstack.org
The authenticity of host '[review.openstack.org]:29418 ([173.203.103.119]:29418)' can't be established.
RSA key fingerprint is ee:2f:ac:1b:f8:25:d0:39:be:55:02:c7:76:5e:39:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[review.openstack.org]:29418,[173.203.103.119]:29418' (RSA) to the list of known hosts.

**** Welcome to Gerrit Code Review ****

Hi Daniel Berrange, you have successfully connected over SSH.

Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:

git clone ssh://berrange@review.openstack.org:29418/REPOSITORY_NAME.git

Connection to review.openstack.org closed.&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Install commit hook to ensure &amp;#8216;ChangeId&amp;#8217; fields get added to your commits
&lt;pre&gt;$ scp -p -P 29418 berrange@review.openstack.org:hooks/commit-msg .git/hooks/&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the gerrit remote to GIT config
&lt;pre&gt;$ git remote add gerrit ssh://berrange@review.openstack.org:29418/openstack/nova.git&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Start a new branch for your work
&lt;pre&gt;$ git checkout -b venv-install-fixes&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Make whatever code changes you need todo
&lt;pre&gt;$ vi tools/virtual_venv.py
$ git add -u

(Don't forget to add yourself to Authors if this is your first change)&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Commit the changes, checking the commit message gets a &amp;#8216;Change-Id&amp;#8217; line added just prior to the signed-off-by line
&lt;pre&gt;$ git commit -s
$ git show
commit fd682a28fb4591c65f20129d4bfb4eccf1232cb8
Author: Daniel P. Berrange &amp;lt;berrange@redhat.com&amp;gt;
Date: Thu Jan 5 13:15:15 2012 +0000

Tell users what is about to be installed via sudo

Rather than just giving users the sudo password prompt immediately,
actually tell them what is about to be installed, so they know what
privileged action is being attempted.

Change-Id: Ic0c1de812be119384753895531a008075b13494e
Signed-off-by: Daniel P. Berrange &amp;lt;berrange@redhat.com&amp;gt;&lt;/pre&gt;
&lt;p&gt;If the commit is fixing a OpenStack bug, then the commit message should include a line &amp;#8220;BugXXXX&amp;#8221; where XXXX is the bug number. Gerrit uses this to link to the bug tracker&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Run the unit test suite, and the python pep8 syntax test suite; Be prepared to wait a long time
&lt;pre&gt;$ ./run_tests.sh
$ ./run_tests.sh --pep8&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Send the changes to Gerrit for review
&lt;pre&gt;$ git push gerrit HEAD:refs/for/master&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Wait for email notifications of review, or watch the &lt;a href=&quot;https://review.openstack.org/&quot; rel=&quot;nofollow&quot;&gt;OpenStack Gerrit Website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If problems are found by reviewers, or the automated smoke stack tests. Repeat steps 9-&amp;gt;l;12, but use &amp;#8216;git commit &amp;#8211;amend&amp;#8217; to ensure you preserve the original &amp;#8220;Change-Id&amp;#8221; line in the commit message. This lets gerrit track followup patches.&lt;/li&gt;
&lt;li&gt;If everything passes review &amp;amp; testing, it will be automatically merged into master.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is also a GIT plugin  &amp;#8220;git review&amp;#8221; available in the git-review RPM, which can provide syntactic sugar for step 12, but personally I don&amp;#8217;t find it adds significant value to be worth my while using.&lt;/p&gt;
&lt;p&gt;I can see the attraction of Gerrit, but I personally still prefer the practice of using git send-email for reviewing on mailing lists. My problems with Gerrit are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The email notifications sent out for new patches are almost worse than useless as an information source&lt;/li&gt;
&lt;li&gt;While very pretty, the web UI for browsing the diffs is really quite cumbersome to use&lt;/li&gt;
&lt;li&gt;Poor support for reviewing large patch series&lt;/li&gt;
&lt;li&gt;Use of merge commits makes navigating GIT history cumbersome, forcing the use of the graphical gitk viewer tool&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Daniel Berrange</name>
			<uri>http://berrange.com</uri>
		</author>
		<source>
			<title type="html">Daniel P. Berrangé » Virt Tools</title>
			<subtitle type="html">Writing about photography, open source software, virtualization &amp;amp; more</subtitle>
			<link rel="self" href="http://berrange.com/topics/virt-tools/feed/"/>
			<id>http://berrange.com/topics/virt-tools/feed/</id>
			<updated>2012-04-03T21:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Problems compiling libguestfs?  Try the libguestfs binary appliance</title>
		<link href="http://rwmj.wordpress.com/2012/03/03/problems-compiling-libguestfs-try-the-libguestfs-binary-appliance/"/>
		<id>http://rwmj.wordpress.com/?p=3833</id>
		<updated>2012-03-03T20:32:03+00:00</updated>
		<content type="html">&lt;p&gt;The &lt;a href=&quot;http://libguestfs.org/download/binaries/appliance/&quot;&gt;libguestfs binary &amp;#8220;fixed&amp;#8221; appliance&lt;/a&gt; &lt;a href=&quot;http://libguestfs.org/download/binaries/appliance/README.txt&quot;&gt;[README]&lt;/a&gt; is a copy of the Fedora appliance, adapted so you can just download it and use it directly with &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just &lt;a href=&quot;http://libguestfs.org/download/1.17-development/&quot;&gt;download libguestfs &amp;ge; 1.17.10&lt;/a&gt; (or from &lt;a href=&quot;https://github.com/libguestfs/libguestfs&quot;&gt;git&lt;/a&gt;), compile &lt;i&gt;without&lt;/i&gt; the usual appliance:&lt;/p&gt;
&lt;pre&gt;
./configure --disable-appliance --disable-daemon
make
sudo make install
&lt;/pre&gt;
&lt;p&gt;Set your path to point to wherever you unpacked the appliance:&lt;/p&gt;
&lt;pre&gt;
export LIBGUESTFS_PATH=/usr/local/lib/libguestfs/appliance
&lt;/pre&gt;
&lt;p&gt;and then run libguestfs and the virt tools in the usual way.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3833/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3833/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3833&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs RHEL 6.3 preview packages updated</title>
		<link href="http://rwmj.wordpress.com/2012/02/11/libguestfs-rhel-6-3-preview-packages-updated/"/>
		<id>http://rwmj.wordpress.com/?p=3778</id>
		<updated>2012-02-11T07:29:39+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve updated the &lt;a href=&quot;http://libguestfs.org&quot;&gt;libguestfs&lt;/a&gt; RHEL 6.3 preview packages to libguestfs 1.16.4.  Barring any bugs that we find over the next few months, these should be close to what we ship in RHEL 6.3.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/&quot;&gt;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can install these on RHEL 6.2, but make sure you &lt;a href=&quot;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/README.txt&quot;&gt;read the README file first&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3778/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3778/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3778&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">GPG keysigning made easy with Pius</title>
		<link href="http://berrange.com/posts/2012/02/10/gpg-keysigning-made-easy-with-pius/"/>
		<id>http://berrange.com/?p=604</id>
		<updated>2012-02-10T10:53:06+00:00</updated>
		<content type="html">&lt;p&gt;A few months back the Red Hat KVM team held a mass keysigning party to setup a web of trust between each others keys. IIRC, there were approximately 20 people participating in this, which potentially meant alot of tedious typing of GPG commands, with the potential for error such tedium implies. Fortunately we had &lt;a href=&quot;http://meyering.net/&quot;&gt;Jim Meyering&lt;/a&gt; on hand to give us some tips for facilitating/optimizing the process, the most important of which was to introduce us to the &amp;#8216;&lt;a href=&quot;http://www.phildev.net/pius/&quot;&gt;Pius&lt;/a&gt;&amp;#8216; tool.  To quote from its website&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;pius&lt;/code&gt; (PGP Individual UID Signer) helps &lt;em&gt;attendees&lt;/em&gt; of PGP keysigning parties. It is the main utility and allows you to quickly and easily sign each UID on a set of PGP keys. It is designed to take the pain out of the sign-all-the-keys part of PGP Keysigning Party while adding security to the process.&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;That can already be time consuming, but preferrably, you want to verify the identity in each UID, which means verifying the email addresses. There are a few ways to do this, but one of them is to sign each UID on the key individually (which requires import-sign-export-delete for each UID), encrypt-emailing that key to the email address in the UID. This can be incredibly time consuming.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s where pius comes in. Pius will do all the work for you &amp;#8211; all you have to do is confirm the fingerprint for each key. It will then take care of signing each UID cleanly, minimizing the key, and using PGP/Mime email to send it, encrypted, to the email address in the UID.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The steps Jim defined for us to follow using Pius were as follows&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Collate a list of everyone&amp;#8217;s key IDs. Our list looked like this (cut down to save space)
&lt;pre&gt; # cat &amp;gt; keyids.txt &amp;lt;&amp;lt;EOF
 4096R/000BEEEE 2010-06-14 Jim Meyering
 4096R/E1B768A0 2011-10-11 Richard W.M. Jones
 4096R/15104FDF 2011-10-11 Daniel P. Berrange
 ...
 EOF&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Download all the keys from a key server (it is assumed everyone has already uploaded their own key to a server)
&lt;pre&gt; # id_list=$(perl -nle 'm!^\d{4}R/(\S{8}) ! and print $1' keyids.txt)
 # gpg --recv-keys  $(echo $id_list)&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Generate a list of fingerprints for all keys that are to be signed
&lt;pre&gt; # gpg --fingerprint $(echo $id_list)&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Verify all the fingerprints and their owners&amp;#8217; identities.&lt;br /&gt;&lt;strong&gt;This is the security critical part&lt;/strong&gt;. You generally want to meet the person face-to-face, verify their identity via some trusted means (passport, driving license, etc). They should read their key fingerprint out to you, and you should verify that it matches the fingerprint of that downloaded from the key server.&lt;/li&gt;
&lt;li&gt;Use Pius to sign all the keys whose fingerprints were verified.
&lt;pre&gt;MAIL_HOST=smtp.your.mail.server.com
me=your@email.address.com   (eg dan@berrange.com)
my_id=XXXXXXXXXXX  (Your GPG Key ID eg  15104FDF)
# pius --mail-host=MAIL_HOST --no-pgp-mime --mail=$me --signer=$my_id $(echo $id_list)&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What Pius does here is that for each key ID it is given, it will sign each individual identity (email address). The signature will be ascii-armoured and then sent to the email address associated with that identity. If a user has multiple email addresses on their key, they will receive one signature email per address. The email contains instructions for what the receipient should do. The email will look something like this&lt;/p&gt;
&lt;pre&gt;From: eblake@redhat.com
To: berrange@redhat.com
Subject: Your signed PGP key

[-- Attachment #1 --]
[-- Type: text/plain, Encoding: 7bit, Size: 0.7K --]

Hello,

Attached is a copy of your PGP key (0x15104fdf) signed by my key
(0xa7a16b4a2527436a).

If your key has more than one UID, than this key only has the UID associated
with this email address (berrange@redhat.com) signed and you will receive
additional emails containing signatures of the other UIDs at the respective
email addresses.

Please take the attached message and decrypt it and then import it.
Something like this should work:

   gpg -d  | gpg --import

Then, don't forget to send it to a keyserver:

   gpg --keyserver pool.sks-keyservers.net --send-key 15104fdf

If you have any questions, let me know.

Generated by PIUS (http://www.phildev.net/pius/).

[-- Attachment #2: 15104fdf__berrange_at_redhat.com_ENCRYPTED.asc --]
[-- Type: application/octet-stream, Encoding: 7bit, Size: 4.6K --]&lt;/pre&gt;
&lt;p&gt;The final thing, once everyone has dealt with the emails they received, is to refresh your local key database to pull down all the new signatures&lt;/p&gt;
&lt;pre&gt;
# gpg --recv-keys  $(echo $id_list)
&lt;/pre&gt;
&lt;p&gt;I should point out that Pius isn&amp;#8217;t just for mass key signing parties. Even if you only have 1 single key you want to sign, it is still a very convenient tool to use. The simplified set of steps to go through would be&lt;/p&gt;
&lt;pre&gt;
# gpg --recv-key XXXXXXXX
# gpg --fingerprint XXXXXXXX
# ...verify person's identity &amp;#038; fingerprint
# pius --mail-host=MAIL_HOST --no-pgp-mime --mail=$me --signer=$my_id XXXXXXX
# ....some time later...
# gpg --recv-key XXXXXXXX
&lt;/pre&gt;
&lt;p&gt;Thanks again to Jim Meyering for pointing out Pius and doing the organization for our key signing party &amp;#038; defining the steps I describe above. BTW, Pius is available in Fedora from F16 onwards.&lt;/p&gt;</content>
		<author>
			<name>Daniel Berrange</name>
			<uri>http://berrange.com</uri>
		</author>
		<source>
			<title type="html">Daniel P. Berrangé » Virt Tools</title>
			<subtitle type="html">Writing about photography, open source software, virtualization &amp;amp; more</subtitle>
			<link rel="self" href="http://berrange.com/topics/virt-tools/feed/"/>
			<id>http://berrange.com/topics/virt-tools/feed/</id>
			<updated>2012-04-03T21:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Libvirt sandbox at FOSDEM 2012</title>
		<link href="http://berrange.com/posts/2012/02/05/libvirt-sandbox-at-fosdem-2012/"/>
		<id>http://berrange.com/?p=602</id>
		<updated>2012-02-05T17:29:23+00:00</updated>
		<content type="html">&lt;p&gt;As &lt;a href=&quot;http://berrange.com/posts/2012/01/31/libvirt-libguestfs-more-at-fosdem-2012/&quot;&gt;mentioned previously&lt;/a&gt;, today I presented a talk at &lt;a href=&quot;http://fosdem.org/2012/schedule/track/virtualization_and_cloud_devroom&quot;&gt;FOSDEM 2012&lt;/a&gt;, titled &amp;#8220;Building application sandboxes on top of LXC and KVM with libvirt&amp;#8221;.  As promised I have now &lt;a href=&quot;http://people.redhat.com/berrange/fosdem-2012/&quot;&gt;uploaded the PDF slides&lt;/a&gt; for public access.  For further information about libvirt-sandbox, consult this &lt;a href=&quot;http://berrange.com/posts/2012/01/17/building-application-sandboxes-with-libvirt-lxc-kvm/&quot;&gt;previous blog post&lt;/a&gt; on the subject. Also keep an eye on this site for further blog posts in the future. Thanks to everyone who attended the talk. I look forward to returning again in a year&amp;#8217;s time for another update.&lt;/p&gt;</content>
		<author>
			<name>Daniel Berrange</name>
			<uri>http://berrange.com</uri>
		</author>
		<source>
			<title type="html">Daniel P. Berrangé » Virt Tools</title>
			<subtitle type="html">Writing about photography, open source software, virtualization &amp;amp; more</subtitle>
			<link rel="self" href="http://berrange.com/topics/virt-tools/feed/"/>
			<id>http://berrange.com/topics/virt-tools/feed/</id>
			<updated>2012-04-03T21:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs talk at FOSDEM</title>
		<link href="http://rwmj.wordpress.com/2012/02/04/libguestfs-talk-at-fosdem/"/>
		<id>http://rwmj.wordpress.com/?p=3773</id>
		<updated>2012-02-04T12:52:04+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2012/02/img_20120204_121224.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Big theatre!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2012/02/img_20120204_101159.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The code examples are in &lt;a href=&quot;http://git.annexia.org/?p=libguestfs-talks.git;a=tree;f=2012-fosdem;hb=HEAD&quot;&gt;this git repository&lt;/a&gt; (&lt;code&gt;git clone git://git.annexia.org/git/libguestfs-talks.git&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://git.annexia.org/?p=techtalk-pse.git;a=summary&quot;&gt;Tech Talk is here&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3773/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3773/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3773&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs RHEL 6.3 new preview packages available</title>
		<link href="http://rwmj.wordpress.com/2012/01/31/libguestfs-rhel-6-3-new-preview-packages-available/"/>
		<id>http://rwmj.wordpress.com/?p=3758</id>
		<updated>2012-01-31T19:00:42+00:00</updated>
		<content type="html">&lt;p&gt;Here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/&quot;&gt;http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These are based on libguestfs &lt;s&gt;1.16.1&lt;/s&gt; 1.16.2.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3758/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3758/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3758&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FreeDOS 1.1 in KVM</title>
		<link href="http://rwmj.wordpress.com/2012/01/31/freedos-1-1-in-kvm/"/>
		<id>http://rwmj.wordpress.com/?p=3764</id>
		<updated>2012-01-31T18:13:02+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.freedos.org&quot;&gt;FreeDOS 1.1&lt;/a&gt; running in KVM with 4 MB (sic) of virtual RAM:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2012/01/freedos.png?w=500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is more than just a silly experiment.  Being able to run very small VMs (and this is &lt;i&gt;by far&lt;/i&gt; the smallest real VM I have been able to run) allows us to test the scalability of KVM to hundreds or thousands of guests using standard hardware.&lt;/p&gt;
&lt;p&gt;It has revealed a &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=786215&quot;&gt;couple&lt;/a&gt; of &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=786188&quot;&gt;bugs&lt;/a&gt; in libguestfs too &amp;#8230;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3764/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3764/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3764&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libvirt, libguestfs &amp;amp; more at FOSDEM 2012</title>
		<link href="http://berrange.com/posts/2012/01/31/libvirt-libguestfs-more-at-fosdem-2012/"/>
		<id>http://berrange.com/?p=598</id>
		<updated>2012-01-31T10:39:05+00:00</updated>
		<content type="html">&lt;p&gt;As many readers are no doubt aware, the &lt;a href=&quot;http://fosdem.org/2012/&quot;&gt;FOSDEM 2012&lt;/a&gt; conference is taking place this weekend in Brussels. This year I was organized enough to submit a proposal for a talk and was very happy to be accepted. &lt;a href=&quot;http://fosdem.org/2012/schedule/event/libvirt_lxc_kvm_sandboxes&quot;&gt;My talk&lt;/a&gt; is titled &amp;#8220;&lt;em&gt;Building app sandboxes on top of LXC and KVM with libvirt&lt;/em&gt;&amp;#8221; and is part of the &lt;a href=&quot;http://fosdem.org/2012/schedule/track/virtualization_and_cloud_devroom&quot;&gt;Virtualization &amp;amp; Cloud Dev Room&lt;/a&gt;. As you can guess from the title, I will be talking in some detail about the libvirt-sandbox &lt;a href=&quot;http://berrange.com/posts/2012/01/17/building-application-sandboxes-with-libvirt-lxc-kvm/&quot;&gt;project I recently announced&lt;/a&gt;. Richard Jones is also attending to provide &lt;a href=&quot;http://fosdem.org/2012/schedule/event/libguestfs&quot;&gt;a talk on libguestfs&lt;/a&gt; and how it is used in cloud projects like OpenStack. There will be three talks covering different aspects of the &lt;a href=&quot;http://ovirt.org/&quot;&gt;oVirt project&lt;/a&gt;, a general project overview, technical look at the management engine and a technical look at the node agent VDSM. Finally the GNOME Boxes project I &lt;a href=&quot;http://berrange.com/posts/2011/11/22/gnome-3-desktop-virtualization-support-from-gnome-boxes-and-the-future-for-virt-manager/&quot;&gt;mentioned&lt;/a&gt; a few weeks ago will also be &lt;a href=&quot;http://fosdem.org/2012/schedule/event/gnomeboxes&quot;&gt;represented&lt;/a&gt; in the &lt;a href=&quot;http://fosdem.org/2012/schedule/track/crossdesktop_devroom&quot;&gt;CrossDesktop devroom.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Besides these virtualization related speakers, there are a great many other Red Hat people attending FOSDEM this year, so we put together a small flyer &lt;a href=&quot;http://people.redhat.com/duffy/fosdem/redhat-fosdem_2012.pdf&quot;&gt;highlighting all the&lt;/a&gt;&lt;a href=&quot;http://people.redhat.com/duffy/fosdem/redhat-fosdem_2012.pdf&quot;&gt;ir talks&lt;/a&gt;. In keeping with the spirit of FOSDEM, these talks will of course be community / technically focused, not corporate marketing ware :-) I look forward to meeting many people at FOSDEM this year, and if all goes well, make it a regular conference to attend.&lt;/p&gt;</content>
		<author>
			<name>Daniel Berrange</name>
			<uri>http://berrange.com</uri>
		</author>
		<source>
			<title type="html">Daniel P. Berrangé » Virt Tools</title>
			<subtitle type="html">Writing about photography, open source software, virtualization &amp;amp; more</subtitle>
			<link rel="self" href="http://berrange.com/topics/virt-tools/feed/"/>
			<id>http://berrange.com/topics/virt-tools/feed/</id>
			<updated>2012-04-03T21:11:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Going to FOSDEM!</title>
		<link href="http://cfergeau.blogspot.com/2012/01/going-to-fosdem.html"/>
		<id>tag:blogger.com,1999:blog-8472120078842080683.post-5584824933040711987</id>
		<updated>2012-01-31T10:24:30+00:00</updated>
		<content type="html">&lt;div dir=&quot;ltr&quot;&gt;This is this time of the year again, &lt;a href=&quot;http://fosdem.org/2012/&quot;&gt;FOSDEM&lt;/a&gt; will take place in Brussels next week-end. This is one of my favourite free software event, lots of interesting talks, lots of interesting people, and lots of energy everywhere. This year, it looks like it will be the best FOSDEM ever! More devrooms, more than 400 talks, more everything!&lt;br /&gt;&lt;br /&gt;I've helped again organizing the &lt;a href=&quot;http://fosdem.org/2012/schedule/track/crossdesktop_devroom&quot;&gt;crossdesktop devroom&lt;/a&gt;. Among these talks, I can only recommend the &lt;a href=&quot;http://fosdem.org/2012/schedule/event/gnomeboxes&quot;&gt;gnome-boxes presentation&lt;/a&gt; that Marc-André and &lt;a href=&quot;http://zee-nix.blogspot.com/&quot;&gt;Zeeshan&lt;/a&gt; will be giving :) While I'm at it, here are a few more shameless plugs: &lt;a href=&quot;http://hansdegoede.livejournal.com/&quot;&gt;Hans de Goede&lt;/a&gt; will be giving 2 &lt;a href=&quot;http://spice-space.org/&quot;&gt;SPICE&lt;/a&gt; talks in the Virtualization devroom, one &lt;a href=&quot;http://fosdem.org/2012/schedule/event/spice&quot;&gt;general presentation of SPICE&lt;/a&gt;, and one where he will describe the &lt;a href=&quot;http://fosdem.org/2012/schedule/event/usb_network_redirect&quot;&gt;USB redirection support in SPICE&lt;/a&gt;. And &lt;a href=&quot;http://blog.saymoo.org/&quot;&gt;Alon Levy&lt;/a&gt; will present his work to &lt;a href=&quot;http://fosdem.org/2012/schedule/event/xorg_xspice&quot;&gt;interact with an X server through SPICE&lt;/a&gt; without using a virtual machine.&lt;br /&gt;&lt;br /&gt;Last but not least, there will also be a GNOME booth with some goodies...&lt;br /&gt;&lt;br /&gt;See you all there in a few days!&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8472120078842080683-5584824933040711987?l=cfergeau.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Christophe</name>
			<email>noreply@blogger.com</email>
			<uri>http://cfergeau.blogspot.com/search/label/spice</uri>
		</author>
		<source>
			<title type="html">No Inspiration</title>
			<link rel="self" href="http://cfergeau.blogspot.com/feeds/posts/default/-/spice"/>
			<id>tag:blogger.com,1999:blog-8472120078842080683</id>
			<updated>2012-05-11T00:11:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Calling libguestfs from Javascript</title>
		<link href="http://rwmj.wordpress.com/2012/01/25/calling-libguestfs-from-javascript/"/>
		<id>http://rwmj.wordpress.com/?p=3754</id>
		<updated>2012-01-25T10:40:24+00:00</updated>
		<content type="html">&lt;p&gt;In &lt;a href=&quot;http://libguestfs.org/&quot;&gt;libguestfs 1.16&lt;/a&gt; we added experimental GObject bindings and support for GObject Introspection.  These are experimental because we may change them a little in future.  They do allow you to access libguestfs from Javascript, specifically from &lt;a href=&quot;https://live.gnome.org/Gjs&quot;&gt;gjs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is an example program (fixed and updated):&lt;/p&gt;
&lt;pre&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;const&lt;/font&gt;&lt;/b&gt; Guestfs &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; imports&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;gi&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;Guestfs&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt;

&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;function&lt;/font&gt;&lt;/b&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;filename&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; g &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;new&lt;/font&gt;&lt;/b&gt; Guestfs&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;Session&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;();&lt;/font&gt;

    &lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;//g.set_trace (true);&lt;/font&gt;&lt;/i&gt;

    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; optargs &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;new&lt;/font&gt;&lt;/b&gt; Guestfs&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;AddDriveOpts&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;readonly&lt;font color=&quot;#990000&quot;&gt;:&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;true&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;add_drive_opts&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;filename&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; optargs&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;

    g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;launch&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;();&lt;/font&gt;

    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; roots &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_os&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;()&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;if&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;roots&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length &lt;font color=&quot;#990000&quot;&gt;==&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;printerr&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;inspection: no operating systems found in&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; filename&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;else&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;for&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; i &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; i &lt;font color=&quot;#990000&quot;&gt;&amp;lt;&lt;/font&gt; roots&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;++&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
            &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_root&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;g&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; roots&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;]);&lt;/font&gt;
        &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;
    &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;

&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;function&lt;/font&gt;&lt;/b&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_root&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;g&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; root&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;inspecting operating system root&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; root&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;

    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;  product name:&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_get_product_name&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;));&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;  version:&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;
           g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_get_major_version&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;),&lt;/font&gt;
           g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_get_minor_version&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;));&lt;/font&gt;
    &lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;//print (&quot;  type:&quot;, g.inspect_get_type (root));&lt;/font&gt;&lt;/i&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;  distro:&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_get_distro&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;));&lt;/font&gt;

    &lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;// Mount up the disks like guestfish -i&lt;/font&gt;&lt;/i&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; mps &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_get_mountpoints&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; keys &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;[];&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;for&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; key &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;in&lt;/font&gt;&lt;/b&gt; mps&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt; keys&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;push&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;key&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;function&lt;/font&gt;&lt;/b&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;compare&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;a&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; b&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;if&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;a&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length &lt;font color=&quot;#990000&quot;&gt;&amp;gt;&lt;/font&gt; b&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;return&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;else&lt;/font&gt;&lt;/b&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;if&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;a&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length &lt;font color=&quot;#990000&quot;&gt;==&lt;/font&gt; b&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;return&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;else&lt;/font&gt;&lt;/b&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;return&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt;
    &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;
    keys&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;sort&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;compare&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;

    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;for&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; i &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; i &lt;font color=&quot;#990000&quot;&gt;&amp;lt;&lt;/font&gt; keys&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;++&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
        g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;mount_ro&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;mps&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;keys&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;]],&lt;/font&gt; keys&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;]);&lt;/font&gt;
    &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;

    &lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;// Get the list of applications.&lt;/font&gt;&lt;/i&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;  applications:&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    apps &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect_list_applications&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;root&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;for&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;var&lt;/font&gt;&lt;/b&gt; i &lt;font color=&quot;#990000&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; i &lt;font color=&quot;#990000&quot;&gt;&amp;lt;&lt;/font&gt; apps&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length&lt;font color=&quot;#990000&quot;&gt;;&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;++&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
        &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;print&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;    &quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; apps&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;].&lt;/font&gt;app_name&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;
               apps&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;].&lt;/font&gt;app_version&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; apps&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;i&lt;font color=&quot;#990000&quot;&gt;].&lt;/font&gt;app_release&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
    &lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;

    g&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;umount_all&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;();&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;

&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;if&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;ARGV&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;length &lt;font color=&quot;#990000&quot;&gt;!=&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;printerr&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;&quot;Usage: gjs test.js disk.img&quot;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;else&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#FF0000&quot;&gt;{&lt;/font&gt;
    &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;inspect&lt;/font&gt;&lt;/b&gt; &lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;ARGV&lt;font color=&quot;#990000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;]);&lt;/font&gt;
&lt;font color=&quot;#FF0000&quot;&gt;}&lt;/font&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3754/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3754/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3754&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Oz 0.8.0 released</title>
		<link href="http://clalance.blogspot.com/2012/01/oz-080-released.html"/>
		<id>tag:blogger.com,1999:blog-8882389959394402329.post-6410533093047244204</id>
		<updated>2012-01-24T19:18:50+00:00</updated>
		<content type="html">(this is a little delayed; sorry about that)&lt;br /&gt;&lt;br /&gt;I'm pleased to announce release 0.8.0 of Oz.  Oz is a program for doing automated installation of guest operating systems with limited input from the user.&lt;br /&gt;&lt;br /&gt;Release 0.8.0 is a (long overdue) bugfix and feature release for Oz.  Some of the highlights between Oz 0.7.0 and 0.8.0 are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Optional virtualenv make target&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Conversion of unittests to py.test&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Replace mkisofs with genisoimage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Debian package&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ability to change the root password for Debian installs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add unittests for ozutil&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add some unittests for the Guest object&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SSH tunnel (with SSL vhost) support for local repositories (mostly useful for imagefactory)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add a new manpage for oz-examples&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Make the output filename configurable with a command-line option to oz-install&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Monitor both network and disk activity when looking for guest activity&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for installing Ubuntu 11.10&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for SSL certificates for repositories&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for an optional version in the TDL&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for installling Mandrake 9.1, 9.2, 10.0, 10.1, 10.2&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for installing Mandriva 2006.0, 2007.0, 2008.0&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for Ubuntu customization&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for installing RHEL 6.2&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;A tarball of this release is available, as well as packages for Fedora-15.  Instructions on how to get and use Oz are available at http://aeolusproject.org/oz.html&lt;br /&gt;&lt;br /&gt;If you have any questions or comments about Oz, please feel free to contact aeolus-devel@lists.fedorahosted.org or me (clalancette@gmail.com) directly.&lt;br /&gt;&lt;br /&gt;Thanks to everyone who contributed to this release through bug reports, patches, and suggestions for improvement.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8882389959394402329-6410533093047244204?l=clalance.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Chris</name>
			<email>noreply@blogger.com</email>
			<uri>http://clalance.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Chris Lalancette</title>
			<link rel="self" href="http://clalance.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8882389959394402329</id>
			<updated>2012-05-15T03:11:05+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libguestfs 1.16 has been released</title>
		<link href="http://rwmj.wordpress.com/2012/01/24/libguestfs-1-16-has-been-released/"/>
		<id>http://rwmj.wordpress.com/?p=3752</id>
		<updated>2012-01-24T08:35:52+00:00</updated>
		<content type="html">&lt;p&gt;The &lt;a href=&quot;http://libguestfs.org/RELEASE-NOTES.txt&quot;&gt;release notes are here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One highlight is GObject bindings, which makes the API available from Javascript.  More on this topic coming soon.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3752/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3752/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3752&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Unpacking Boxes...</title>
		<link href="http://cfergeau.blogspot.com/2012/01/unpacking-boxes.html"/>
		<id>tag:blogger.com,1999:blog-8472120078842080683.post-4670321997284320166</id>
		<updated>2012-01-23T12:54:37+00:00</updated>
		<content type="html">&lt;div dir=&quot;ltr&quot;&gt;For the impatient people running Fedora 16 but who still want to get an aperçu of &lt;a href=&quot;https://live.gnome.org/Boxes&quot;&gt;Boxes&lt;/a&gt;, today's your lucky day! I set up a preview repository with all the needed package to install Boxes on Fedora 16.&lt;br /&gt;If you want to try it, download &lt;a href=&quot;http://teuf.fedorapeople.org/boxes/gnome-boxes-preview.repo&quot;&gt;this file&lt;/a&gt; to&lt;span&gt; /etc/yum.repos.d&lt;/span&gt; and then run &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;yum install gnome-boxes &amp;amp;&amp;amp; yum update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-MSs74JJntLA/Tx1I5JI4_VI/AAAAAAAAAqQ/ZSvcC0Fkbv4/s1600/boxes2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;http://3.bp.blogspot.com/-MSs74JJntLA/Tx1I5JI4_VI/AAAAAAAAAqQ/ZSvcC0Fkbv4/s320/boxes2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;To go back to your previous setup, you can either use the convenient &lt;/span&gt;&lt;span&gt;&lt;span&gt;yum history&lt;/span&gt;&lt;span&gt;&lt;span&gt;, or remove&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/etc/yum.repos.d/gnome-boxes-preview.repo&lt;/span&gt;&lt;span&gt; and use&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;yum remove libvirt-glib &amp;amp;&amp;amp; yum distro-sync&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Keep in mind that this is a new application still in heavy development, so you're likely to find bugs and missing features. But I'm sure you will enjoy it nonetheless :)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Feel free to join us in &lt;span&gt;#boxes&lt;/span&gt; on &lt;span&gt;irc.gnome.org &lt;/span&gt;if you have any issues, or if you just want to chat with us.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8472120078842080683-4670321997284320166?l=cfergeau.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Christophe</name>
			<email>noreply@blogger.com</email>
			<uri>http://cfergeau.blogspot.com/search/label/spice</uri>
		</author>
		<source>
			<title type="html">No Inspiration</title>
			<link rel="self" href="http://cfergeau.blogspot.com/feeds/posts/default/-/spice"/>
			<id>tag:blogger.com,1999:blog-8472120078842080683</id>
			<updated>2012-05-11T00:11:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">virt-format: Erase and make blank disks</title>
		<link href="http://rwmj.wordpress.com/2012/01/18/virt-format-erase-and-make-blank-disks/"/>
		<id>http://rwmj.wordpress.com/?p=3742</id>
		<updated>2012-01-18T18:34:44+00:00</updated>
		<content type="html">&lt;p&gt;There is a new tool in &lt;a href=&quot;http://libguestfs.org/&quot;&gt;libguestfs &amp;ge; 1.15.17&lt;/a&gt;: &lt;a href=&quot;http://libguestfs.org/virt-format.1.html&quot;&gt;virt-format&lt;/a&gt; lets you erase disks and make blank disks.&lt;/p&gt;
&lt;p&gt;Usage is quite simple:&lt;/p&gt;
&lt;pre&gt;
$ virt-format -a disk.img
&lt;/pre&gt;
&lt;p&gt;(Note that &lt;b&gt;erases&lt;/b&gt; any data on &lt;code&gt;disk.img&lt;/code&gt;!)&lt;/p&gt;
&lt;p&gt;This works for any format of disk, eg. qcow2, or you can run it on host partitions, LVs, USB storage etc.  By default it just creates a partition, but using &lt;a href=&quot;http://libguestfs.org/virt-format.1.html&quot;&gt;other options&lt;/a&gt; you can make empty filesystems and logical volumes.&lt;/p&gt;
&lt;p&gt;This is a simple tool that doesn&amp;#8217;t cover everything you might want to do.  For more complex requirements, see &lt;a href=&quot;http://libguestfs.org/virt-make-fs.1.html&quot;&gt;virt-make-fs&lt;/a&gt; or &lt;a href=&quot;http://libguestfs.org/guestfish.1.html&quot;&gt;guestfish&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/3742/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/3742/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;#038;blog=6840703&amp;#038;post=3742&amp;#038;subd=rwmj&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Richard Jones</name>
			<uri>http://rwmj.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Richard WM Jones » virt-tools</title>
			<subtitle type="html">Virtualization, tools and tips</subtitle>
			<link rel="self" href="http://rwmj.wordpress.com/tag/virt-tools/feed/"/>
			<id>http://rwmj.wordpress.com/tag/virt-tools/feed/</id>
			<updated>2012-05-18T12:11:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Building application sandboxes with libvirt, LXC &amp;amp; KVM</title>
		<link href="http://berrange.com/posts/2012/01/17/building-application-sandboxes-with-libvirt-lxc-kvm/"/>
		<id>http://berrange.com/?p=584</id>
		<updated>2012-01-17T23:30:26+00:00</updated>
		<content type="html">&lt;p&gt;I have mentioned in passing every now &amp;amp; then over the past few months, that I have been working on a tool for creating application sandboxes using libvirt, LXC and KVM. Last Thursday, I finally got around to creating a &lt;a href=&quot;https://www.redhat.com/archives/libvir-list/2012-January/msg00516.html&quot;&gt;first public release&lt;/a&gt; of a package that is now called &lt;em&gt;libvirt-sandbox&lt;/em&gt;. Before continuing it is probably worth defining what I consider the term &amp;#8220;&lt;em&gt;application sandbox&lt;/em&gt;&amp;#8221; to mean. My working definition is that an &amp;#8220;application sandbox&amp;#8221; is simply a way to confine the execution environment of an application, limiting the access it has to OS resources. To me one notable point is that there is no need for a separate / special installation of the application to be confined. An application sandbox ought to be able to run any existing application installed in the OS.&lt;/p&gt;
&lt;h3&gt;Background motivation &amp;amp; prototype&lt;/h3&gt;
&lt;p&gt;For a few Fedora releases, users have had the &lt;a href=&quot;http://danwalsh.livejournal.com/28545.html&quot;&gt;SELinux sandbox&lt;/a&gt; command which will execute a command with a strictly confined SELinux context applied. It is also able to make limited use of the kernel filesystem namespace feature, to allow changes to the mount table inside the sandbox. For example, the common case is to put in place a different $HOME. The SELinux sandbox has been quite effective, but there is a limit to what can be done with SELinux policy alone, as evidenced by the need to create a setuid helper to enable use of the kernel namespace feature. Architecturally this gets even more problematic as new feature requests need to be dealt with.&lt;/p&gt;
&lt;p&gt;As most readers are no doubt aware, libvirt provides a virtualization management API, with support for a wide variety of virtualization technologies. The KVM driver is easily the most advanced and actively developed driver for libvirt with a very wide array of features for machine based virtualization. In terms of container based virtualization, the LXC driver is the most advanced driver in libvirt, often getting new features &amp;#8220;for free&amp;#8221; since it shares alot of code with the KVM driver, in particular anything cgroup based. The LXC driver has always had the ability to pass arbitrary host filesystems through to the container, and the KVM driver gained similar capabilities last year with the inclusion of support for virtio 9p filesystems. One of the well known security features in libvirt is sVirt, which leverages MAC technology like SELinux to strictly confine the execution environment of QEMU. This has also now been adapted to work for the &lt;a href=&quot;https://www.redhat.com/archives/libvir-list/2012-January/msg00418.html&quot;&gt;LXC driver&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Looking at the architecture of the SELinux sandbox command last year, it occurred to me that the core concepts mapped very well to the host filesystem passthrough &amp;amp; sVirt features in libvirt&amp;#8217;s KVM &amp;amp; LXC drivers. In other words, it ought to be possible to create application sandboxes using the libvirt API and suitably advanced drivers like KVM or LXC. A few weeks hacking resulted in a proof of concept tool &lt;a href=&quot;https://gitorious.org/virt-tools/virt-sandbox&quot;&gt;virt-sandbox&lt;/a&gt; which can run simple commands in sandboxes built on LXC or KVM.&lt;/p&gt;
&lt;h3&gt;The libvirt-sandbox API&lt;/h3&gt;
&lt;p&gt;A command line tool for running applications inside a sandbox is great, but even more useful would be an API for creating application sandboxes that programmers can use directly. While libvirt provides an API that is portable across different virtualization technologies, it cannot magically hide the differences in feature set or architecture between the technologies. Thus the decision was taken to create a new library called libvirt-sandbox that provides a higher level API for managing application sandboxes, built on top of libvirt. The virt-sandbox command from the proof of concept would then be re-implemented using this library API.&lt;/p&gt;
&lt;p&gt;The libvirt-sandbox library is built using GObject to enable it to be accessible to any programming language via &lt;a href=&quot;https://live.gnome.org/GObjectIntrospection&quot;&gt;GObject Introspection&lt;/a&gt;. The basic idea is that programmer simply defines the desired characteristics of the sandbox, such as the command to be executed, any arguments, filesystems to be exposed from host, any bind mounts, private networking configuration, etc. From this configuration description, libvirt-sandbox will decide upon &amp;amp; construct a libvirt guest XML configuration that can actually provided the requested characteristics. In other words, the libvirt-sandbox API is providing a layer of policy avoid libvirt, to isolate the application developer from the implementation details of the underlying hypervisor.&lt;/p&gt;
&lt;p&gt;Building sandboxes using LXC is quite straightforward, since application confinement is a core competency of LXC. Thus I will move straight to the KVM implementation, which is where the real fun is. Booting up an entire virtual machine probably sounds like quite a slow process, but it really need not be particularly if you have a well constrained hardware definition which avoids any need for probing. People also generally assume that running a KVM guest, means having a guest operating system install. This is absolutely something that is not acceptable for application sandboxing, and indeed not actually necessary. In a nutshell, libvirt-sandbox creates a new initrd image containing a custom init binary. This init binary simply loads the virtio-9p kernel module and then mounts the host OS&amp;#8217; root filesystem as the guest&amp;#8217;s root filesystem, readonly of course. It then hands off to a second boot strap process which runs the desired application binary and forwards I/O back to the host OS, until the sandboxed application exits. Finally the init process powers off the virtual machine. To get an idea of the overhead, the /bin/false binary can be executed inside a KVM sandbox with an overall execution time of 4 seconds. That is the total time for libvirt to start QEMU, QEMU to run its BIOS, the BIOS to load the kernel + initrd, the kenrel to boot up, /bin/false to run, and the kernel to shutdown &amp;amp; QEMU to exit. I think 3 seconds is pretty impressive todo all that. This is a constant overhead, so for a long running command like an MP3 encoder, it disappears into the background noise. With sufficient optimization, I&amp;#8217;m fairly sure we could get the overhead down to approx 2 seconds.&lt;/p&gt;
&lt;h3&gt;Using the virt-sandbox command&lt;/h3&gt;
&lt;p&gt;The Fedora review of the libvirt-sandbox package was nice &amp;amp; straightforward, so the package is already available in rawhide for ready to test the &lt;a href=&quot;https://fedoraproject.org/wiki/Features/VirtSandbox&quot;&gt;VirtSandbox F17 feature&lt;/a&gt;. The virt-sandbox command is provided by the libvirt-sandbox RPM package&lt;/p&gt;
&lt;p&gt;# yum install libvirt-sandbox&lt;/p&gt;
&lt;p&gt;Assuming libvirt is already installed &amp;amp; able to run either LXC or KVM guests, everything is ready to use immediately.&lt;/p&gt;
&lt;p&gt;A first example is to run the &amp;#8216;/bin/date&amp;#8217; command inside a KVM sandbox:&lt;/p&gt;
&lt;pre&gt;$ virt-sandbox -c qemu:///session  /bin/date
Thu Jan 12 22:30:03 GMT 2012&lt;/pre&gt;
&lt;p&gt;You want proof that this really is running an entire KVM guest ? How about looking at the /proc/cpuinfo contents:&lt;/p&gt;
&lt;pre&gt;$ virt-sandbox -c qemu:///session /bin/cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 2
model name	: QEMU Virtual CPU version 1.0
stepping	: 3
cpu MHz		: 2793.084
cache size	: 4096 KB
fpu		: yes
fpu_exception	: yes
cpuid level	: 4
wp		: yes
flags		: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm up rep_good nopl pni cx16 hypervisor lahf_lm
bogomips	: 5586.16
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:&lt;/pre&gt;
&lt;p&gt;How about using LXC instead of KVM, and providing an interactive console instead of just a one-shot command ? Yes, we can do that too:&lt;/p&gt;
&lt;pre&gt;$ virt-sandbox -c lxc:/// /bin/sh
sh-4.2$ ps -axuwf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 165436  3756 pts/0    Ss+  22:31   0:00 libvirt-sandbox-init-lxc
berrange    24  0.0  0.1 167680  4688 pts/0    S+   22:31   0:00 libvirt-sandbox-init-common
berrange    47  0.0  0.0  13852  1608 pts/1    Ss   22:31   0:00  \_ /bin/sh
berrange    48  0.0  0.0  13124   996 pts/1    R+   22:31   0:00      \_ ps -axuwf&lt;/pre&gt;
&lt;p&gt;Notice how we only see the processes from our sandbox, none from the host OS. There are many more examples I&amp;#8217;d like to illustrate, but this post is already far too long.&lt;/p&gt;
&lt;h3&gt;Future development&lt;/h3&gt;
&lt;p&gt;This blog post might give the impression that every is complete &amp;amp; operational, but that is far from the truth. This is only the bare minimum functionality to enable some real world usage.  Things that are yet to be dealt with include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write suitable SELinux policy extensions to allow KVM to access host OS filesystems in readonly mode. Currently you need to run in permissive mode which is obviously something that needs solving before F17&lt;/li&gt;
&lt;li&gt;Turn the virt-viewer command code for SPICE/VNC into a formal API and use that to provide a graphical sandbox running Xorg.&lt;/li&gt;
&lt;li&gt;Integrate a tool that is able to automatically create sandbox instances for system services like apache to facilitate confined vhosting deployments&lt;/li&gt;
&lt;li&gt;Correctly propagate exit status from the sandboxed command to the host OS&lt;/li&gt;
&lt;li&gt;Unentangle stderr and stdout from the sandboxed command&lt;/li&gt;
&lt;li&gt;Figure out how to make dhclient work nicely when / is readonly and resolv.conf must be updated in-place&lt;/li&gt;
&lt;li&gt;Expose all the libvirt performance tuning controls to allow disk / net I/O controls, CPU scheduling, NUMA affinity, etc&lt;/li&gt;
&lt;li&gt;Wire up libvirt&amp;#8217;s firewall capability to allow detailed filtering of network traffic to/from sandboxes&lt;/li&gt;
&lt;li&gt;Much more&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For those attending FOSDEM this year, I will be giving a &lt;a href=&quot;http://fosdem.org/2012/schedule/event/libvirt_lxc_kvm_sandboxes&quot;&gt;presentation about libvirt-sandbox&lt;/a&gt; in the virt/cloud track.&lt;/p&gt;
&lt;p&gt;Oh and as well as the released tar.gz mentioned in the first paragraph, or the Fedora RPM, the  code is all &lt;a href=&quot;http://libvirt.org/git/?p=libvirt-sandbox.git;a=summary&quot;&gt;available in GIT&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Daniel Berrange</name>
			<uri>http://berrange.com</uri>
		</author>
		<source>
			<title type="html">Daniel P. Berrangé » Virt Tools</title>
			<subtitle type="html">Writing about photography, open source software, virtualization &amp;amp; more</subtitle>
			<link rel="self" href="http://berrange.com/topics/virt-tools/feed/"/>
			<id>http://berrange.com/topics/virt-tools/feed/</id>
			<updated>2012-04-03T21:11:06+00:00</updated>
		</source>
	</entry>

</feed>

