To configure Palacios, enter the top level Palacios directory and
execute:
make clean
make xconfig
At this point, you will see be presented with a KBuild configuration
screen, similar to what you would see in configuring a Linux kernel.
Palacios has far fewer options, however. If you don't have X or
don't want the graphical configuration system, you can also use the
menuconfig or config targets. The available options
change over time, so we do not cover all of them here, but here are a
few that are usually important. We note how to set these options to
configure a minimal VMM in the following.
- Target Configuration:
- Red Storm (Cray XT3/XT4) -- turn on to target Cray XT4
supercomputers. (off)
- AMD SVM Support -- targets AMD processors with the SVM hardware
virtualization features (on)
- Intel VMX support -- targets Intel processors with the VMX
hardware virtualization features (on)
- Compile for a multi-threaded OS (on)
- Enable VMM telemetry support -- this is lightweight logging and
data collection (on)
- Enable VMM instrumentation -- this is heavyweight logging and
data collection (off)
- Enable passthrough video -- this lets a guest write directly to
the video card (off) (this is outdated and handled in a different way now)
- Enable experimental options -- this makes it possible to select
features that are under current development (off). You probably want
to leave leave this all off. The VNET suboption is for an experimental VMM-embedded
overlay network under development by Lei Xia and Yuan Tang.
- Enable built-in versions of stdlib functions -- this adds
needed stdlib functions that the host OS may not supply. For use with
Kitten turn on and enable strcasecmp() and atoi().
- Enable built-in versions of stdio functions (off)
- Symbiotic Functions (these are experimental options for Jack
Lange's thesis).
- Enable Symbiotic Functionality -- This adds symbiotic features
to Palacios, specifically support for discovery and configuration by
symbiotic guests, the SymSpy passive information interface for
asynchronous symbiotic guest
symbiotic VMM
information flow, and the SymCall functional interface for synchronous
symbiotic VMM
symbiotic guest upcalls. (off)
- Symbiotic Swap -- Enables the SwapBypass symbiotic service for
symbiotic Linux guests. (off)
- Debug Configuration
- Compile with Debug info -- adds debug symbols (-g) (off)
- Enable Debugging -- makes it possible to show PrintDebug output
(on). You can selectively turn on debugging output for each major
VMM component, including shadow paging, nested paging, control
registers, interrupts, I/O, instruction emulation and XED, halt, and
the device manager. Note that the more debugging output you turn on,
the slower the VMM will go since it will have to wait for the prints
to finish.
- BIOS Selection -- Lets you select which code blobs will be
used for bootstrapping the guest. There are currently three: a
BIOS, a Video BIOS, and the VMXAssist V8086 service (the latter is used only on
Intel VMX). Generally, you should not need to change these.
- Virtual Devices -- virtual devices can be instantiated and
added to a guest. The following is a list of the currently
implemented virtual devices.
- BOCHS Debug Console Device -- used for debugging output from
the guest BIOS (on)
- OS Debug Console Device -- used for debugging output from
the guest kernel (on)
- 8259A PIC - legacy Programmable Interrupt Controller chip -- used
for bootstrap of most guests (on)
- APIC - in-processor Advanced Programmable Interrupt Controller -- used
for interrupt delivery on almost all guests (on)
- IOAPIC - Off-chip APIC -- used for interrupt deliver for almost
all guests (on)
- PIT - legacy 8254 timer (on)
- i440fx Northbridge -- emulation of a typical PC North Bridge
chip, used on almost all guests (on)
- PIIX3 Southbridge -- emulation of a typical PC South Bridge
chip, used on almost all guests (on)
- PCI -- emulation of a PCI bus - needed for attaching most
devices (on)
- Passthrough PCI -- allows us to make a hardware PCI device visible and
directly accessible by the guest (off)
- Generic -- this is a run-time configurable device that can intercept I/O port read/writes and memory region reads/writes. Intercepted reads and writes can either be ignored or forwarded to actual hardware, and the data flow can optionally be printed. This is a useful tool with at least three purposes. First, it makes it possible to ``stub out'' hardware that isn't currently implemented and for which we don't want to allow passthrough access. Second, it makes it possible to provide low-level passthrough access to physical hardware. Third, it can be used to spy on guest/device interactions, which is very helpful when trying to understand the interface of a device.
- NVRAM - motherboard configuration memory -- needed by BIOS bootstrap (on)
- Keyboard - Generic PS/2 keyboard, including mostly broken mouse
implementation (on)
- IDE -- Support for virtual IDE controllers that support disks
and CD ROMs (on)
- NE2K - NE2000 and RTL8139 network devices (off)
- CGA - CGA video card (paritial implementation) (off)
- Telnet Virtual Console (off) When CGA and Telnet Console are
on, it is possible to telnet to the console of the guest. Eventually
the rest of this will provide simple bitmapped video console for VNC
access.
- RAMDISK storage backend -- used to create RAM disk
implementations of block devices (on)
- NETDISK storage backend -- used to create network-attached disk
implementations of block devices, e.g., network block devices (off)
- TMPDISK storage backend -- used to create temporary storage
implementations of block devices (on)
- Linux Virtio Balloon Device -- used for memory ballooning by
Linux virtio-compatible guests (off)
- Linux Virtio Block Device -- used for fast block device support
by Linux virtio-compatible guests (off)
- Linux Virtio Network Device -- used for fast network device support
by Linux virtio-compatible guests (off)
- Linux Virtio Symbiotic Device (off)
- Symbiotic Swap Disk (multiple versions) -- used for the
SwapBypass service (off)
- Disk Performance Model -- used for the
SwapBypass service (off)
Jack Lange
2010-04-13