Site Home Page
The UML Wiki
UML Community Site
The UML roadmap
What it's good for
Case Studies
Kernel Capabilities
Downloading it
Running it
Compiling
Installation
Skas Mode
Incremental Patches
Test Suite
Host memory use
Building filesystems
Troubles
User Contributions
Related Links
Projects
Diary
Thanks
Contacts
Tutorials
The HOWTO (html)
The HOWTO (text)
Host file access
Device inputs
Sharing filesystems
Creating filesystems
Resizing filesystems
Virtual Networking
Management Console
Kernel Debugging
UML Honeypots
gprof and gcov
Running X
Diagnosing problems
Configuration
Installing Slackware
Porting UML
IO memory emulation
UML on 2G/2G hosts
Adding a UML system call
Running nested UMLs
How you can help
Overview
Documentation
Utilities
Kernel projects
Screenshots
A virtual network
An X session
Transcripts
A login session
A debugging session
Slackware installation
Reference
Kernel switches
Slackware README
Papers
ALS 2000 paper (html)
ALS 2000 paper (TeX)
ALS 2000 slides
LCA 2001 slides
OLS 2001 paper (html)
OLS 2001 paper (TeX)
ALS 2001 paper (html)
ALS 2001 paper (TeX)
UML security (html)
LCA 2002 (html)
WVU 2002 (html)
Security Roundtable (html)
OLS 2002 slides
LWE 2005 slides
Fun and Games
Kernel Hangman
Disaster of the Month

The Kernel

UML is a fully-functional Linux kernel. It runs its own scheduler and VM system, relying on the host kernel only for the equivalent of hardware support.

The virtual machine is completely configurable through the command line, allowing its memory, available devices, and their configurations to be specified. The available command line switches are described here.

Hardware support

UML hardware support comes in the form of virtual devices which use resources on the host. It supports all the usual types of devices that a physical system does:
Hot-plugging devices
The management console is a low-level interface into the kernel. Among other things, it allows UML devices to be added to and removed from a running system. Currently, the block devices and network devices can be hot-plugged. In time, this will be extended to the rest of the devices, so you will be able to construct, destroy, and rebuild essentially the entire system without having to reboot it.
Generic kernel functionality
UML runs its scheduler independently of the host scheduler - the host scheduler simply implements the decisions made by the UML scheduler. Similarly, UML runs its own VM system, allocating backing memory from a pool that it considers to be physical memory, mapping that memory as needed into its process virtual address spaces and its own virtual memory. If needed, and it has swap configured, it will swap.

Basically, anything in Linux that's not hardware-specific just works. This includes kernel modules, the filesystems, software devices, and network protocols.

Also, SMP and highmem are supported. They need to be configured in, and once they are, they work the same as on any other architecture that supports them.

Hosted at SourceForge Logo