From: Richard W.M. Jones Date: Wed, 31 Oct 2012 10:42:17 +0000 (+0000) Subject: KVM Forum talk. X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=2fb6eaba347b9d47f599d3ae2a688bd30167740f;p=libguestfs-talks.git KVM Forum talk. --- diff --git a/2012-kvm-forum/.gitignore b/2012-kvm-forum/.gitignore new file mode 100644 index 0000000..b3e8227 --- /dev/null +++ b/2012-kvm-forum/.gitignore @@ -0,0 +1,3 @@ +*.d/disk.img +bindings +history diff --git a/2012-kvm-forum/0000-introduction.html b/2012-kvm-forum/0000-introduction.html new file mode 100644 index 0000000..d9860d7 --- /dev/null +++ b/2012-kvm-forum/0000-introduction.html @@ -0,0 +1,18 @@ + + + +
+

+ libguestfs
+
+ tools for viewing and modifying
+ virtual machine disk images +

+

+ Richard W.M. Jones
+ rjones @ redhat.com +

+
+ + diff --git a/2012-kvm-forum/0100-overview.html b/2012-kvm-forum/0100-overview.html new file mode 100644 index 0000000..d931f9d --- /dev/null +++ b/2012-kvm-forum/0100-overview.html @@ -0,0 +1,43 @@ + + + + +

Library, API, tools

+ + + + + + + + + + + + + + + + +
+ +
diff --git a/2012-kvm-forum/0200-overview2.html b/2012-kvm-forum/0200-overview2.html new file mode 100644 index 0000000..a41df96 --- /dev/null +++ b/2012-kvm-forum/0200-overview2.html @@ -0,0 +1,42 @@ + + + + +

Library, API, tools

+ + + + + + + + + + + + + + + + +
+ +
diff --git a/2012-kvm-forum/0300-overview3.html b/2012-kvm-forum/0300-overview3.html new file mode 100644 index 0000000..c36b85c --- /dev/null +++ b/2012-kvm-forum/0300-overview3.html @@ -0,0 +1,27 @@ + + + + +

Library, API, tools

+ + + + + + + + + + + + + diff --git a/2012-kvm-forum/0400-guestfish.d/.dir b/2012-kvm-forum/0400-guestfish.d/.dir new file mode 100644 index 0000000..e69de29 diff --git a/2012-kvm-forum/0400-guestfish.term b/2012-kvm-forum/0400-guestfish.term new file mode 100755 index 0000000..291ac5c --- /dev/null +++ b/2012-kvm-forum/0400-guestfish.term @@ -0,0 +1,13 @@ +#!/bin/bash - + +source functions + +# History. +remember 'ls -l -h' +remember 'file disk.img' +remember 'guestfish -a disk.img -i --rw' + +echo "Example: Examine a disk image" + +cd 0400-guestfish.d +terminal diff --git a/2012-kvm-forum/0500-new-features.html b/2012-kvm-forum/0500-new-features.html new file mode 100644 index 0000000..1dca6e0 --- /dev/null +++ b/2012-kvm-forum/0500-new-features.html @@ -0,0 +1,25 @@ + + + + +

New in libguestfs 1.20

+ + + + + + + + + + + + diff --git a/2012-kvm-forum/0600-new-features-svirt.html b/2012-kvm-forum/0600-new-features-svirt.html new file mode 100644 index 0000000..2b82459 --- /dev/null +++ b/2012-kvm-forum/0600-new-features-svirt.html @@ -0,0 +1,25 @@ + + + + +

New in libguestfs 1.20

+ + + + + + + + + + + + diff --git a/2012-kvm-forum/0800-future.html b/2012-kvm-forum/0800-future.html new file mode 100644 index 0000000..90c8a94 --- /dev/null +++ b/2012-kvm-forum/0800-future.html @@ -0,0 +1,31 @@ + + + + +

Future work

