\section{Инсталляция Xen}

На этой странице 
описывается процедура подготовки
Linux-машины 
для использования в качестве
хост-системы (домена 0) Xen.
Хост система работает под управлением Debian GNU/Linux.

\subsection{Начальные требования}
<graphviz>
digraph G \{
\begin{verbatim}
node [shape=rectangle];
a [label="Подготовка\nдомена 0",bgcolor=cyan,style=filled];
b [label="Подготовка\nдомена U"];
c [label="Запуск и эксплуатация\nсистемы"];
a -> b;
b -> c;
\end{verbatim}
\}
</graphviz>

\subsection{Получение Xen}
Xen можно получить одним из нескольких способов:
\begin{itemize}
\item  Скачать архив исходных кодов;
\item  Получить исходный код непосредственно из репозитория Xen;
\item  Воспользоваться пакетом Xen, входящим в ваш дистрибутив Linux.
\end{itemize}

В первом и втором случае Xen нужно будет собирать из исходников, 
в третьем — в систему, как правило, установливаются уже откомпилированные 
пакеты.

\subsubsection{Получение архива исходных кодов}
Архив исходных кодов можно скачать со страницы:
\begin{itemize}
\item  http://xen.xensource.com/download/
\end{itemize}

\subsubsection{Получение Xen из репозитория Mercurial}
Для получения кода Xen непосредственно из репозитория 
необходимо установить \textbf{mercurial}.
После того как он установлен, 
код можно получить с помощью команды:

\begin{verbatim}
node [shape=rectangle];
a [label="Подготовка\nдомена 0",bgcolor=cyan,style=filled];
b [label="Подготовка\nдомена U"];
c [label="Запуск и эксплуатация\nсистемы"];
a -> b;
b -> c;
\end{verbatim}

(здесь вместо версии 3.1 должна быть указана интересующая версия)

Или, для получения последнего среза unstable:
\begin{verbatim}
  libncurses5-dev gawk libx11-dev zlib1g-dev libssl-dev python-dev
\end{verbatim}

Для сборки в Debian GNU/Linux 
необходимо установить пакеты:
\begin{verbatim}
  libncurses5-dev gawk libx11-dev zlib1g-dev libssl-dev python-dev
\end{verbatim}

Процедура получения кода из репозитория Mercurial подробна описана 
на странице:
\begin{itemize}
\item  http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/hg-cheatsheet.txt
\end{itemize}

\subsubsection{Инсталляция Xen из репозитория дистрибутива}
Можно воспользоваться пакетами Xen, входящими непосредственно в дистрибутив 
Linux (при условии, что они входят в ваш дистрибутив).

Например, для Debian GNU/Linux процедура будет такой:

\begin{verbatim}
%# apt-get install xen-hypervisor-3.0.4-1-i386 linux-image-2.6.18-4-xen-686 xen-ioemu-3.0.4-1 xen-utils-3.0.4-1
\end{verbatim}

В случае выполнения команды установятся уже откомпилированные версии пакетов. Будут установлены:
\begin{itemize}
\item  гипервизор;
\item  ядро Linux откомпилированное под архитектуру Xen;
\item  userland утилиты для работы с Xen.
\end{itemize}

\subsection{Инсталляция Xen из архива исходных текстов}
Список программного обеспечения, необходимого для сборки:
\begin{itemize}
\item  GCC v3.4 or later
\item  GNU Make
\item  GNU Binutils
\item  Development install of zlib (e.g., zlib-dev)
\item  Development install of Python v2.3 or later (e.g., python-dev)
\item  Development install of curses (e.g., libncurses-dev)
\item  Development install of openssl (e.g., openssl-dev)
\item  Development install of x11 (e.g. xorg-x11-dev)
\item  bridge-utils package (/sbin/brctl)
\item  iproute package (/sbin/ip)
\item  hotplug or udev
\end{itemize}

Для Debian GNU/Linux, список такой:

\begin{verbatim}

\end{verbatim}

\subsection{Подготовка хост-системы Xen}
\subsubsection{Подготовка домена0}
Пусть:
\begin{itemize}
\item  В качестве хост-машины (dom0) будет использоваться Debian GNU/Linux.
\item  Будут использовать бинарные версии, доступные в репозитории Debian GNU/Linux.
\end{itemize}

Выполните инсталляцию бинарных версий
утилит Xen:

\begin{verbatim}
# apt-get install xen-hypervisor-3.0-i386 xen-utils-3.0
\end{verbatim}

Версии могут отличаться; найти текущие версии можно с помощью \textbf{apt-cache}:

\begin{verbatim}
%# apt-cache search xen hypervisor
\end{verbatim}

В том случае, если в вашей машине >4GB оперативной памяти,
используйте PAE-версию гипервизора Xen: \texttt{xen-hypervisor-3.0-i386-pae}.

Проинсталлируйте программное обеспечение,
используемое скрипта Xen для настройки сети:

\begin{verbatim}
# apt-get install iproute bridge-utils
\end{verbatim}

Отключите поддержку TLS,
иначе работа виртуальных машин существенно замедлится.
(этот шаг нужен только в более старых системах; в частности в дистрибутиве \textit{sarge} Debian GNU/Linux):

\begin{verbatim}
# mv /lib/tls /lib/tls.disabled
\end{verbatim}

В том случае, если вы используете Etch Debian,
необходимо установить libc6-xen:

\begin{verbatim}
# apt-get install libc6-xen
\end{verbatim}

Подготовьте Grub к загрузке Xen.
Такие строки должны присутствовать в конфигурационном
файле \texttt{/boot/grub/menu.lst}:

\begin{verbatim}
title Xen 3.0 / XenLinux 2.6
kernel /boot/xen-3.0-i386.gz
module /boot/xen0-linux-2.6.16-xen root=/dev/hda1 ro
\end{verbatim}

