-<html>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>Short introduction to libguestfs</title>
counter-reset: chapter;
}
- body p {
+ body > p, body > img, body > pre, body > table {
margin-left: 2em;
}
}
h2 {
- background-color: #f3f3f3;
- margin-top: 2em;
+ margin-top: 4em;
color: rgb(204,0,0);
counter-increment: chapter;
counter-reset: section;
h2:before {
font-size: 80%;
color: #666;
- content: counter(chapter) " — ";
+ content: counter(chapter) " ... ";
}
pre {
background-color: #fcfcfc;
- border-top: 1px dotted #888;
- border-bottom: 1px dotted #888;
- border-left: 6px solid rgb(204,0,0);
+ border-top: 1px dotted #eee;
+ border-bottom: 1px dotted #eee;
+ border-left: 2px solid rgb(204,0,0);
padding: 5px;
margin-left: 1em;
}
p.sourcelnk {
- text-align: right;
+ text-align: left;
font-size: 70%;
}
</style>
<p><b>Reuse qemu, Linux kernel and userspace tools</b> to read and
write disk images.</p>
- <img src="overview.svg"/>
+ <object type="image/svg+xml" data="overview.svg">
+ <img src="overview.png"/> <!-- fallback for lame IE -->
+ </object>
<h2>The Stable API</h2>
<table width="100%">
<tr><td valign="top">
-<pre style="font-size: 80%;">
+<pre>
("<b>vfs_type</b>",
(RString "fstype",
[Device "device"], []),
</td>
<td valign="top">
-<pre style="font-size: 80%;">
+<pre>
char *
<b>do_vfs_type</b> (const char *device)
{
<h2>Tools written around the API</h2>
- <img src="tools.svg" />
+ <object type="image/svg+xml" data="tools.svg">
+ <img src="tools.png"/> <!-- fallback for lame IE -->
+ </object>
<table>
- <tr><td valign="top">
+ <tr><td valign="top" style="padding-bottom: 1.5em;" colspan="2">
<pre>
-<b>guestfish -N fs -m /dev/sda1 <<EOF</b>
- <font style="color: green;">mkdir /etc
- upload /etc/resolv.conf /etc/resolv.conf
- write /etc/hostname "test01.redhat.com"</font>
+<b>guestfish -N bootrootlv:/dev/VG/LV:ext4:ext4:10G:256M <<EOF</b>
+ <font style="color: green;">mount-options "" /dev/VG/LV /
+ mkdir /boot
+ mount-options "" /dev/sda1 /boot
+ txz-in filesystem.tar.xz /
+ write /etc/HOSTNAME "test01.example.com\n"
+ upload /etc/resolv.conf /etc/resolv.conf</font>
<b>EOF</b>
+<b>guestmount -a test1.img -i mnt/</b>
+<b>ls mnt</b>
+bin dev home lib mnt proc sbin tmp var
+boot etc initrd.img lost+found old-root root sys usr vmlinuz
+<b>cat mnt/etc/HOSTNAME</b>
+test01.example.com
+<b>fusermount -u mnt</b>
</pre>
-<p class="sourcelnk"><a href="http://libguestfs.org/guestfish.1.html">manual ...</a></p>
- </td><td valign="top">
+<p class="sourcelnk"><a href="http://libguestfs.org/guestfish.1.html">manual for guestfish ...</a> <br/>
+<a href="http://libguestfs.org/guestmount.1.html">manual for guestmount ...</a></p>
+ </td></tr>
+ <tr><td valign="top" style="padding-bottom: 1.5em;">
<pre>
<b>virt-df -a /dev/vg/F15x32 -h</b>
Filesystem Size Used Available Use%
F15x32:/dev/vg_f15x32/lv_root 5.5G 3.4G 1.8G 63%
</pre>
<p class="sourcelnk"><a href="http://libguestfs.org/virt-df.1.html">manual ...</a></p>
+ </td>
+ <td valign="top" style="padding-bottom: 1.5em;">
+<pre>
+<b>virt-cat -c qemu:///system -d WinXP 'c:\boot.ini'</b>
+[boot loader]
+timeout=30
+default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
+[operating systems]
+multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=
+"Microsoft Windows XP Professional" /noexecute=optin
+/fastdetect
+</pre>
+<p class="sourcelnk"><a href="http://libguestfs.org/virt-cat.1.html">manual ...</a></p>
</td></tr>
- <tr><td valign="top">
+ <tr><td valign="top" style="padding-bottom: 1.5em;">
<pre>
<b>virt-edit -c qemu:///system -d F15x32 /etc/passwd</b>
-<i>(launches editor)</i>
+<i>(launches text editor to edit guest /etc/passwd)</i>
+
+<b>virt-edit -c qemu:///system -d F15x32 /etc/passwd \
+ -e 's/^root:.*?:/root::/'</b>
</pre>
<p class="sourcelnk"><a href="http://libguestfs.org/virt-edit.1.html">manual ...</a></p>
- </td><td valign="top">
+ </td><td valign="top" style="padding-bottom: 1.5em;">
<pre>
<b>virt-win-reg -c qemu:///system --unsafe-printable-strings \
Win7x32 'HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters' \
<h2>Inspection</h2>
+<pre>
+$ <b>virt-filesystems -c qemu:///system -d Win7x32 --all --long -h --uuid</b>
+Name Type VFS Label MBR Size Parent UUID
+/dev/sda1 filesystem ntfs System Reserved - 100M - F81C92571C92112C
+/dev/sda2 filesystem ntfs - - 20G - F2E8996AE8992E3B
+/dev/sda1 partition - - 07 100M /dev/sda -
+/dev/sda2 partition - - 07 20G /dev/sda -
+/dev/sda device - - - 20G - -
+</pre>
+<p class="sourcelnk">
+<a href="http://libguestfs.org/virt-filesystems.1.html">manual ...</a>
+</p>
+
+<pre>
+$ <b>virt-inspector -c qemu:///system -d Win7x32</b>
+<font style="color: #888;"><?xml version="1.0"?></font>
+<font style="color: #888;"><operatingsystems></font>
+ <font style="color: #888;"><operatingsystem></font>
+ <font style="color: #888;"><root></font>/dev/sda2<font style="color: #888;"></root></font>
+ <font style="color: #888;"><name></font>windows<font style="color: #888;"></name></font>
+ <font style="color: #888;"><arch></font>i386<font style="color: #888;"></arch></font>
+ <font style="color: #888;"><distro></font>windows<font style="color: #888;"></distro></font>
+ <font style="color: #888;"><product_name></font>Windows 7 Enterprise<font style="color: #888;"></product_name></font>
+ <font style="color: #888;"><product_variant></font>Client<font style="color: #888;"></product_variant></font>
+ <font style="color: #888;"><major_version></font>6<font style="color: #888;"></major_version></font>
+ <font style="color: #888;"><minor_version></font>1<font style="color: #888;"></minor_version></font>
+ <font style="color: #888;"><windows_systemroot></font>/Windows<font style="color: #888;"></windows_systemroot></font>
+ <font style="color: #888;"><windows_current_control_set></font>ControlSet001<font style="color: #888;"></windows_current_control_set></font>
+ <font style="color: #888;"><hostname></font>win7x32<font style="color: #888;"></hostname></font>
+<i>... etc ...</i>
+</pre>
+<p class="sourcelnk">
+<a href="win7.xml">full XML ...</a> <br/>
+<a href="http://libguestfs.org/virt-inspector.1.html">manual ...</a>
+</p>
+
+<pre>
+ char **roots;
+ size_t i;
+ char *type, *distro, *product_name;
+ int major, minor;
+
+ roots = <b>guestfs_inspect_os</b> (g);
+
+ if (roots == NULL)
+ exit (EXIT_FAILURE);
+
+ if (roots[0] == NULL) {
+ fprintf (stderr, "no operating systems found\n");
+ exit (EXIT_FAILURE);
+ }
+
+ for (i = 0; roots[i] != NULL; ++i) {
+ type = <b>guestfs_inspect_get_type</b> (g, roots[i]);
+ distro = <b>guestfs_inspect_get_distro</b> (g, roots[i]);
+ product_name = <b>guestfs_inspect_get_product_name</b> (g, roots[i]);
+ major = <b>guestfs_inspect_get_major_version</b> (g, roots[i]);
+ minor = <b>guestfs_inspect_get_minor_version</b> (g, roots[i]);
+
+ printf ("Root: %s\n"
+ " Type: %s\n"
+ " Distro: %s\n"
+ " Version: %d.%d\n"
+ " Product name: %s\n\n");
+ roots[i],
+ type ? : "unknown", distro ? : "unknown", major, minor,
+ product_name ? : "");
+
+ free (type);
+ free (distro);
+ free (product_name);
+ free (roots[i]);
+ }
+
+ free (roots);
+</pre>
+<p class="sourcelnk"><a href="http://git.annexia.org/?p=libguestfs.git;a=blob;f=rescue/virt-rescue.c;h=0c0036460434f1365d9591d6b2b805d999b07056;hb=HEAD#l351">full source ...</a></p>
+
+ <table>
+ <tr><td colspan="2" align="middle">
+ <small><i>Click to enlarge the images</i></small>
+ </td></tr>
+ <tr><td width="50%">
+ <a href="virt-manager.png"><img src="virt-manager-t.png"></a>
+ </td><td width="50%" align="middle" valign="top">
+ <a href="vmm-icons.png"><img src="vmm-icons-t.png"></a>
+ </td></tr>
+ </table>
+
+
+
+
+ <h2>Graphical browsers</h2>
+
+ <p>
+ <img src="https://rwmj.files.wordpress.com/2011/07/guestfs-browser1.png?w=438&h=450"/>
+ </p>
+ <p>
+ <img src="https://rwmj.files.wordpress.com/2011/07/guestfs-browser2.png?w=438&h=450"/>
+ </p>
+ <p>
+ <img src="https://rwmj.files.wordpress.com/2011/07/guestfs-browser3.png?w=366&h=450"/>
+ </p>
- <h2>V2V & P2V</h2>
+ <p>
+ <img src="https://rwmj.files.wordpress.com/2011/07/guestfs-browser4.png?w=366&h=450"/>
+ </p>
+ <p class="sourcelnk"><a href="https://rwmj.wordpress.com/2011/07/29/some-screenshots-from-the-new-guest-filesystem-browser/">source ...</a></p>
+ <p>
+ <img src="https://rwmj.files.wordpress.com/2009/11/file-browser.png?w=500"/>
+ </p>
+ <p class="sourcelnk"><a href="https://rwmj.wordpress.com/2009/11/03/browsing-guests-using-fuse/">source ...</a></p>
- <h2>Read more ...</h2>
+ <h2>Find out more ...</h2>
<p>
<a href="http://libguestfs.org/">libguestfs.org</a> is the
local man command.
</p>
+ <p>
+ For information about virt-v2v and virt-p2v, see
+ <a href="http://libguestfs.org/virt-v2v/">http://libguestfs.org/virt-v2v/</a>
+ </p>
+
<hr/>
<p style="font-size: 70%;">