+ +
    + +
  • TRIM / SCSI UNMAP from guest to host (in progress) + +
  • 9pfs mapping file + +
  • Finer control over -drive snapshot=on + +
  • Faster qemu-img create command + +
    +$ time qemu-img create -f qcow2 -b rhel6.raw test.qcow2
    +...
    +real    0m0.519s
    +...
    +
    + +
  • Safer qemu-img info command
    + (qemu: done, libguestfs: not yet impl) + +
  • All-up testing should gate commits + +
  • Nested VMs (that work) + +
diff --git a/2012-kvm-forum/0900-summary.html b/2012-kvm-forum/0900-summary.html new file mode 100644 index 0000000..34b50b4 --- /dev/null +++ b/2012-kvm-forum/0900-summary.html @@ -0,0 +1,31 @@ + + + + +

libguestfs

+ + + +

+libguestfs.org +
+
+

+ +

+PDF handout on the Linux Foundation site or + rwmj.wordpress.com +
+
+

+ +

+Available in your favourite Linux distribution. +
+
+

+ +

+git.annexia.org → libguestfs-talks +(in Tech Talk format) +

diff --git a/2012-kvm-forum/README b/2012-kvm-forum/README new file mode 100644 index 0000000..b540975 --- /dev/null +++ b/2012-kvm-forum/README @@ -0,0 +1,11 @@ +This is a talk given at the 2012 KVM Forum in Barcelona. + +https://events.linuxfoundation.org/events/kvm-forum + +The whole talk is designed to take around 15-20 minutes, with lots of +time at the end for open discussion. + +To run the talk you'll need Tech Talk PSE >= 1.1.0. If you don't have +Tech Talk then just open up the HTML slides in a web browser. + +To start the talk, use `./run'. diff --git a/2012-kvm-forum/bashrc b/2012-kvm-forum/bashrc new file mode 100644 index 0000000..4c6a3c6 --- /dev/null +++ b/2012-kvm-forum/bashrc @@ -0,0 +1,17 @@ +# -*- shell-script -*- + +# Colour ls. +if [ -f /etc/profile.d/colorls.sh ]; then . /etc/profile.d/colorls.sh; fi + +# Fancy prompt colours (see +# https://wiki.archlinux.org/index.php/Color_Bash_Prompt) +promptcol='\e[0;32m' ;# colour for the prompt +commandcol='\e[1;31m' ;# colour for the typed command +outputcol='\e[0m' ;# colour for command output + +export PS1="\n\[$promptcol\]\$ \[$commandcol\]" + +trap 'echo -ne "$outputcol"' DEBUG + +# Load key bindings (if any). +bind -f $talkdir/bindings diff --git a/2012-kvm-forum/cdrom.png b/2012-kvm-forum/cdrom.png new file mode 100644 index 0000000..9c241cd Binary files /dev/null and b/2012-kvm-forum/cdrom.png differ diff --git a/2012-kvm-forum/code.js b/2012-kvm-forum/code.js new file mode 100644 index 0000000..e69de29 diff --git a/2012-kvm-forum/disk.png b/2012-kvm-forum/disk.png new file mode 100644 index 0000000..087810c Binary files /dev/null and b/2012-kvm-forum/disk.png differ diff --git a/2012-kvm-forum/file.png b/2012-kvm-forum/file.png new file mode 100644 index 0000000..beff2d4 Binary files /dev/null and b/2012-kvm-forum/file.png differ diff --git a/2012-kvm-forum/fish.svg b/2012-kvm-forum/fish.svg new file mode 100644 index 0000000..7768be4 --- /dev/null +++ b/2012-kvm-forum/fish.svg @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2012-kvm-forum/flash.png b/2012-kvm-forum/flash.png new file mode 100644 index 0000000..8e625cc Binary files /dev/null and b/2012-kvm-forum/flash.png differ diff --git a/2012-kvm-forum/floppy.png b/2012-kvm-forum/floppy.png new file mode 100644 index 0000000..8bfd718 Binary files /dev/null and b/2012-kvm-forum/floppy.png differ diff --git a/2012-kvm-forum/functions b/2012-kvm-forum/functions new file mode 100644 index 0000000..7baaed0 --- /dev/null +++ b/2012-kvm-forum/functions @@ -0,0 +1,40 @@ +# -*- shell-script -*- +# This creates some standard functions. See also $talkdir/bashrc +# which runs in the same bash context as the terminal. + +# Place any local environment variables and settings in "local". +if [ -f local ]; then source local; fi + +# Environment variables. +export HISTFILE=$talkdir/history +export PATH=$talkdir:$PATH +export EDITOR="emacs -nw" + +# remember +# +# This function does two things: (1) It adds the command and arguments +# to the shell history, so that commands can be recalled using up +# arrow or reverse search. (2) It makes a function key recall the +# command. The first command is assigned to F2, the second to F3 and +# so forth. + +rm -f $HISTFILE +touch $HISTFILE +rm -f $talkdir/bindings +touch bindings + +fnum=2 +keys=(- OP OQ OR OS '[15~' '[17~' '[18~' '[19~' '[20~' '[21~') + +remember () +{ + echo "$@" >> $HISTFILE + echo \"\\e${keys[$fnum]}\":\"\\C-k \\C-u"$@"\" >> $talkdir/bindings + ((fnum++)) +} + +terminal () +{ + chmod -w $HISTFILE + /bin/bash --rcfile $talkdir/bashrc "$@" +} diff --git a/2012-kvm-forum/handout/.gitignore b/2012-kvm-forum/handout/.gitignore new file mode 100644 index 0000000..3eec47d --- /dev/null +++ b/2012-kvm-forum/handout/.gitignore @@ -0,0 +1,3 @@ +*.aux +*.log +*.pdf diff --git a/2012-kvm-forum/handout/2012-kvm-forum-rjones-libguestfs.tex b/2012-kvm-forum/handout/2012-kvm-forum-rjones-libguestfs.tex new file mode 100644 index 0000000..18a9f14 --- /dev/null +++ b/2012-kvm-forum/handout/2012-kvm-forum-rjones-libguestfs.tex @@ -0,0 +1,310 @@ +\documentclass[12pt]{article} +\usepackage{alltt,graphicx,url} +\hyphenation{guestfish} + +\title{libguestfs\\ +tools for viewing and modifying\\ +virtual machine disk images} + +\author{Richard W.M. Jones\\ +\small Software Engineer\\[-0.8ex] +\small Red Hat\\ +\small \texttt{rjones@redhat.com}\\ +} + +\date{November 2012} + +\begin{document} +\maketitle + +\section{Introduction} + +The libguestfs project is nearly 4 years old, so for my rare +opportunity to talk at the KVM Forum I thought I'd cover where we've +got to in those 4 years, and also talk about some of the ways we are +using the new features in KVM. + +\section{Overview of libguestfs} + +libguestfs is a C library with a simple, long-term stable API that +contains about 400 different calls. It also has bindings in many +popular high-level languages, including Perl, Python, Ruby, OCaml, +Java, PHP, and more. The library lets you write simple programs to +create, view and modify disk images, like the one in +Appendix~\ref{perlexample}. + +There are many tools which use libguestfs: + +\begin{itemize} +\item[{\bf guestfish}] +Interactive and scriptable shell. +\item[{\bf guestmount}] +Mount filesystems from any guest or disk image on the host. +\item[{\bf virt-alignment-scan}] +Check alignment of partitions in guests. +\item[{\bf virt-cat}] +Display a file from a guest. +\item[{\bf virt-copy-in}] +Copy files and directories into a guest. +\item[{\bf virt-copy-out}] +Copy files and directories out of a guest. +\item[{\bf virt-df}] +Display disk usage of a guest. +\item[{\bf virt-edit}] +Edit a file in a guest. +\item[{\bf virt-filesystems}] +Display the partitions, filesystems, logical volumes etc. in a guest. +\item[{\bf virt-inspector}] +Inspect a guest and produce a report detailing the operating system, +version, applications installed and more. +\item[{\bf virt-ls}] +List files and directories in a guest. +\item[{\bf virt-make-fs}] +Make a new filesystem. +\item[{\bf virt-rescue}] +Rescue mode for guests. +\item[{\bf virt-resize}] +Resize a guest. +\item[{\bf virt-sparsify}] +Make a disk sparse. +\item[{\bf virt-sysprep}] +Reset a guest to ``factory configuration''. +\item[{\bf virt-tar-in}] +Copy files from a tarball into a guest. +\item[{\bf virt-tar-out}] +Copy files out of a guest into a tarball. +\item[{\bf virt-win-reg}] +Display and edit the Windows Registry in a guest. +\end{itemize} + +and libguestfs is increasingly being used by major projects: + +\begin{itemize} +\item[{\bf BoxGrinder \& Oz}] +Projects that can create guests from scratch. +\item[{\bf OpenStack}] +Uses libguestfs to inject files into guests. +\item[{\bf virt-manager}] +Uses libguestfs to display icons and applications in guests. +\item[{\bf virt-v2v \& virt-p2v}] +Migrate between physical machines and different hypervisors. +\end{itemize} + +\section{Using guestfish to view and inject files} + +An easy way to get started with libguestfs is to use our shell +scripting tool, +{\em guestfish}\footnote{\url{http://libguestfs.org/guestfish.1.html}} +to open up a disk image and look inside. + +You can open up almost any type of disk image, such as a raw file, +qcow2 file, or a logical volume or partition that contains a virtual +machine. You {\em don't} need to be root, unless you need root to +access the device. + +Simply do: + +\begin{samepage} +\begin{verbatim} +$ guestfish -a disk.img -i + +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: Red Hat Enterprise Linux Server release 6.3 (Santiago) +/dev/vg_rhel6x32/lv_root mounted on / +/dev/sda1 mounted on /boot +\end{verbatim} +\end{samepage} + +You can now use guestfish commands to list files and directories and +create files: + +\begin{samepage} +\begin{verbatim} +> ls / +bin +boot +cgroup +[etc] + +> write-append /etc/rc.d/rc.local "service sshd start" + +> cat /etc/rc.d/rc.local +#!/bin/sh +touch /var/lock/subsys/local +service sshd start +\end{verbatim} +\end{samepage} + +Some useful commands include: + +\begin{itemize} +\item[\texttt{cat}] Display small text files. +\item[\texttt{edit}] Edit a file. +\item[\texttt{less}] Display longer files. +\item[\texttt{ll}] List (long) directory. +\item[\texttt{ls}] List directory. +\item[\texttt{mkdir}] Make a directory. +\item[\texttt{rm}] Remove a file. +\item[\texttt{touch}] Touch a file. +\item[\texttt{upload}] Upload a local file to the disk. +\item[\texttt{write}] Create a file with content. +\end{itemize} + +As there are hundreds of commands, it's a good idea to read the +{\em guestfish(1)} and +{\em guestfs(3)}\footnote{\url{http://libguestfs.org/guestfs.3.html}} +man pages. These are also available online at the +website\footnote{\url{http://libguestfs.org}}. + +\section{Introducing virt-rescue} + +virt-rescue\footnote{\url{http://libguestfs.org/virt-rescue.1.html}} +is a good way to rescue virtual machines that don't boot, or just +generally make ad hoc changes to virtual machines. It's like a rescue +CD for virtual machines. + +virt-rescue is a little different from guestfish in that you get an +ordinary shell and ordinary tools. However unlike guestfish, +virt-rescue cannot be used from shell scripts, so it's not useful if +you want to make repeatable changes to lots of your guests. + +You must not use virt-rescue on running VMs. + +If you had a libvirt guest called ``Fedora'' then: + +\begin{samepage} +\begin{verbatim} +# virt-rescue -d Fedora +[lots of boot messages] + +Welcome to virt-rescue, the libguestfs rescue shell. + +Note: The contents of / are the rescue appliance. +You have to mount the guest's partitions under /sysroot +before you can examine them. + +> lvs + LV VG Attr LSize Origin Snap% Move Log Copy% Convert + lv_root vg_f13x64 -wi-a- 7.56g + lv_swap vg_f13x64 -wi-a- 1.94g +> mount /dev/vg_f13x64/lv_root /sysroot/ +[ 107.912813] EXT4-fs (dm-0): mounted filesystem with ordered data mode. +Opts: (null) +> ls -l /sysroot/etc/fstab +-rw-r--r--. 1 root root 781 Sep 16 2010 /sysroot/etc/fstab +> vi /sysroot/etc/fstab +\end{verbatim} +\end{samepage} + +There is a lot more information about virt-rescue in the +man page {\em virt-rescue(1)}. + +\section{New features in libguestfs 1.20} + +At the end of this year (2012) we hope to make a major new release of +libguestfs. Since the last version was released in May 2012, this +represents over 6 months of development effort, and it includes and +uses some major new features from KVM. + +The new version will (optionally) use libvirt to manage the libguestfs +appliance. From the point of view of libguestfs this hides the +complexity of dealing with the qemu command line. It also lets us +leverage libvirt for: + +\begin{itemize} +\item[security] +The appliance will now be encapsulated with sVirt (SELinux or +AppArmor) to prevent a malicious guest from being able to take over +the qemu process and escape to attack the host. +\item[remote access] +libvirt will provide remote access to guests, using the ordinary +libvirt remote URIs. +\end{itemize} + +We are also using new features from KVM: + +\begin{itemize} +\item[virtio-scsi] +The primary new feature is Paolo Bonzini's virtio-scsi driver, +which is far superior in both performance and features compared +to virtio-blk. +\item[up to 255 disks] +With virtio-scsi, we can now access up to 255 disks at a time, +and possibly many more in future. +\item[hot-plugging of disks] +With virtio-scsi and libvirt together we are able to hotplug +(add and remove) disks, giving libguestfs users a lot more +performance and flexibility. +\item[sparsification] +Coming soon, we'll be able to trim filesystems and cause +the host backing file to become sparse. +\item[qcow2 v3] +We use the new version of qcow2 wherever possible because of +its performance benefits. +\end{itemize} + +\newpage +\appendix +\section{Example: how to inspect a virtual machine disk} +\label{perlexample} + +\begin{verbatim} +#!/usr/bin/perl -w + +use strict; +use Sys::Guestfs; + +if (@ARGV < 1) { + die "usage: inspect_vm disk.img" +} + +my $disk = $ARGV[0]; + +my $g = new Sys::Guestfs (); +$g->add_drive_opts ($disk, readonly => 1); +$g->launch (); + +# Ask libguestfs to inspect for operating systems. +my @roots = $g->inspect_os (); +if (@roots == 0) { + die "inspect_vm: no operating systems found"; +} + +for my $root (@roots) { + # Print basic information about the operating system. + printf " Product name: %s\n", + $g->inspect_get_product_name ($root); + printf " Version: %d.%d\n", + $g->inspect_get_major_version ($root), + $g->inspect_get_minor_version ($root); + + # Mount up the disks, like guestfish -i. + my %mps = $g->inspect_get_mountpoints ($root); + my @mps = sort { length $a <=> length $b } (keys %mps); + for my $mp (@mps) { + eval { $g->mount_ro ($mps{$mp}, $mp) }; + if ($@) { + print "$@ (ignored)\n" + } + } + + # If /etc/issue.net file exists, print up to 3 lines. + my $filename = "/etc/issue.net"; + if ($g->is_file ($filename)) { + printf "--- %s ---\n", $filename; + my @lines = $g->head_n (3, $filename); + print "$_\n" foreach @lines; + } + + # Unmount everything. + $g->umount_all () +} +\end{verbatim} + +\end{document} \ No newline at end of file diff --git a/2012-kvm-forum/handout/Makefile b/2012-kvm-forum/handout/Makefile new file mode 100644 index 0000000..77f44b3 --- /dev/null +++ b/2012-kvm-forum/handout/Makefile @@ -0,0 +1,18 @@ +all: 2012-kvm-forum-rjones-libguestfs.pdf + +SOURCES = \ + 2012-kvm-forum-rjones-libguestfs.tex + +log = 2012-kvm-forum-rjones-libguestfs.log + +2012-kvm-forum-rjones-libguestfs.pdf: $(SOURCES) + pdflatex $< + @if grep -q "LaTeX Warning: There were undefined references" $(log) || \ + grep -q "Rerun to get cross-references right" $(log); \ + then \ + echo "Rerunning to fix references ..."; \ + pdflatex $<; \ + fi + +clean: + rm -f 2012-kvm-forum-rjones-libguestfs.{aux,log,dvi,pdf} diff --git a/2012-kvm-forum/kvm-forum.png b/2012-kvm-forum/kvm-forum.png new file mode 100644 index 0000000..aaee10e Binary files /dev/null and b/2012-kvm-forum/kvm-forum.png differ diff --git a/2012-kvm-forum/newfeatures-svirt.svg b/2012-kvm-forum/newfeatures-svirt.svg new file mode 100644 index 0000000..f426f49 --- /dev/null +++ b/2012-kvm-forum/newfeatures-svirt.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + libvirt + + + qemu/kernel + + + + + + + { + + + libguestfs + + + + + sVirt / SELinux + + diff --git a/2012-kvm-forum/newfeatures.svg b/2012-kvm-forum/newfeatures.svg new file mode 100644 index 0000000..ba54f1c --- /dev/null +++ b/2012-kvm-forum/newfeatures.svg @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + libvirt + virtio-scsi + + + + qemu/kernel + + + + + + + + { + + + libguestfs + + + + + + New in qemu + New in libguestfs + + diff --git a/2012-kvm-forum/notes.txt b/2012-kvm-forum/notes.txt new file mode 100644 index 0000000..91b7964 --- /dev/null +++ b/2012-kvm-forum/notes.txt @@ -0,0 +1,108 @@ +libguestfs Barcelona talk (20 minutes) + + "Libguestfs is a C library that provides a way to access and + modify virtual machine disk images. It uses qemu and the Linux + kernel, so we can manipulate just about any disk image, + filesystem, partitioning scheme, LVM, Windows disks, and more. + Above this layer are many specialized "virt-*" tools for carrying + out specific tasks. + + In this talk, Richard Jones will give a live demonstration of + libguestfs and the virt tools, and talk about the new features + available in libguestfs 1.20." + + email slides to: cfp@linuxfoundation.org + +---------------------------------------------------------------------- + +Audience: + - KVM developers + +Interested in: + - What they can use it for + - How it works + - Problems with KVM + - New features, particularly ones which use new features in KVM + +What do they want to do with images: + - Viewing and file injection for personal use + - Use in management tools like oVirt, OpenStack + +New features of interest: + - libvirt management of appliance + . sVirt / SELinux + . remote access + - virtio-scsi + . lots of disks + . hot plugging of disks + . sparsification + +[---- OVERVIEW ----] + +C library +nearly 400 different API calls + +handout and website contains example programs + + NEXT SLIDE: 0300 + +manages a qemu subprocess, running a minimal Linux + distro that we call the "appliance" + +uses kernel code, qemu so supports + - qcow2 + - VMDK + - all filesystems + - partitioning + - LVM + - etc + +doesn't need root, doesn't create device nodes, is + secure and well-behaved + + NEXT SLIDE: 0400 + +around the API is a whole ecosystem of tools, programs +and external projects + + - virt tools, in C, Perl, OCaml + - OpenStack (Python) + - BoxGrinder (Ruby) + - Oz (Python) + - virt-p2v, virt-v2v (Perl) + + +[---- NEW FEATURES IN LIBGUESTFS 1.20 ----] + +libguestfs 1.20 should be released at the end of this year, after +a very long (7 month) development cycle. + +Two major changes: + + - libvirt + - virtio-scsi + +Implies: + + . sVirt / SELinux + . remote access + . 255 disks + . hot plugging of disks + + + +[---- FUTURE WORK IN KVM ----] + + +[---- SUMMARY ----] + +Website: + + - code + - examples + - manual pages and documentation + +There is a PDF handout which contains more background material. + +This talk and others are available from the libguestfs-talks +git repository. diff --git a/2012-kvm-forum/openstack.png b/2012-kvm-forum/openstack.png new file mode 100644 index 0000000..146faec Binary files /dev/null and b/2012-kvm-forum/openstack.png differ diff --git a/2012-kvm-forum/overview.svg b/2012-kvm-forum/overview.svg new file mode 100644 index 0000000..c22dc16 --- /dev/null +++ b/2012-kvm-forum/overview.svg @@ -0,0 +1,797 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + libguestfs.so + + + + Python + + + + OCaml + + + + guestfish + + + + + virt-resize + + + + virt-df + + + + virt-sparsify + + + + virt-sysprep + + + + virt-edit + + + + + qemu/kernel + + + + + + + + + + + + + + + + + + Perl + + { + + + Ruby + + + diff --git a/2012-kvm-forum/redhat.png b/2012-kvm-forum/redhat.png new file mode 100644 index 0000000..f50076a Binary files /dev/null and b/2012-kvm-forum/redhat.png differ diff --git a/2012-kvm-forum/run b/2012-kvm-forum/run new file mode 100755 index 0000000..e65e52d --- /dev/null +++ b/2012-kvm-forum/run @@ -0,0 +1,16 @@ +#!/bin/bash - +# Run the talk. + +# Avoid GNOME keyring stupidity +export GNOME_KEYRING_CONTROL= +export GNOME_KEYRING_PID= + +# Clean up everything. +find -name '*~' -delete + +# Get everything into the cache. +guestfish -a /dev/null run > /dev/null +guestfish --ro -a 0400-guestfish.d/disk.img -i exit > /dev/null + +# Run techtalk. +techtalk-pse diff --git a/2012-kvm-forum/style.css b/2012-kvm-forum/style.css new file mode 100644 index 0000000..f11ec9a --- /dev/null +++ b/2012-kvm-forum/style.css @@ -0,0 +1,67 @@ +/* Red Hat red is rgb(204,0,0). */ + +body { + background: url(redhat.png) no-repeat; + background-position: 98% 0; + font-size: 24pt; /* For max */ + /* font-size: 20pt; */ /* For 1024x768 */ + /* font-family: liberation, helvetica; */ + font-family: helvetica; +} + +body td { /* why?? */ + /*font-size: 28pt;*/ + font-size: 20pt; +} + +h1 { + color: rgb(204,0,0); + /*font-size: 48px;*/ + font-size: 40px; + top: 8; + left: 0; + border-bottom: 2px solid rgb(204,0,0); +} + +b { + color: rgb(204,0,0); +} + +div#titlepage { + margin-top: 100px; + text-align: center; +} + +div#titlepage p.title { + color: rgb(204,0,0); + font-weight: bold; + font-size: 48px; +} + +div#titlepage author { + font-size: 36px; +} + +/* Code */ +pre.code { + margin-left: 1em; + background: #eee; +} + +code { + color: rgb(204,0,0); +} + +/* Bullet points */ +li { + padding-bottom: 16px; +} + +/* Logo */ +img#fish { + position: absolute; + top: 128px; + right: 32px; + width: 200px; + /*height: 256px;*/ +} \ No newline at end of file