Подготовьте ядро, под управлением которого будет работать домен Dom0 Xen:
Для этого:
\begin{itemize}
\item  Скачайте исходный код ядра Linux;
\item  Наложите на него патч Xen;
\item  Откомпилируйте изменённое ядро.
\end{itemize}

Получение ядра (используется ядро Debian GNU/Linux):

\begin{verbatim}
# apt-get install kernel-source-2.6.16
\end{verbatim}

Разархивирование ядра:

\begin{verbatim}
# cd /usr/src
# tar xfj linux-source-2.6.16.tar.bz2
\end{verbatim}

Список патчей для ядра Debian GNU/Linux доступен здесь: https://alioth.debian.org/project/showfiles.php?group\_id=30894.

Получение патча (точный адрес патча необходимо уточнить на странице, указанной выше):

\begin{verbatim}
# cd /usr/src
# wget --no-check-certificate https://alioth.debian.org/download.php/1561/linux-2.6
16-xen3.0.2-hg9629.patch.gz
\end{verbatim}

Наложение пачта:

\begin{verbatim}
# cd /usr/src/linux-source-2.6.16
# zcat ../linux-2.6.16-xen3.0.2-hg9629.patch.gz | patch -p1
patching file include/xen/interface/vcpu.h
patching file include/xen/interface/version.h
...
Hunk #1 succeeded at 422 (offset 4 lines).
Hunk #2 succeeded at 717 (offset 5 lines).
...
\end{verbatim}

После того как патч наложен,
можно приступить к конфигурированию и сборке ядра:

\begin{verbatim}
# make menuconfig
[configure like a normal machine]

Processor type and features  ---> Subarchitecture Type (Xen-compatible)

Xen --->
[*] Privileged Guest (domain 0)
[*]   Block-device backend driver
[*]   Network-device backend driver
[*] Scrub memory before freeing it to Xen
[*] Block-device frontend driver
[*] Network-device frontend driver
[*] Disable serial port drivers
<*> Export Xen attributes in sysfs
\end{verbatim}

После конфигурирования, выполните сборку ядра с помощью \texttt{make-kpkg}:

\begin{verbatim}
# make-kpkg --append-to-version -xen kernel_image
\end{verbatim}

В результате должен быть получен
пакет Debian, который можно проинсталлировать в с помощью программы \texttt{dpkg}.

\begin{verbatim}
# dpkg -i ../linux-xen0-2.6.16-xen_10.00.Custom_i386.deb
\end{verbatim}

Ядро будет проинсталлировано в каталог \texttt{/boot}.

\begin{verbatim}
/boot/xen0-linux-2.6.16-xen
\end{verbatim}

Подготовка образа initrd:
В том случае, если вы используете при загрузке виртуальный диск initrd,
его необходимо подготовить для работы с новым ядром.

Сейчас можно выполнить перезагрузку
системы, и загрузиться на новом ядре.
Система будет работать под управление Xen, 
в домен Dom0.

Ещё раз перепроверьте
содержимое конфигурационного файла \texttt{/boot/grub/menu.lst}
и перезагружайте систему.

\subsubsection{Подготовка сетевого моста}
<dl><dd> \textit{Основная статья: \textbf{Сеть в Xen}}
</dd></dl>

По умолчанию пакеты Debian Xen 
не модифицируют сетевые настройки при инсталляции.

Необходимо добавить мост \texttt{br-xen}
в файлы \texttt{/etc/network/interfaces}.

\begin{verbatim}
auto br-xen
iface br-xen inet static
      address 192.168.12.25
      netmask 255.255.255.0
      gateway 192.168.12.1
      bridge_ports eth0
      # optional
      bridge_maxwait 0
\end{verbatim}

Дополнительные сведения о конфигурировании сетевых мостов в Linux, 
можно узнать в файле \texttt{/usr/share/doc/bridge-utils/README.Debian.gz},
а также в справочном руководстве man на странице brctl(8).

\subsection{Что дальше?}
После того как домен 0 готов, 
можно приступать к подготовке гостевых систем ­- доменов U.

Гостевой домен может работать 
под управлением различных операционных систем
(подробнее: Поддержка Xen операционными системами).

Процедура подготовки гостевой системы описана
на соответствующей странице:
\begin{itemize}
\item  Linux в Xen
\item  FreeBSD в Xen
\item  Windows XP в Xen (требует поддержки виртуализации на аппаратном уровне)
\end{itemize}

В качестве гостевой системы также могут использоваться различные
эмуляторы, упакованные в домен Xen,
например Xenomips ­- эмулятор маршрутизатора Cisco 7200.

\subsection{Дополнительная информация}
\begin{itemize}
\item  Руководство пользователя Xen
\end{itemize}

Сборка Xen из архива исходных текстов:

\begin{itemize}
\item  http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/ Архивы исходных текстов Xen
\item  Mercurial(hg) Cheatsheet for Xen -- Советы по использованию Mercurial для получения текущего архива Xen
\end{itemize}

Инсталляция на Debian GNU/Linux:

\begin{itemize}
\item  Xen Debian Quick Start
\item  The Perfect Xen 3.0 Setup For Debian
\item  Installing Xen 3.0 upon Debian Unstable, with a custom Kernel
\end{itemize}

Инсталляция на Linux других дистрибутивов:

\begin{itemize}
\item  UbuntuBreezyHowTo на XenSource
\item  UbuntuHoaryHowTo на XenSource
\item  HOWTO Xen and Gentoo
\end{itemize}

Документация по Xen:

\begin{itemize}
\item  Xen v3.0 Users Manual
\item  Xen Documentation
\item  HowTos -- сборник HowTo на XenSource
\item  Xen Wiki на XenSource
\end{itemize}
