Add 2015 Red Hat QE talk.
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 14 Sep 2015 12:42:08 +0000 (13:42 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 14 Sep 2015 17:32:14 +0000 (18:32 +0100)
2015-qe/Makefile [new file with mode: 0644]
2015-qe/README [new file with mode: 0644]
2015-qe/notes.txt [new file with mode: 0644]
2015-qe/slide1.svg [new file with mode: 0644]
2015-qe/slide2.svg [new file with mode: 0644]
2015-qe/slide3.svg [new file with mode: 0644]
2015-qe/slide4.svg [new file with mode: 0644]
2015-qe/slide5.svg [new file with mode: 0644]
2015-qe/slide6.svg [new file with mode: 0644]
2015-qe/slides.pdf [new file with mode: 0644]

diff --git a/2015-qe/Makefile b/2015-qe/Makefile
new file mode 100644 (file)
index 0000000..24b39b9
--- /dev/null
@@ -0,0 +1,9 @@
+slides := slide1.svg slide2.svg slide3.svg slide4.svg slide5.svg slide6.svg
+
+all: slides.pdf
+
+clean:
+       rm slides.pdf
+
+slides.pdf: $(slides)
+       convert $^ $@
diff --git a/2015-qe/README b/2015-qe/README
new file mode 100644 (file)
index 0000000..5617ab1
--- /dev/null
@@ -0,0 +1,6 @@
+This is a talk that I gave to the Red Hat internal QE team
+in Sept 2015.
+
+Please start with --> notes.txt
+
+For slides --> slides.pdf
diff --git a/2015-qe/notes.txt b/2015-qe/notes.txt
new file mode 100644 (file)
index 0000000..c2f2c88
--- /dev/null
@@ -0,0 +1,549 @@
+1. History and architecture
+---------------------------
+
+I want to explain first of all where libguestfs came from and
+how the architecture works.
+
+In about 2008 it was very clear Red Hat had a lot of problems reading
+and modifying disk images from virtual machines.  For some disk
+images, you could use tools like 'losetup' and 'kpartx' to mount them
+on the host kernel.  But that doesn't work in many cases, for example:
+
+ - The disk image is not "raw format" (eg. qcow2).
+
+ - The disk image uses LVM (because names and UUIDs can conflict
+   with LVM names/UUIDs used by the host or other VMs).
+
+It also requires root privileges, which means any program that wanted
+to read a disk image would need to run as root.
+
+It's also insecure, since malformed disk images can exploit bugs in
+the host kernel to gain root on the host (this *cannot* be protected
+against using UIDs or SELinux).
+
+1.1 Architecture of libguestfs
+------------------------------
+
+Libguestfs is the solution to the above problems.
+
+Let's see how libguestfs works.
+
+[SLIDE 1]
+
+You'll be familiar with an ordinary Linux virtual machine.  The Linux
+VM runs inside a host process called "qemu".  The Linux guest has a
+kernel and userspace, and the qemu process translates requests from
+the guest into accesses to a host disk image.  The host disk image
+could be stored in an ordinary file, or it could be stored in a host
+logical volume, and it could be stored in several formats like raw,
+qcow2, VMDK and so on.
+
+[SLIDE 2]
+
+That's an ordinary Linux VM.  libguestfs uses the same technique, but
+using a special VM that we call the "libguestfs appliance" or just the
+"appliance".
+
+The appliance is a cut down, much smaller Linux operating system,
+running inside qemu.  It has the userspace tools like "lvm", "parted"
+and so on.  But it's also special because it only runs a single
+process, called "guestfsd" (the guestfs daemon).  It uses qemu to
+access the disk image, in exactly the same way as an ordinary VM.
+
+What creates the appliance - and who controls it?
+
+[SLIDE 3]
+
+Libguestfs is also a C library ("/usr/lib64/libguestfs.so.0").  It is
+this library that creates the appliance -- just by running qemu.  The
+C library also talks to the guestfs daemon over a simple command
+channel, and it sends commands to it.
+
+Commands are things like:
+
+ - Return a list of all the partitions ("part_list").
+
+ - Create a new filesystem ("mkfs").
+
+ - Write this data into a file ("write").
+
+1.2 libguestfs approach vs others
+---------------------------------
+
+Some advantages of this approach:
+
+ - We can support every qemu feature
+   qcow2 / ceph remote access / iscsi / NBD / compressed / sparse ...
+
+ - We can support every filesystem that Linux kernel supports
+   ext4 / btrfs / xfs / NTFS / ...
+
+ - We're using the same drivers as Linux (eg. ext4.ko), so all the
+   filesystem features work.
+
+ - LVM etc. "just works"
+
+ - It doesn't need root (because you can run qemu on the host
+   as any user).
+
+ - It's secure (non-root, sVirt, libvirt containerization).
+
+Disadvantages:
+
+ - Architecturally complex.
+
+ - Slower than direct mounting.
+
+The main job of libguestfs is to:
+
+ - Hide the complexity of the appliance.
+
+ - Make it simple to use, fast, and reliable.
+
+ - Offer a stable API to programs.
+
+ - Offer useful tools on top for everyday tasks.
+
+1.3 Example
+-----------
+
+As an example of how this would work:
+
+(1) Program linked to libguestfs calls "guestfs_part_list" (an API).
+
+(2) The library sends the "part_list" command.
+
+(3) The command is serialized and sent as a message from the
+library to the guestfs daemon.
+
+(4) The daemon runs "parted -m -s -- /dev/sda unit b print"
+(this is happening inside the appliance).
+
+(5) qemu does a lot of complicated translations - especially if the
+disk image uses qcow2.  That happens "by magic", we don't see it or
+have to worry about it.
+
+(6) "parted" prints out a list of partitions, which the daemon
+parses and serializes into a reply message.
+
+(7) The reply message is sent back to the library, which unpacks the
+data and passes it back to the caller.
+
+You can try this for yourself.  "guestfish" is a C program that links
+to the libguestfs.so.0 library.  It is a very thin wrapper over the
+libguestfs C API -- all it does really is parse commands and print out
+replies.
+
+$ virt-builder centos-6
+
+$ guestfish
+
+Welcome to guestfish, the guest filesystem shell for
+editing virtual machine filesystems and disk images.
+
+Type: 'help' for help on commands
+      'man' to read the manual
+      'quit' to quit the shell
+
+><fs> add centos-6.img readonly:true
+><fs> run
+><fs> part-list /dev/sda
+[0] = {
+  part_num: 1
+  part_start: 1048576
+  part_end: 537919487
+  part_size: 536870912
+}
+[1] = {
+  part_num: 2
+  part_start: 537919488
+  part_end: 1611661311
+  part_size: 1073741824
+}
+[2] = {
+  part_num: 3
+  part_start: 1611661312
+  part_end: 6442450943
+  part_size: 4830789632
+}
+><fs> exit
+
+"add" [C API: guestfs_add_drive_opts] tells libguestfs to how to
+construct the qemu command.  It roughly translates into:
+
+  qemu -drive file=centos-6.img,snapshot=on
+
+"run" [C API: guestfs_launch] is what runs the qemu command, creating
+the appliance.  It also sets up the message channel between the
+library and the guestfs daemon.
+
+"part-list" [C API: guestfs_part_list] translates directly into a
+message sent to the guestfs daemon.  Not all commands work like this:
+some are further translated by the library, and may result in many
+messages being sent to the daemon, or none at all.
+
+1.3.1 Debugging
+---------------
+
+guestfish gives you a way to see the lower levels at work.  Just
+add the "guestfish -v -x" flags.  "-x" traces all libguestfs API
+calls.  "-v" prints out all debug output from the library and
+the appliance, which includes appliance kernel messages.
+
+Almost all commands take the "-v -x" flags (except virt-win-reg
+for obscure historical reasons).
+
+
+
+2. More about the appliance
+---------------------------
+
+2.1 Running the appliance: direct vs libvirt
+--------------------------------------------
+
+In RHEL we try to stop people running qemu directly, and point them
+towards libvirt for managing virtual machines.
+
+Libguestfs has the same concern: Should it run the qemu command
+directly, or should it use libvirt to run the qemu command.  There are
+pros and cons:
+
+ - Running qemu directly gives us the most flexibility, eg. if we
+   need to use a new qemu feature which libvirt doesn't support.
+
+ - Libvirt implements extra security: SELinux (SVirt), separate
+   'qemu' UID, cgroups.
+
+ - Libvirt is a big component with many complicated moving parts,
+   meaning that using libvirt is less reliable.
+
+Over time, we have added all the features we need to libvirt.  In
+fact, now using libvirt we can access *more* qemu features than by
+running qemu directly.  However there are still reliability issues
+with libvirt.
+
+RHEL 6: Always used the 'direct' method (running qemu directly).
+
+RHEL 7: Defaults to 'libvirt' method, but provides a fallback in case
+users have reliability problems:
+
+  export LIBGUESTFS_BACKEND=direct
+
+2.2 SELinux / sVirt
+-------------------
+
+[SLIDE 4]
+
+In the ordinary case where you are hosting many virtual machines on a
+single physical machine, libvirt runs all those virtual machines as
+the same non-root user ("qemu:qemu").
+
+Unfortunately this means that if one VM is exploited because of some
+bug in qemu, it could then go on to exploit other VMs on the same
+host.  This is because there is no host protection between different
+processes running as the same user.
+
+[SLIDE 5]
+
+SVirt prevents this using SELinux.
+
+What it does is it gives each VM a different SELinux label.  It labels
+every resource that a VM needs (like all its disk images) with that
+SELinux label.  And it adds SELinux policies that prevent one VM from
+accessing another VM's differently-labelled resources.
+
+Libguestfs (when using the libvirt backend) uses the same mechanism.
+It prevents an exploit from one disk image from possibly escalating to
+other disk images, and is important for use cases like RHEV and
+OpenStack where a single host user (eg. "vdsm") is using many
+libguestfs handles at the same time.
+
+2.3 Creating the appliance: supermin
+------------------------------------
+
+I didn't talk about how the appliance is built.  It's a small
+Linux-based OS, but how do we make it?  Is it RHEL?  Is it Fedora?
+(The answer: sort of, but not really).
+
+We have several constraints when building the appliance, which may
+not be obvious:
+
+ - Cannot compile our own kernel.  It wouldn't be supported by RHEL.
+
+ - Cannot distribute a huge, binary-only blob.  It would be too large
+   to download, and static linking is generally forbidden in Fedora,
+   RHEL, and most other Linux distros.
+
+ - Want to get bug/security fixes from the distro automatically.
+
+[SLIDE 6]
+
+The idea is that we build the appliance from the host distro.  If the
+host distro is RHEL 7, then we copy the programs we need from RHEL to
+make the appliance.
+
+All of the programs and libraries ("parted", "lvm", "libc.so.6") and
+the kernel and kernel modules get copied to make the appliance.  If a
+program on the host gets updated (eg. to fix a bug), we copy in the
+new program the next time libguestfs runs.
+
+The appliance is created on the end-user's machine, at run time.
+That's why libguestfs takes longer to run the first time you run it,
+or just after you've done a "yum" command (since it rebuilds the
+appliance if there are upgraded binaries).
+
+This is quite complex, but it is controlled by a command line program
+called "supermin" ("supermin5" on RHEL 7), which you can try out:
+
+$ supermin --build /usr/lib64/guestfs/supermin.d \
+      -o /tmp/appliance.d --format ext2
+supermin: open: /usr/bin/chfn: Permission denied  *
+supermin: open: /usr/bin/chsh: Permission denied
+
+$ ls -lh /tmp/appliance.d/
+1.2M initrd
+  35 kernel -> /boot/vmlinuz-4.1.6-200.fc22.x86_64
+4.0G root
+
+"root" is the appliance (root disk).
+
+* The "Permission denied" errors are harmless in this case.  We are
+trying to get this changed in Fedora
+[https://fedorahosted.org/fpc/ticket/467].
+
+2.4 libguestfs-winsupport
+-------------------------
+
+In RHEL 7.2, you have to install an additional package called
+"libguestfs-winsupport" to enable NTFS (Windows filesystem) support.
+
+This relies on an upstream project called ntfs-3g which has
+reverse-engineered the NTFS internals.  We don't ship ntfs-3g in RHEL,
+so there are no "ntfs-3g programs" that can be copied from the host.
+How does it work?
+
+$ rpm -ql libguestfs-winsupport
+/usr/lib64/guestfs/supermin.d/zz-winsupport.tar.gz
+
+$ zcat /usr/lib64/guestfs/supermin.d/zz-winsupport.tar.gz | tar tf -
+./
+./usr/
+./usr/lib64/
+./usr/lib64/libntfs-3g.so
+./usr/lib64/libntfs-3g.so.86
+./usr/lib64/libntfs-3g.so.86.0.0
+./usr/bin/
+./usr/bin/ntfsck
+./usr/bin/ntfscat
+[etc]
+
+As well as copying files from the host, supermin can also unpack a
+tarball into the appliance.
+
+In the case of libguestfs-winsupport, we provide a tarball containing
+the ntfs-3g distribution (the ntfs-3g source is supplied in the
+libguestfs-winsupport source RPM).
+
+We only want to support customers using this for v2v and a few other
+virt operations (like virt-win-reg), so there are checks in libguestfs
+to stop it from being used for general filesystem access.
+
+
+
+3. Some virt tools
+------------------
+
+Libguestfs is a C library with a C API, and guestfish is quite a
+low-level tool which basically offers direct access to the C API.
+
+To make things easier for end users, we built some higher level virt
+tools for particular tasks.  These tools link to libguestfs, and some
+of them also use other libraries (libXML, libvirt directly, "qemu-img"
+directly, Glance, etc.)
+
+There are about a dozen virt tools provided by libguestfs.  Notable
+tools include:
+
+ - virt-edit: Edit a single file inside a VM.
+
+ - virt-inspector: Inspect a disk image to find out if it contains
+   an operating system [see below].
+
+ - virt-builder: Make a new VM.
+
+ - virt-resize: Resize a VM.
+
+ - virt-v2v: Convert a VM from VMware/Xen to run on KVM.
+
+The virt commands use the libguestfs APIs, but often in ways that
+would be hard / complicated for end users to do directly.  For
+example, virt-resize does a lot of calculations to work out how the
+resized partitions should be laid out, and those calculations are too
+hard for most people to do by hand.
+
+
+3.1 Inspection
+--------------
+
+Quite a fundamental libguestfs API operation is called "inspection".
+Many of the virt tools start with inspection: eg. virt-edit, virt-v2v.
+
+The basic idea is we have a disk image (eg. a qcow2 file).  The disk
+image comes from a virtual machine, but we don't know what operating
+system is installed inside the disk image.
+
+Inspection lets you look at any disk image, and will try to find any
+operating system(s) installed on there, and tell you interesting
+things, such as:
+
+ - The OS type, version, architecture (eg. "windows", 6.1, "x86_64").
+
+ - The Linux distro (eg. "centos").
+
+ - What applications are installed.
+
+ - Windows drive letter mappings (eg. "C:" => "/dev/sda2").
+
+Inspection is quite fundamental for V2V, because what operations we
+have to perform on a guest depends on what the guest is.  If it's
+Windows, we have to do a completely different set of things, from a
+RHEL guest.
+
+There is also a specific "virt-inspector" tool which just does
+inspection and then presents the results as XML:
+
+$ virt-inspector -a /tmp/centos-6.img 
+<operatingsystems>
+  <operatingsystem>
+    <name>linux</name>
+    <arch>x86_64</arch>
+    <distro>centos</distro>
+    <product_name>CentOS release 6.6 (Final)</product_name>
+    <major_version>6</major_version>
+    <minor_version>6</minor_version>
+    <mountpoints>
+      <mountpoint dev="/dev/sda3">/</mountpoint>
+      <mountpoint dev="/dev/sda1">/boot</mountpoint>
+    </mountpoints>
+    <applications>
+      <application>
+        <name>ConsoleKit</name>
+        <version>0.4.1</version>
+        <release>3.el6</release>
+        <arch>x86_64</arch>
+      </application>
+      <application>
+        <name>ConsoleKit-libs</name>
+        <version>0.4.1</version>
+        <release>3.el6</release>
+        <arch>x86_64</arch>
+      </application>
+  etc.
+
+3.1.1 How does inspection work?
+-------------------------------
+
+Inspection is basically a large number of heuristics.  For example:
+
+ - If the filesystem contains a file called "/etc/centos-release"
+   then set the Linux distro to "centos".
+
+ - If the filesystem contains a binary called "/bin/bash", then look
+   at the ELF header of that binary to find the OS architecture.
+
+(But way more complicated, and handling Windows too.)
+
+If you want the real details of how inspection works, I suggest
+running virt-inspector with the -x option:
+
+$ virt-inspector -x -a /tmp/centos-6.img |& less
+
+
+
+4. Misc topics (if we have time)
+--------------------------------
+
+4.1 remote images (ceph, NBD etc)
+---------------------------------
+
+Qemu has multiple "block drivers".  Some of those are for using
+different file formats like qcow2.  Others enable remote disks to be
+accessed.  Because libguestfs uses qemu, we get this (almost) for
+free.
+
+To access a remote resource you can use commands like:
+
+  guestfish -a nbd://example.com
+
+  guestfish -a rbd://example.com/pool/disk
+
+In RHEL, many drivers are intentionally disabled.  Also, the drivers
+which are enabled are not particularly well tested at the moment.
+
+
+4.2 parameters, environment variables
+-------------------------------------
+
+There are a lot of parameters which control libguestfs.  Some of these
+are exposed as environment variables, allowing them to be set easily
+outside programs.  Examples: LIBGUESTFS_BACKEND (the "backend" setting),
+LIBGUESTFS_DEBUG/LIBGUESTFS_TRACE (enable debugging/tracing).
+
+Documentation on environment variables:
+
+  http://libguestfs.org/guestfs.3.html#environment-variables
+
+A question was asked about the "program" setting.
+
+When the C library creates a handle, it saves the name of the current
+program.  You can also read or change this setting:
+
+$ guestfish 
+><fs> get-program 
+guestfish
+><fs> set-program virt-foo
+><fs> get-program 
+virt-foo
+
+In upstream libguestfs, this setting has no use.
+
+In RHEL we use it to enforce supportability requirements.
+
+
+4.3 new features in libguestfs
+------------------------------
+
+Libguestfs upstream is mostly stable, but I am hoping to get a
+new test framework upstream in the 1.32 cycle (next 3-4 months).
+
+https://www.redhat.com/archives/libguestfs/2015-August/msg00022.html
+
+
+4.4 copy_(device|file)_to_(device|file)
+---------------------------------------
+
+There is a problem in the API which is that there is no difference
+between "/dev/sda" meaning the disk/device, and "/dev/sda" meaning a
+file called "sda" in the "/dev" directory.
+
+So instead of having a single 'copy' function, we need to tell
+libguestfs whether you want to copy between files or devices.
+
+
+4.5 virt-customize vs. virt-builder
+-----------------------------------
+
+Virt-customize takes an existing disk image containing a guest that
+you created somehow (maybe with virt-builder, maybe some other way),
+and it runs a command such as 'yum install openssh' on it.
+
+Virt-builder copies a template from
+http://libguestfs.org/download/builder/ (or other places), expands it,
+and then runs the 'yum install' command.
+
+So really they are quite similar, and in fact use exactly the same
+code:
+
+https://github.com/libguestfs/libguestfs/blob/master/customize/customize_run.ml#
+L96
+
diff --git a/2015-qe/slide1.svg b/2015-qe/slide1.svg
new file mode 100644 (file)
index 0000000..0e019f7
--- /dev/null
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide1.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4171"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.1811 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09449 : 526.1811 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.7874 : 1"
+       id="perspective4149" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="364.76928"
+     inkscape:cy="509.59565"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4136"
+       width="417.14285"
+       height="254.28572"
+       x="169.71428"
+       y="389.50507" />
+    <g
+       id="g4144"
+       transform="translate(-12.142857,-50.714286)">
+      <rect
+         y="778.07648"
+         x="292.14285"
+         height="115"
+         width="190"
+         id="rect4140"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <ellipse
+         ry="29.999998"
+         rx="94.285713"
+         cy="776.93359"
+         cx="387.14285"
+         id="path4138"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <path
+         sodipodi:open="true"
+         d="m 481.42857,890.93359 a 94.285713,29.999998 0 0 1 -47.14286,25.98076 94.285713,29.999998 0 0 1 -94.28572,0 94.285713,29.999998 0 0 1 -47.14285,-25.98076"
+         sodipodi:end="3.1415927"
+         sodipodi:start="0"
+         sodipodi:ry="29.999998"
+         sodipodi:rx="94.285713"
+         sodipodi:cy="890.93359"
+         sodipodi:cx="387.14285"
+         sodipodi:type="arc"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         id="ellipse4142" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+       d="m 376.14286,640.3622 0,70"
+       id="path4165"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="374.54657"
+       y="787.79077"
+       id="text4551"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4553"
+         x="374.54657"
+         y="787.79077">disk image</tspan><tspan
+         sodipodi:role="line"
+         x="374.54657"
+         y="815.91577"
+         id="tspan4555">(raw/qcow2/..)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="212.12384"
+       y="667.21936"
+       id="text4557"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4559"
+         x="134.28571"
+         y="667.21936">qemu process</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="375.70905"
+       y="614.64795"
+       id="text4561"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4563"
+         x="375.70905"
+         y="614.64795">Linux kernel</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="377.57578"
+       y="522.36224"
+       id="text4565"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4567"
+         x="377.57578"
+         y="522.36224">Linux userspace</tspan><tspan
+         sodipodi:role="line"
+         x="377.57578"
+         y="550.48724"
+         id="tspan4569">(GNOME, emacs, libreoffice, etc.)</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4571"
+       width="396.98996"
+       height="48.487324"
+       x="179.80716"
+       y="580.62097" />
+  </g>
+</svg>
diff --git a/2015-qe/slide2.svg b/2015-qe/slide2.svg
new file mode 100644 (file)
index 0000000..e37091e
--- /dev/null
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide2.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker5343"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5345" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5315"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="scale(0.8) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5317" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4171"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.1811 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09449 : 526.1811 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.7874 : 1"
+       id="perspective4149" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="391.87539"
+     inkscape:cy="543.01905"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4136"
+       width="417.14285"
+       height="254.28572"
+       x="169.71428"
+       y="389.50507" />
+    <g
+       id="g4144"
+       transform="translate(-12.142857,-50.714286)">
+      <rect
+         y="778.07648"
+         x="292.14285"
+         height="115"
+         width="190"
+         id="rect4140"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <ellipse
+         ry="29.999998"
+         rx="94.285713"
+         cy="776.93359"
+         cx="387.14285"
+         id="path4138"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <path
+         sodipodi:open="true"
+         d="m 481.42857,890.93359 a 94.285713,29.999998 0 0 1 -47.14286,25.98076 94.285713,29.999998 0 0 1 -94.28572,0 94.285713,29.999998 0 0 1 -47.14285,-25.98076"
+         sodipodi:end="3.1415927"
+         sodipodi:start="0"
+         sodipodi:ry="29.999998"
+         sodipodi:rx="94.285713"
+         sodipodi:cy="890.93359"
+         sodipodi:cx="387.14285"
+         sodipodi:type="arc"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         id="ellipse4142" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+       d="m 376.14286,640.3622 0,70"
+       id="path4165"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="374.54657"
+       y="787.79077"
+       id="text4551"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4553"
+         x="374.54657"
+         y="787.79077">disk image</tspan><tspan
+         sodipodi:role="line"
+         x="374.54657"
+         y="815.91577"
+         id="tspan4555">(raw/qcow2/..)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="212.12384"
+       y="667.21936"
+       id="text4557"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4559"
+         x="134.28571"
+         y="667.21936">qemu process</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="375.70905"
+       y="614.64795"
+       id="text4561"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4563"
+         x="375.70905"
+         y="614.64795">Linux kernel</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="377.57578"
+       y="522.36224"
+       id="text4565"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4567"
+         x="381.15732"
+         y="522.36224">Cut down Linux operating system </tspan><tspan
+         sodipodi:role="line"
+         x="377.57578"
+         y="550.48724"
+         id="tspan4569">(parted, lvm, and other core tools)</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4571"
+       width="396.98996"
+       height="48.487324"
+       x="179.80716"
+       y="580.62097" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="381.16776"
+       y="466.47372"
+       id="text5279"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5281"
+         x="381.16776"
+         y="466.47372">guestfsd</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect5283"
+       width="137.38075"
+       height="40.406101"
+       x="310.11682"
+       y="440.20975" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="224.28572"
+       y="304.86221"
+       id="text5293"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5295"
+         x="224.28572"
+         y="304.86221" /></text>
+  </g>
+</svg>
diff --git a/2015-qe/slide3.svg b/2015-qe/slide3.svg
new file mode 100644 (file)
index 0000000..8c6cfeb
--- /dev/null
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide2.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker5343"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5345" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5315"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="scale(0.8) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5317" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4171"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.1811 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09449 : 526.1811 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.7874 : 1"
+       id="perspective4149" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="391.87539"
+     inkscape:cy="543.01905"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4136"
+       width="417.14285"
+       height="254.28572"
+       x="169.71428"
+       y="389.50507" />
+    <g
+       id="g4144"
+       transform="translate(-12.142857,-50.714286)">
+      <rect
+         y="778.07648"
+         x="292.14285"
+         height="115"
+         width="190"
+         id="rect4140"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <ellipse
+         ry="29.999998"
+         rx="94.285713"
+         cy="776.93359"
+         cx="387.14285"
+         id="path4138"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <path
+         sodipodi:open="true"
+         d="m 481.42857,890.93359 a 94.285713,29.999998 0 0 1 -47.14286,25.98076 94.285713,29.999998 0 0 1 -94.28572,0 94.285713,29.999998 0 0 1 -47.14285,-25.98076"
+         sodipodi:end="3.1415927"
+         sodipodi:start="0"
+         sodipodi:ry="29.999998"
+         sodipodi:rx="94.285713"
+         sodipodi:cy="890.93359"
+         sodipodi:cx="387.14285"
+         sodipodi:type="arc"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         id="ellipse4142" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+       d="m 376.14286,640.3622 0,70"
+       id="path4165"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="374.54657"
+       y="787.79077"
+       id="text4551"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4553"
+         x="374.54657"
+         y="787.79077">disk image</tspan><tspan
+         sodipodi:role="line"
+         x="374.54657"
+         y="815.91577"
+         id="tspan4555">(raw/qcow2/..)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="212.12384"
+       y="667.21936"
+       id="text4557"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4559"
+         x="134.28571"
+         y="667.21936">qemu process</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="375.70905"
+       y="614.64795"
+       id="text4561"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4563"
+         x="375.70905"
+         y="614.64795">Linux kernel</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="377.57578"
+       y="522.36224"
+       id="text4565"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4567"
+         x="381.15732"
+         y="522.36224">Cut down Linux operating system </tspan><tspan
+         sodipodi:role="line"
+         x="377.57578"
+         y="550.48724"
+         id="tspan4569">(parted, lvm, and other core tools)</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4571"
+       width="396.98996"
+       height="48.487324"
+       x="179.80716"
+       y="580.62097" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="381.16776"
+       y="466.47372"
+       id="text5279"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5281"
+         x="381.16776"
+         y="466.47372">guestfsd</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect5283"
+       width="137.38075"
+       height="40.406101"
+       x="310.11682"
+       y="440.20975" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect5285"
+       width="324.25897"
+       height="152.53304"
+       x="215.16249"
+       y="173.5295" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 216.65234,258.08644 322.70784,-0.29587"
+       id="path5287"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="221.42857"
+       y="280.57648"
+       id="text5289"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5291"
+         x="221.42857"
+         y="280.57648">/usr/lib64/libguestfs.so.0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="224.28572"
+       y="304.86221"
+       id="text5293"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5295"
+         x="224.28572"
+         y="304.86221" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="223.21429"
+       y="196.64792"
+       id="text5297"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5299"
+         x="223.21429"
+         y="196.64792">virt-inspector</tspan></text>
+    <path
+       inkscape:connector-curvature="0"
+       id="path5313"
+       d="m 331.14286,297.50505 30,140"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5315);marker-end:url(#marker5343)"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/2015-qe/slide4.svg b/2015-qe/slide4.svg
new file mode 100644 (file)
index 0000000..2c81687
--- /dev/null
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg6613"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide4.svg">
+  <defs
+     id="defs6615">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="233.76595"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6618">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7190">
+      <rect
+         y="366.64792"
+         x="114.28571"
+         height="235.71428"
+         width="201.42857"
+         id="rect7180"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text7182"
+         y="350.21936"
+         x="119.28571"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="350.21936"
+           x="119.28571"
+           id="tspan7184"
+           sodipodi:role="line">qemu process</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7186"
+         y="480.93362"
+         x="165.71429"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="480.93362"
+           x="165.71429"
+           id="tspan7188"
+           sodipodi:role="line">VM #1</tspan></text>
+    </g>
+    <rect
+       y="366.64792"
+       x="386.28571"
+       height="235.71428"
+       width="201.42857"
+       id="rect7199"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+    <text
+       sodipodi:linespacing="125%"
+       id="text7201"
+       y="350.21936"
+       x="391.28571"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="350.21936"
+         x="391.28571"
+         id="tspan7203"
+         sodipodi:role="line">qemu process</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text7205"
+       y="480.93362"
+       x="437.71429"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="480.93362"
+         x="437.71429"
+         id="tspan7207"
+         sodipodi:role="line">VM #2</tspan><tspan
+         y="509.05862"
+         x="437.71429"
+         sodipodi:role="line"
+         id="tspan7214" /><tspan
+         y="537.18359"
+         x="437.71429"
+         sodipodi:role="line"
+         id="tspan7216">(bad VM)</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 478.57142,570.93363 c 0,0 -94.04761,18.33334 -135.71428,12.85715 -41.66667,-5.47619 -114.28572,-45.71429 -114.28572,-45.71429"
+       id="path7218"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="339.78464"
+       y="639.50507"
+       id="text7240"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan7242"
+         x="339.78464"
+         y="639.50507">both running as UID:GID qemu:qemu</tspan></text>
+  </g>
+</svg>
diff --git a/2015-qe/slide5.svg b/2015-qe/slide5.svg
new file mode 100644 (file)
index 0000000..96849b8
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg6613"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide5.svg">
+  <defs
+     id="defs6615">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="120.19452"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6618">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7190">
+      <rect
+         y="366.64792"
+         x="114.28571"
+         height="235.71428"
+         width="201.42857"
+         id="rect7180"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text7182"
+         y="350.21936"
+         x="119.28571"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="350.21936"
+           x="119.28571"
+           id="tspan7184"
+           sodipodi:role="line">qemu process</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7186"
+         y="480.93362"
+         x="165.71429"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="480.93362"
+           x="165.71429"
+           id="tspan7188"
+           sodipodi:role="line">VM #1</tspan></text>
+    </g>
+    <rect
+       y="366.64792"
+       x="386.28571"
+       height="235.71428"
+       width="201.42857"
+       id="rect7199"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
+    <text
+       sodipodi:linespacing="125%"
+       id="text7201"
+       y="350.21936"
+       x="391.28571"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="350.21936"
+         x="391.28571"
+         id="tspan7203"
+         sodipodi:role="line">qemu process</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text7205"
+       y="480.93362"
+       x="437.71429"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="480.93362"
+         x="437.71429"
+         id="tspan7207"
+         sodipodi:role="line">VM #2</tspan><tspan
+         y="509.05862"
+         x="437.71429"
+         sodipodi:role="line"
+         id="tspan7214" /><tspan
+         y="537.18359"
+         x="437.71429"
+         sodipodi:role="line"
+         id="tspan7216">(bad VM)</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 478.57142,570.93363 c 0,0 -94.04761,18.33334 -135.71428,12.85715 -41.66667,-5.47619 -114.28572,-45.71429 -114.28572,-45.71429"
+       id="path7218"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="339.78464"
+       y="639.50507"
+       id="text7240"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan7242"
+         x="339.78464"
+         y="639.50507">both running as UID:GID qemu:qemu</tspan></text>
+    <path
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       d="M 341.31445 562.61719 L 332.05469 567.75977 C 335.26919 572.17633 338.82699 576.35427 342.64453 580.26172 C 344.28181 581.93756 346.00807 583.52436 347.6543 585.19141 C 347.91835 585.4588 348.17538 585.73267 348.4375 586.00195 C 346.69951 588.55483 345.0368 591.15994 343.51367 593.85547 C 341.1409 597.82476 339.49181 600.51596 337.25195 604.50977 C 336.40375 606.02216 335.48684 607.50335 334.76953 609.08203 C 333.52728 611.816 333.00338 614.74123 332.41992 617.65625 L 341.86523 612.84375 C 342.35084 610.07877 342.69421 607.41786 343.87695 604.81641 C 344.55967 603.31476 345.45423 601.91824 346.25586 600.47656 C 349.23911 595.11142 349.10047 595.42251 352.28711 590.00781 C 352.47263 590.20176 352.65776 590.39635 352.84375 590.58984 C 357.33456 595.73482 358.54238 596.79755 362.34375 602.39844 C 363.66401 604.3437 364.82183 606.39441 366.06055 608.39258 L 374.29492 603.59961 C 373.02595 601.59001 371.83695 599.52731 370.48828 597.57031 C 366.79789 592.21531 365.19355 590.62589 360.92383 585.66602 C 359.73191 584.39691 358.54017 583.1279 357.34766 581.85938 C 361.5174 575.71842 366.19351 569.91549 370.75391 564.06641 L 362.23828 567.7168 C 359.48712 571.24049 356.69713 574.74853 353.99023 578.31641 C 349.32773 573.44933 344.65323 568.5178 341.31445 562.61719 z "
+       id="path8236" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="325.28571"
+       y="548.79077"
+       id="text8247"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan8249"
+         x="325.28571"
+         y="548.79077">sVirt</tspan></text>
+  </g>
+</svg>
diff --git a/2015-qe/slide6.svg b/2015-qe/slide6.svg
new file mode 100644 (file)
index 0000000..73d160e
--- /dev/null
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg8251"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="slide6.svg">
+  <defs
+     id="defs8253">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker8921"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path8923" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4174"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="280.84584"
+     inkscape:cy="528.02393"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1058"
+     inkscape:window-x="1366"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata8256">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8831">
+      <rect
+         y="325.05237"
+         x="57.578693"
+         height="362.64474"
+         width="259.60919"
+         id="rect8799"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text8801"
+         y="308.88992"
+         x="58.588848"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="308.88992"
+           x="58.588848"
+           id="tspan8803"
+           sodipodi:role="line">host filesystem</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text8805"
+         y="365.45847"
+         x="64.649765"
+         style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           y="365.45847"
+           x="64.649765"
+           id="tspan8807"
+           sodipodi:role="line">/</tspan><tspan
+           id="tspan8809"
+           y="393.58347"
+           x="64.649765"
+           sodipodi:role="line">+ /bin</tspan><tspan
+           id="tspan8813"
+           y="421.70847"
+           x="64.649765"
+           sodipodi:role="line">+ /boot</tspan><tspan
+           id="tspan8817"
+           y="449.83347"
+           x="64.649765"
+           sodipodi:role="line">+ /etc</tspan><tspan
+           id="tspan8827"
+           y="477.95847"
+           x="64.649765"
+           sodipodi:role="line">+ /lib</tspan><tspan
+           id="tspan8829"
+           y="506.08347"
+           x="64.649765"
+           sodipodi:role="line">       libc.so.6</tspan><tspan
+           id="tspan8819"
+           y="534.2085"
+           x="64.649765"
+           sodipodi:role="line">+ /tmp</tspan><tspan
+           id="tspan8821"
+           y="562.3335"
+           x="64.649765"
+           sodipodi:role="line">+ /usr</tspan><tspan
+           id="tspan8823"
+           y="590.4585"
+           x="64.649765"
+           sodipodi:role="line">        + /usr/sbin</tspan><tspan
+           id="tspan8825"
+           y="618.5835"
+           x="64.649765"
+           sodipodi:role="line">                   parted</tspan></text>
+    </g>
+    <rect
+       y="325.05237"
+       x="397.5787"
+       height="362.64474"
+       width="259.60919"
+       id="rect8849"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       sodipodi:linespacing="125%"
+       id="text8851"
+       y="308.88992"
+       x="398.58884"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="308.88992"
+         x="398.58884"
+         id="tspan8853"
+         sodipodi:role="line">appliance</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text8855"
+       y="365.45847"
+       x="404.64978"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         y="365.45847"
+         x="404.64978"
+         id="tspan8857"
+         sodipodi:role="line">/</tspan><tspan
+         id="tspan8859"
+         y="393.58347"
+         x="404.64978"
+         sodipodi:role="line">+ /bin</tspan><tspan
+         id="tspan8861"
+         y="421.70847"
+         x="404.64978"
+         sodipodi:role="line">+ /boot</tspan><tspan
+         id="tspan8863"
+         y="449.83347"
+         x="404.64978"
+         sodipodi:role="line">+ /etc</tspan><tspan
+         id="tspan8865"
+         y="477.95847"
+         x="404.64978"
+         sodipodi:role="line">+ /lib</tspan><tspan
+         id="tspan8867"
+         y="506.08347"
+         x="404.64978"
+         sodipodi:role="line">       libc.so.6</tspan><tspan
+         id="tspan8869"
+         y="534.2085"
+         x="404.64978"
+         sodipodi:role="line">+ /tmp</tspan><tspan
+         id="tspan8871"
+         y="562.3335"
+         x="404.64978"
+         sodipodi:role="line">+ /usr</tspan><tspan
+         id="tspan8873"
+         y="590.4585"
+         x="404.64978"
+         sodipodi:role="line">        + /usr/sbin</tspan><tspan
+         id="tspan8875"
+         y="618.5835"
+         x="404.64978"
+         sodipodi:role="line">                   parted</tspan></text>
+    <path
+       style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 224.23284,495.6456 214.17336,0.12255"
+       id="path8891"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path8919"
+       d="m 300.23284,609.6456 214.17336,0.12255"
+       style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8921)" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="322.85715"
+       y="487.36221"
+       id="text9519"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan9521"
+         x="322.85715"
+         y="487.36221">copied</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text9523"
+       y="601.36218"
+       x="336.85715"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       xml:space="preserve"><tspan
+         y="601.36218"
+         x="336.85715"
+         id="tspan9525"
+         sodipodi:role="line">copied</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="473.85715"
+       y="443.93362"
+       id="text9566"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan9568"
+         x="473.85715"
+         y="443.93362">(is not copied)</tspan></text>
+  </g>
+</svg>
diff --git a/2015-qe/slides.pdf b/2015-qe/slides.pdf
new file mode 100644 (file)
index 0000000..118229d
Binary files /dev/null and b/2015-qe/slides.pdf differ