1#################################
2__  __            _  _    _  ___
3\ \/ /___ _ __   | || |  / |/ _ \
4 \  // _ \ '_ \  | || |_ | | | | |
5 /  \  __/ | | | |__   _|| | |_| |
6/_/\_\___|_| |_|    |_|(_)_|\___/
7
8#################################
9
10http://www.xen.org/
11
12What is Xen?
13============
14
15Xen is a Virtual Machine Monitor (VMM) originally developed by the
16Systems Research Group of the University of Cambridge Computer
17Laboratory, as part of the UK-EPSRC funded XenoServers project.  Xen
18is freely-distributable Open Source software, released under the GNU
19GPL. Since its initial public release, Xen has grown a large
20development community, spearheaded by xen.org (http://www.xen.org).
21
22This file contains some quick-start instructions to install Xen on
23your system. For more information see http:/www.xen.org/ and
24http://wiki.xen.org/
25
26Quick-Start Guide
27=================
28
29First, this is just a quick-start guide. For more comprehensive
30information see the INSTALL file and the Xen wiki at
31http://wiki.xenproject.org and in particular
32http://wiki.xenproject.org/wiki/Getting_Started.
33
34Second, there are a number of prerequisites for building a Xen source
35release. Make sure you have all the following installed, either by
36visiting the project webpage or installing a pre-built package
37provided by your OS distributor:
38    * GNU Make v3.80 or later
39    * C compiler and linker:
40      - For x86:
41        - GCC 4.1.2_20070115 or later
42        - GNU Binutils 2.16.91.0.5 or later
43        or
44        - Clang/LLVM 3.5 or later
45      - For ARM:
46        - GCC 4.8 or later
47        - GNU Binutils 2.24 or later
48    * Development install of zlib (e.g., zlib-dev)
49    * Development install of Python v2.3 or later (e.g., python-dev)
50    * Development install of curses (e.g., libncurses-dev)
51    * Development install of openssl (e.g., openssl-dev)
52    * Development install of x11 (e.g. xorg-x11-dev)
53    * Development install of uuid (e.g. uuid-dev)
54    * Development install of yajl (e.g. libyajl-dev)
55    * Development install of libaio (e.g. libaio-dev) version 0.3.107 or
56      greater.
57    * Development install of GLib v2.0 (e.g. libglib2.0-dev)
58    * Development install of Pixman (e.g. libpixman-1-dev)
59    * pkg-config
60    * bridge-utils package (/sbin/brctl)
61    * iproute package (/sbin/ip)
62    * GNU bison and GNU flex
63    * GNU gettext
64    * ACPI ASL compiler (iasl)
65    * Libc multiarch package (e.g. libc6-dev-i386 / glibc-devel.i686).
66      Required when building on a 64-bit platform to build
67      32-bit components which are enabled on a default build.
68
69In addition to the above there are a number of optional build
70prerequisites. Omitting these will cause the related features to be
71disabled at compile time:
72    * Development install of Ocaml (e.g. ocaml-nox and
73      ocaml-findlib). Required to build ocaml components which
74      includes the alternative ocaml xenstored.
75    * cmake (if building vtpm stub domains)
76    * markdown
77    * figlet (for generating the traditional Xen start of day banner)
78    * systemd daemon development files
79    * Development install of libnl3 (e.g., libnl-3-200,
80      libnl-3-dev, etc).  Required if network buffering is desired
81      when using Remus with libxl.  See docs/README.remus for detailed
82      information.
83    * 16-bit x86 assembler, loader and compiler for qemu-traditional / rombios
84      (dev86 rpm or bin86 & bcc debs)
85    * Development install of liblzma for rombios
86
87Second, you need to acquire a suitable kernel for use in domain 0. If
88possible you should use a kernel provided by your OS distributor. If
89no suitable kernel is available from your OS distributor then refer to
90http://wiki.xen.org/wiki/XenDom0Kernels for suggestions for
91suitable kernels to use.
92If you are looking to compile a Dom0 kernel from source, please refer to
93http://wiki.xen.org/wiki/XenParavirtOps.
94
95[NB. Unless noted otherwise, all the following steps should be
96performed with root privileges.]
97
981. Download and untar the source tarball file. This will be a
99   file named xen-unstable-src.tgz, or xen-$version-src.tgz.
100   You can also pull the current version from the git or mercurial
101   repositories at http://xenbits.xen.org/
102
103    # tar xzf xen-unstable-src.tgz
104
105   Assuming you are using the unstable tree, this will
106   untar into xen-unstable. The rest of the instructions
107   use the unstable tree as an example, substitute the
108   version for unstable.
109
1102. cd to xen-unstable (or whatever you sensibly rename it to).
111
1123. For the very first build, or if you want to destroy build trees,
113   perform the following steps:
114
115    # ./configure
116    # make world
117    # make install
118
119   See the documentation in the INSTALL file for more info.
120
121   This will create and install onto the local machine. It will build
122   the xen binary (xen.gz), the tools and the documentation.
123
124   You can override the destination for make install by setting DESTDIR
125   to some value.
126
1274. To rebuild an existing tree without modifying the config:
128    # make dist
129
130   This will build and install xen, tools, and docs into the local dist/
131   directory.
132
133   You can override the destination for make install by setting DISTDIR
134   to some value.
135
136   make install and make dist differ in that make install does the
137   right things for your local machine (installing the appropriate
138   version of udev scripts, for example), but make dist includes all
139   versions of those scripts, so that you can copy the dist directory
140   to another machine and install from that distribution.
141
142xenstore: xenstored and oxenstored
143====================================
144
145Xen uses a configuration database called xenstore [0] to maintain configuration
146and status information shared between domains. A daemon is implemented as part
147of xenstore to act as an interface for access to the database for dom0 and
148guests. Two xenstored daemons are supported, one written in C which we refer
149to as the xenstored (sometimes referred to as cxenstored), and another written
150in Ocaml called oxenstored. Details for xenstore and the different
151implementations can be found on the wiki's xenstore reference guide [1] and
152the xenstored [2] page. You can choose which xenstore you want to enable as
153default on a system through configure:
154
155	./configure --with-xenstored=xenstored
156	./configure --with-xenstored=oxenstored
157
158By default oxenstored will be used if the ocaml development tools are found.
159If you enable oxenstored the xenstored will still be built and installed,
160the xenstored used can be changed through the configuration file:
161
162/etc/sysconfig/xencommons
163or
164/etc/default/xencommons
165
166You can change the preferred xenstored you want to use in the configuration
167but since we cannot stop the daemon a reboot will be required to make the
168change take effect.
169
170[0] http://wiki.xen.org/wiki/XenStore
171[1] http://wiki.xen.org/wiki/XenStoreReference
172[2] http://wiki.xen.org/wiki/Xenstored
173
174Python Runtime Libraries
175========================
176
177Various tools, such as pygrub, have the following runtime dependencies:
178
179    * Python 2.3 or later.
180          URL:    http://www.python.org/
181          Debian: python
182
183Intel(R) Trusted Execution Technology Support
184=============================================
185
186Intel's technology for safer computing, Intel(R) Trusted Execution Technology
187(Intel(R) TXT), defines platform-level enhancements that provide the building
188blocks for creating trusted platforms.  For more information, see
189http://www.intel.com/technology/security/.
190
191Intel(R) TXT support is provided by the Trusted Boot (tboot) module in
192conjunction with minimal logic in the Xen hypervisor.
193
194Tboot is an open source, pre- kernel/VMM module that uses Intel(R) TXT to
195perform a measured and verified launch of an OS kernel/VMM.
196
197The Trusted Boot module is available from
198http://sourceforge.net/projects/tboot.  This project hosts the code in a
199mercurial repo at http://tboot.sourceforge.net/hg/tboot.hg and contains
200tarballs of the source.  Instructions in the tboot README describe how
201to modify grub.conf to use tboot to launch Xen.
202
203There are optional targets as part of Xen's top-level makefile that will
204download and build tboot: install-tboot, build-tboot, dist-tboot, clean-tboot.
205These will download the latest tar file from the SourceForge site using wget,
206then build/install/dist according to Xen's settings.
207