Next: Design and implementation overview
Up: Overview
Previous: Overview
UML implements a virtual Linux machine running (currently) on a Linux host.
All of its devices are virtual, being constructed from software resources provided
by the host. These include every type of device that would be expected to be
present on a typical physical machine:
- Consoles and serial lines may be attached to a variety of devices on the host,
including pseudo-terminals, virtual consoles, file descriptors, and xterms.
- Block devices can be associated with anything on the host that resembles a normal
file, including files and device nodes such as CD-ROMs, floppies, disk partitions,
and whole disks. These normally contain a filesystem image or a swap signature
and are mounted or used as swap by the virtual machine, but they could contain
arbitrary data, which could be read from the raw device with a program such
as dd.
- Network devices can be attached to most types of software network interfaces
on the host, such as TUN/TAP, Ethertap, and slip devices. There are also two
mechanisms for exchanging Ethernet frames directly between virtual machines
without going through the host's networking system - one involving a central
daemon acting as an Ethernet switch and the other using a multicast network.
UML runs the same binary executables as the host - normal userspace code runs
natively on the processor just as it does on the host; there is no instruction
emulation. It can run essentially everything that the host can. The few exceptions
include applications such as emulators, which are hardware-dependent, and use
privileged instructions which UML doesn't emulate, and a few other things, such
as installation procedures, which expect to use specific devices which don't
exist in UML.
Next: Design and implementation overview
Up: Overview
Previous: Overview
Jeff Dike
2001-09-14