mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
GCC 4.1.2 is from 2007, and Binutils 2.16 is a similar vintage. Clang 3.5 is from 2014. Supporting toolchains this old is a massive development and testing burden. Set a minimum baseline of GCC 5.1 across the board, along with Binutils 2.25 which is the same age. These were chosen *3 years ago* as Linux's minimum requirements because even back then, they were ubiquitous in distros. Choose Clang/LLVM 11 as a baseline for similar reasons; the Linux commit making this change two years ago cites a laudry list of code generation bugs. This will allow us to retire a lot of compatiblity logic, and start using new features previously unavailable because of no viable compatibility option. Merge the ARM 32bit and 64bit sections now they're the same. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Julien Grall <jgrall@amazon.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
204 lines
8.1 KiB
Plaintext
204 lines
8.1 KiB
Plaintext
############################################################
|
|
__ __ _ _ _
|
|
\ \/ /___ _ __ _ _ _ __ ___| |_ __ _| |__ | | ___
|
|
\ // _ \ '_ \ _____| | | | '_ \/ __| __/ _` | '_ \| |/ _ \
|
|
/ \ __/ | | |_____| |_| | | | \__ \ || (_| | |_) | | __/
|
|
/_/\_\___|_| |_| \__,_|_| |_|___/\__\__,_|_.__/|_|\___|
|
|
|
|
############################################################
|
|
|
|
https://www.xen.org/
|
|
|
|
What is Xen?
|
|
============
|
|
|
|
Xen is a Virtual Machine Monitor (VMM) originally developed by the
|
|
Systems Research Group of the University of Cambridge Computer
|
|
Laboratory, as part of the UK-EPSRC funded XenoServers project. Xen
|
|
is freely-distributable Open Source software, released under the GNU
|
|
GPL. Since its initial public release, Xen has grown a large
|
|
development community, spearheaded by xen.org (https://www.xen.org).
|
|
|
|
This file contains some quick-start instructions to install Xen on
|
|
your system. For more information see https://www.xen.org/ and
|
|
https://wiki.xen.org/
|
|
|
|
Quick-Start Guide
|
|
=================
|
|
|
|
First, this is just a quick-start guide. For more comprehensive
|
|
information see the INSTALL file and the Xen wiki at
|
|
https://wiki.xenproject.org and in particular
|
|
https://wiki.xenproject.org/wiki/Getting_Started.
|
|
|
|
Second, there are a number of prerequisites for building a Xen source
|
|
release. Make sure you have all the following installed, either by
|
|
visiting the project webpage or installing a pre-built package
|
|
provided by your OS distributor:
|
|
* GNU Make v3.80 or later
|
|
* C compiler and linker:
|
|
- For x86:
|
|
- GCC 5.1 or later
|
|
- GNU Binutils 2.25 or later
|
|
or
|
|
- Clang/LLVM 11 or later
|
|
- For ARM:
|
|
- GCC 5.1 or later
|
|
- GNU Binutils 2.25 or later
|
|
- For RISC-V 64-bit:
|
|
- GCC 12.2 or later
|
|
- GNU Binutils 2.39 or later
|
|
* POSIX compatible awk
|
|
* Development install of zlib (e.g., zlib-dev)
|
|
* Development install of Python 2.7 or later (e.g., python-dev)
|
|
* Development install of curses (e.g., libncurses-dev)
|
|
* Development install of uuid (e.g. uuid-dev)
|
|
* Development install of yajl (e.g. libyajl-dev)
|
|
* Development install of libaio (e.g. libaio-dev) version 0.3.107 or
|
|
greater.
|
|
* Development install of GLib v2.0 (e.g. libglib2.0-dev)
|
|
* Development install of Pixman (e.g. libpixman-1-dev)
|
|
* pkg-config
|
|
* bridge-utils package (/sbin/brctl)
|
|
* iproute package (/sbin/ip)
|
|
* GNU bison and GNU flex
|
|
* ACPI ASL compiler (iasl)
|
|
|
|
In addition to the above there are a number of optional build
|
|
prerequisites. Omitting these will cause the related features to be
|
|
disabled at compile time:
|
|
* Binary-search capable grep (if building Xen with CET support)
|
|
* Development install of Ocaml (e.g. ocaml-nox and
|
|
ocaml-findlib). Required to build ocaml components which
|
|
includes the alternative ocaml xenstored.
|
|
* cmake (if building vtpm stub domains)
|
|
* pandoc, transfig, pod2{man,html,text} for rendering various pieces of
|
|
documentation into alternative formats
|
|
* figlet (for generating the traditional Xen start of day banner)
|
|
* systemd daemon development files
|
|
* Development install of libnl3 (e.g., libnl-3-200,
|
|
libnl-3-dev, etc). Required if network buffering is desired
|
|
when using Remus with libxl. See docs/README.remus for detailed
|
|
information.
|
|
* 16-bit x86 assembler, loader and compiler for qemu-traditional / rombios
|
|
(dev86 rpm or bin86 & bcc debs)
|
|
* Development install of liblzma for rombios
|
|
* Development install of libbz2, liblzma, liblzo2, and libzstd for DomU
|
|
kernel decompression.
|
|
|
|
Second, you need to acquire a suitable kernel for use in domain 0. If
|
|
possible you should use a kernel provided by your OS distributor. If
|
|
no suitable kernel is available from your OS distributor then refer to
|
|
https://wiki.xen.org/wiki/XenDom0Kernels for suggestions for
|
|
suitable kernels to use.
|
|
If you are looking to compile a Dom0 kernel from source, please refer to
|
|
https://wiki.xen.org/wiki/XenParavirtOps.
|
|
|
|
[NB. Unless noted otherwise, all the following steps should be
|
|
performed with root privileges.]
|
|
|
|
1. Download and untar the source tarball file. This will be a
|
|
file named xen-unstable-src.tgz, or xen-$version-src.tgz.
|
|
You can also pull the current version from the git or mercurial
|
|
repositories at https://xenbits.xen.org/
|
|
|
|
# tar xzf xen-unstable-src.tgz
|
|
|
|
Assuming you are using the unstable tree, this will
|
|
untar into xen-unstable. The rest of the instructions
|
|
use the unstable tree as an example, substitute the
|
|
version for unstable.
|
|
|
|
2. cd to xen-unstable (or whatever you sensibly rename it to).
|
|
|
|
3. For the very first build, or if you want to destroy build trees,
|
|
perform the following steps:
|
|
|
|
# ./configure
|
|
# make world
|
|
# make install
|
|
|
|
See the documentation in the INSTALL file for more info.
|
|
|
|
This will create and install onto the local machine. It will build
|
|
the xen binary (xen.gz), the tools and the documentation.
|
|
|
|
You can override the destination for make install by setting DESTDIR
|
|
to some value.
|
|
|
|
4. To rebuild an existing tree without modifying the config:
|
|
# make dist
|
|
|
|
This will build and install xen, tools, and docs into the local dist/
|
|
directory.
|
|
|
|
You can override the destination for make install by setting DISTDIR
|
|
to some value.
|
|
|
|
make install and make dist differ in that make install does the
|
|
right things for your local machine (installing the appropriate
|
|
version of udev scripts, for example), but make dist includes all
|
|
versions of those scripts, so that you can copy the dist directory
|
|
to another machine and install from that distribution.
|
|
|
|
xenstore: xenstored and oxenstored
|
|
====================================
|
|
|
|
Xen uses a configuration database called xenstore [0] to maintain configuration
|
|
and status information shared between domains. A daemon is implemented as part
|
|
of xenstore to act as an interface for access to the database for dom0 and
|
|
guests. Two xenstored daemons are supported, one written in C which we refer
|
|
to as the xenstored (sometimes referred to as cxenstored), and another written
|
|
in Ocaml called oxenstored. Details for xenstore and the different
|
|
implementations can be found on the wiki's xenstore reference guide [1] and
|
|
the xenstored [2] page. You can choose which xenstore you want to enable as
|
|
default on a system through configure:
|
|
|
|
./configure --with-xenstored=xenstored
|
|
./configure --with-xenstored=oxenstored
|
|
|
|
By default oxenstored will be used if the ocaml development tools are found.
|
|
If you enable oxenstored the xenstored will still be built and installed,
|
|
the xenstored used can be changed through the configuration file:
|
|
|
|
/etc/sysconfig/xencommons
|
|
or
|
|
/etc/default/xencommons
|
|
|
|
You can change the preferred xenstored you want to use in the configuration
|
|
but since we cannot stop the daemon a reboot will be required to make the
|
|
change take effect.
|
|
|
|
[0] https://wiki.xen.org/wiki/XenStore
|
|
[1] https://wiki.xen.org/wiki/XenStoreReference
|
|
[2] https://wiki.xen.org/wiki/Xenstored
|
|
|
|
Python Runtime Libraries
|
|
========================
|
|
|
|
Various tools, such as pygrub, have the following runtime dependencies:
|
|
|
|
* Python 2.7 or later.
|
|
URL: https://www.python.org/
|
|
Debian: python
|
|
|
|
Intel(R) Trusted Execution Technology Support
|
|
=============================================
|
|
|
|
Intel's technology for safer computing, Intel(R) Trusted Execution Technology
|
|
(Intel(R) TXT), defines platform-level enhancements that provide the building
|
|
blocks for creating trusted platforms. For more information, see
|
|
https://www.intel.com/technology/security/.
|
|
|
|
Intel(R) TXT support is provided by the Trusted Boot (tboot) module in
|
|
conjunction with minimal logic in the Xen hypervisor.
|
|
|
|
Tboot is an open source, pre- kernel/VMM module that uses Intel(R) TXT to
|
|
perform a measured and verified launch of an OS kernel/VMM.
|
|
|
|
The Trusted Boot module is available from
|
|
http://sourceforge.net/projects/tboot. This project hosts the code in a
|
|
mercurial repo at http://tboot.sourceforge.net/hg/tboot.hg and contains
|
|
tarballs of the source. Instructions in the tboot README describe how
|
|
to modify grub.conf to use tboot to launch Xen.
|