In late 2004, a group in Cambridge announced a new software-only virtualization package, Xen. It differed from previously virtualization technologies available in that it was free (compared to VMware), could virtualize multiple OSes (compared to User Mode Linux), and it was fast (compared to qemu). I saw that this was big news, something that could really change the nature of technology infrastructure, so I dove in and became pretty Xen proficient and you can see me relatively prominently in the xen-devel mailing list at the time.
I was also into CD-bootable operating systems at the time, so I combined the two into XenCD, the first demonstration CD that anyone could download for free, boot in any PC, and immediately see multiple operating systems running in parallel with no setup. Big ISOes with as much packages as will fit were popular at the time, but I was into lean and mean, so this CD was only 30Mb.
XenCD seemed well received with the community. It was used to demonstrate a few repeatable bugs, which seemed nice. I didn't go far with keeping it up, because Xen soon released their commercial supported graphical demo CD. So I let them and others run with it, but have been well-served by the knowledge gained.
Here's the announcement of XenCD from January 2005. The URLs within doesn't work anymore, but I'll dig up the ISO and host it again later.
From: Jared Rhine <firstname.lastname@example.org> To: email@example.com Subject: XenCD prerelease available Date: Wed, 26 Jan 2005 09:31:08 -0800 Message-ID: <firstname.lastname@example.org> A prerelease version of a Xen-integrated bootable CD I've been working on is available for download here: http://files.wordzoo.com/xencd/xencd.iso.gz This CD is only just at the point of being minimally usable. It's had very little testing outside of qemu, and doesn't include much beyond 2 auto-started ttylinux instances (for which the network doesn't seem to work). Projects like this thrive on feedback, though, so I'm offering what I have. Please feel free to provide nit-picking or grandiose feedback of any kind, here or in private email. 368Mb minimum RAM on the host machine is required. (In particular, I could use help understanding the ttylinux networking problem I'm currently seeing.) The README: -- begin -- XenCD 1.0pre01 README See the COPYRIGHT file for details of permissions granted for use. -------- OVERVIEW -------- XenCD is a bootable "live" CD running a combination of Xen and various Linux distributions. After booting into the XenCD environment, the user is able to switch between the main control domain and multiple, distinct "virtual machines" running a different operating systems. ----- USAGE ----- Obtain a copy of the ISO file (see the "RESOURCES" section). Burn that ISO file as a complete CD image, using a program like cdrecord or Nero. Place the CD into an i386 PC and reboot, making the PC boot off the CD. The CD will boot into a GRUB menu, default to the XenCD demo option, boot Xen, and then come up into a live Debian Linux environment running from RAM. This environment is Xen's "dom0", the virtual machine which has real access to the hardware, network, and xen control services. Alternately, since the XenCD runtime is implemented as a single initrd, one can reuse the various pieces of the CD with any Linux boot technology, such as PXE booting, USB drives, etc. Once you are at a command prompt, the most common operations would be: - Log in as the root user. There is no password on the root account. - Switch to a new virtual terminal via Alt-F2 and Alt-F3. - Switch to a Xen VM console via something like "xm console 1". - Install new software using something like a "apt-get update && apt-get install PACKAGE" command line. - Use any other helpful xm commands such as "xm create", "xm destroy", etc. - Review the files on the CD-ROM mounted at "/media/cdrom" in dom0. ------- CAVEATS ------- - EARLY, BUGGY RELEASE: This is a very early implementation with very little testing in very few environments. Additionally, this software is at the bare minimum needed to claim a functional Xen demo. - KNOW XEN ALREADY: You should be familiar with Xen usage and administration to understand what's feasible and interesting to try using the tools provided. - HAVE LOTS OF RAM: This version of XenCD will just barely run on a 368Mb machine. 512Mb is recommended to be able to create additional VMs. - DHCP ONLY: dom0 will try to acquire its networking info via dhcp. Static networking support is planned but not yet available. - UDEV: dom0 runs udevd, not devfsd. - RAM-ONLY RUNTIME: Since the dom0 environment runs entirely within RAM, the software provided is limited. If you run out of memory, you run out of disk and vice versa. Memory issues are more of an issue here than in conventional live CDs (Knoppix, etc.) - TEXT-ONLY: This is a text-oriented demo. A graphical demo environment would be an excellent thing for the community. But a graphical environment may be better implemented as a separate or subproject. It should be noted the primary developer of XenCD has a bias towards and an interest in server-oriented Xen environments. - NO RUNTIME DOCS: dom0 has been stripped of most all its documentation. Man pages will not work. - ENGLISH ONLY: No thought or attention has been spent on internationalization and localization issues. In some cases, internationalization files are intentionally removed to reduce the runtime image. - UPDATE APT BEFORE USE: Run a 'apt-get update' before any 'apt-get install' commands. - NAME CHANGE LIKELY: The name "XenCD" is probably unauthorized use of the Xen trademark. This project is likely to be renamed. --------- RESOURCES --------- Official XenCD homepage - http://software.wordzoo.com/xencd Official XenCD downloadable URL for "current release": - http://files.wordzoo.com/xencd/xencd.iso.gz Public subversion repository of XenCD software: - svn://software.wordzoo.com/xencd/trunk Mailing list: - email@example.com All discussion, questions, problems, concerns, accolades, etc should be directed to the xen-devel mailing list. Xen homepage: - http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ ttylinux homepage: - http://www.minimalinux.org/ttylinux/ tomsrtbt homepage: - http://www.toms.net/rb/ memtest86 homepage: - http://www.memtest86.com/ -------------- IMPLEMENTATION -------------- Media - 50 Mb ISO (CD-ROM image) - ISO9660 (level 2 + extensions) format - GRUB boot (2.88 El Torito image) - Components on CD (kernel, initrd, etc) should be suitable for netbooting, USB drives, etc Boot menu - GRUB-based menu, text-only - These options available: - XenCD standard demo (default option) - XenCD testing (verbose logging) - ttylinux - ttylinux using xenU kernel - tomsrtbt - memtest86 Xen - Built from xeno-unstable.bk - As of the date in the BUILT_* file - Compiled with GCC 3.3.5 (and rest of toolchain from Debian sarge) Initrd - Runs as xen's dom0 - Read-write ramdisk - Creates tmpfs 8Mb less than physical memory and copies all of initrd into that tmpfs dom0 - Runs entirely from RAM, media-agnostic - Implemented as a large (70 Mb pre-compression) initrd - custom /linuxrc+rcS, autostart xend, xensv - debian dom0 is straight debootstrap sarge, with various bits rm -rf'ed, plus xen-required packages (python-twisted, etc). - pure text-mode apps installed. can apt-get other packages into the ramdisk as needed. - Built from straight Debian unstable bootstrap with modifications: - Replace exim4 with esmtp - Replace syslogd+klogd with metalog - Add Xen dependencies: - bridge-utils - iproute - python - python-twisted - libcurl3 - Add some XenCD requirements: - udev - runit - Add some system "almost-essentials": - less - lsof - pciutils - Add ssh - Add chrony (for ntpd) - Use debfoster at "required" level to manage package dependencies - No suggested or recommended dependencies included - Shrink runtime - Remove "extra" documentation: - /usr/share/doc except copyright - /usr/share/info - /usr/share/man - /usr/lib/python2.3 prune: - Remove all *.pyo and *.pyc files from - Remove Twisted testing code - Prune dpkg/apt status files - Usage - root password is blank by default - Use nano or vi for editor - See /var/log/everything/current for syslog - devices managed by udev, most everything that physically exists should have a /dev device node ----------------------- ISO filesystem structure ------------------------ /BUILT_2005-01-26T07-45-32 /README /COPYRIGHT /boot/grub/menu.lst /boot/grub/stage2_eltorito /boot/isolinux/memdisk /boot/xen /boot/xen0-initrd /boot/xen0-kernel /boot/xenU-kernel /boot/memtest.img /boot/tomsrtbt.img /boot/ttylinux.img /ttylinux/USER-GUIDE /ttylinux/rootfs.gz /ttylinux/xen-rootfs ---- TODO ---- For release candidate - Make ttylinux VMs network properly - Testing on Dell 1650 + 440 BX Next release - Copy local version of linux-pristine above xen build directory so build doesn't download every time - Create an auto-build infrastructure wrapped around build-xencd - Pull some configuration of the build-xencd script into command-line switches - xen-stable/xen-testing builds - Nightly builds - Auto-update of download area with nightly builds - Improve robustness of boot-time scripts: - Use "yes/no" for all values - Write a function to use for flow-control and conditionals instead of repeating error-detection logic everywhere - More bootprompt configuration of dom0 - doaptupdate: run apt-get update on boot - staticnet: static networking setup (just dhcpc on dom0 now) - timezone=XXX: support setting of timezone on the boot line - "Fat" build with a few dozen more essential admin tools thrown in - usbutils sysfsutils scsitools gpart parted grub hdparm evms-curses reiserfsprogs strace sysstat hexcurse iptables tethereal dhcp rsync netcat curl host dnsutils ipsc - Replace xend_config script with bash/python version (perl currently) - Determine if color or non-color boot will be the default - Move configuration variables to a configuration file - Proofread documentation - Incorporate first round of community feedback Server wishlist - Autostart of xen domain configurations found in storage - Autoconfiguration of a reasonable dom0 network (bridge+route) - Per virtual-host network configuration (private bridge, separate iptables rules, packet accounting) - Media discovery of local storage (hd*/sd*/usb/lvm) - Lockdown security appropriately: - Setting of a root password (crypted entry on GRUB prompt?) - Allow skip of ssh startup via boot parameter - xensv - Media discovery of network storage (nfs, iscsi) - Use runit for auto-restarting and logging daemons: - xend, xensv - openssh - Use of debian packages for install of xen into dom0 (uses cp -a now) - Netboot support Demo wishlist - Support extended vga modes in dom0 (currently non-operational, xen-devel thread died twice) - Address community desires for graphical demo - Support discovery and automounting of USB drives - Support for 256Mb host machines, if at all possible - Build the ttylinux rootfs at runtime, via modifications to a pristine ttylinux 4.4 tree - Additional rootfs examples: - Debian unstable debootstrap - Fedora - Debian stable debootstrap - Freebsd stable - Plan 9 - many other possibilities - Additional GRUB menu entries: - Debian installer - FreeDOS - ReactOS - DVD version with multiple full-featured environments available -- end --