
igor@0: \section{Инсталляция Xen}
igor@0: 
igor@0: На этой странице 
igor@0: описывается процедура подготовки
igor@0: Linux-машины 
igor@0: для использования в качестве
igor@0: хост-системы (домена 0) Xen.
igor@0: Хост система работает под управлением Debian GNU/Linux.
igor@0: 
igor@0: \subsection{Начальные требования}
igor@0: <graphviz>
igor@0: digraph G \{
igor@0: \begin{verbatim}
igor@0: node [shape=rectangle];
igor@0: a [label="Подготовка\nдомена 0",bgcolor=cyan,style=filled];
igor@0: b [label="Подготовка\nдомена U"];
igor@0: c [label="Запуск и эксплуатация\nсистемы"];
igor@0: a -> b;
igor@0: b -> c;
igor@0: \end{verbatim}
igor@0: \}
igor@0: </graphviz>
igor@0: 
igor@0: \subsection{Получение Xen}
igor@0: Xen можно получить одним из нескольких способов:
igor@0: \begin{itemize}
igor@0: \item  Скачать архив исходных кодов;
igor@0: \item  Получить исходный код непосредственно из репозитория Xen;
igor@0: \item  Воспользоваться пакетом Xen, входящим в ваш дистрибутив Linux.
igor@0: \end{itemize}
igor@0: 
igor@0: В первом и втором случае Xen нужно будет собирать из исходников, 
igor@0: в третьем — в систему, как правило, установливаются уже откомпилированные 
igor@0: пакеты.
igor@0: 
igor@0: \subsubsection{Получение архива исходных кодов}
igor@0: Архив исходных кодов можно скачать со страницы:
igor@0: \begin{itemize}
igor@0: \item  http://xen.xensource.com/download/
igor@0: \end{itemize}
igor@0: 
igor@0: \subsubsection{Получение Xen из репозитория Mercurial}
igor@0: Для получения кода Xen непосредственно из репозитория 
igor@0: необходимо установить \textbf{mercurial}.
igor@0: После того как он установлен, 
igor@0: код можно получить с помощью команды:
igor@0: 
igor@0: \begin{verbatim}
igor@0: node [shape=rectangle];
igor@0: a [label="Подготовка\nдомена 0",bgcolor=cyan,style=filled];
igor@0: b [label="Подготовка\nдомена U"];
igor@0: c [label="Запуск и эксплуатация\nсистемы"];
igor@0: a -> b;
igor@0: b -> c;
igor@0: \end{verbatim}
igor@0: 
igor@0: (здесь вместо версии 3.1 должна быть указана интересующая версия)
igor@0: 
igor@0: Или, для получения последнего среза unstable:
igor@0: \begin{verbatim}
igor@0:   libncurses5-dev gawk libx11-dev zlib1g-dev libssl-dev python-dev
igor@0: \end{verbatim}
igor@0: 
igor@0: Для сборки в Debian GNU/Linux 
igor@0: необходимо установить пакеты:
igor@0: \begin{verbatim}
igor@0:   libncurses5-dev gawk libx11-dev zlib1g-dev libssl-dev python-dev
igor@0: \end{verbatim}
igor@0: 
igor@0: Процедура получения кода из репозитория Mercurial подробна описана 
igor@0: на странице:
igor@0: \begin{itemize}
igor@0: \item  http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/hg-cheatsheet.txt
igor@0: \end{itemize}
igor@0: 
igor@0: \subsubsection{Инсталляция Xen из репозитория дистрибутива}
igor@0: Можно воспользоваться пакетами Xen, входящими непосредственно в дистрибутив 
igor@0: Linux (при условии, что они входят в ваш дистрибутив).
igor@0: 
igor@0: Например, для Debian GNU/Linux процедура будет такой:
igor@0: 
igor@0: \begin{verbatim}
igor@0: %# 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
igor@0: \end{verbatim}
igor@0: 
igor@0: В случае выполнения команды установятся уже откомпилированные версии пакетов. Будут установлены:
igor@0: \begin{itemize}
igor@0: \item  гипервизор;
igor@0: \item  ядро Linux откомпилированное под архитектуру Xen;
igor@0: \item  userland утилиты для работы с Xen.
igor@0: \end{itemize}
igor@0: 
igor@0: \subsection{Инсталляция Xen из архива исходных текстов}
igor@0: Список программного обеспечения, необходимого для сборки:
igor@0: \begin{itemize}
igor@0: \item  GCC v3.4 or later
igor@0: \item  GNU Make
igor@0: \item  GNU Binutils
igor@0: \item  Development install of zlib (e.g., zlib-dev)
igor@0: \item  Development install of Python v2.3 or later (e.g., python-dev)
igor@0: \item  Development install of curses (e.g., libncurses-dev)
igor@0: \item  Development install of openssl (e.g., openssl-dev)
igor@0: \item  Development install of x11 (e.g. xorg-x11-dev)
igor@0: \item  bridge-utils package (/sbin/brctl)
igor@0: \item  iproute package (/sbin/ip)
igor@0: \item  hotplug or udev
igor@0: \end{itemize}
igor@0: 
igor@0: Для Debian GNU/Linux, список такой:
igor@0: 
igor@0: \begin{verbatim}
igor@0: 
igor@0: \end{verbatim}
igor@0: 
igor@0: \subsection{Подготовка хост-системы Xen}
igor@0: \subsubsection{Подготовка домена0}
igor@0: Пусть:
igor@0: \begin{itemize}
igor@0: \item  В качестве хост-машины (dom0) будет использоваться Debian GNU/Linux.
igor@0: \item  Будут использовать бинарные версии, доступные в репозитории Debian GNU/Linux.
igor@0: \end{itemize}
igor@0: 
igor@0: Выполните инсталляцию бинарных версий
igor@0: утилит Xen:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # apt-get install xen-hypervisor-3.0-i386 xen-utils-3.0
igor@0: \end{verbatim}
igor@0: 
igor@0: Версии могут отличаться; найти текущие версии можно с помощью \textbf{apt-cache}:
igor@0: 
igor@0: \begin{verbatim}
igor@0: %# apt-cache search xen hypervisor
igor@0: \end{verbatim}
igor@0: 
igor@0: В том случае, если в вашей машине >4GB оперативной памяти,
igor@0: используйте PAE-версию гипервизора Xen: \texttt{xen-hypervisor-3.0-i386-pae}.
igor@0: 
igor@0: Проинсталлируйте программное обеспечение,
igor@0: используемое скрипта Xen для настройки сети:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # apt-get install iproute bridge-utils
igor@0: \end{verbatim}
igor@0: 
igor@0: Отключите поддержку TLS,
igor@0: иначе работа виртуальных машин существенно замедлится.
igor@0: (этот шаг нужен только в более старых системах; в частности в дистрибутиве \textit{sarge} Debian GNU/Linux):
igor@0: 
igor@0: \begin{verbatim}
igor@0: # mv /lib/tls /lib/tls.disabled
igor@0: \end{verbatim}
igor@0: 
igor@0: В том случае, если вы используете Etch Debian,
igor@0: необходимо установить libc6-xen:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # apt-get install libc6-xen
igor@0: \end{verbatim}
igor@0: 
igor@0: Подготовьте Grub к загрузке Xen.
igor@0: Такие строки должны присутствовать в конфигурационном
igor@0: файле \texttt{/boot/grub/menu.lst}:
igor@0: 
igor@0: \begin{verbatim}
igor@0: title Xen 3.0 / XenLinux 2.6
igor@0: kernel /boot/xen-3.0-i386.gz
igor@0: module /boot/xen0-linux-2.6.16-xen root=/dev/hda1 ro
igor@0: \end{verbatim}
igor@0: 
igor@0: Подготовьте ядро, под управлением которого будет работать домен Dom0 Xen:
igor@0: Для этого:
igor@0: \begin{itemize}
igor@0: \item  Скачайте исходный код ядра Linux;
igor@0: \item  Наложите на него патч Xen;
igor@0: \item  Откомпилируйте изменённое ядро.
igor@0: \end{itemize}
igor@0: 
igor@0: Получение ядра (используется ядро Debian GNU/Linux):
igor@0: 
igor@0: \begin{verbatim}
igor@0: # apt-get install kernel-source-2.6.16
igor@0: \end{verbatim}
igor@0: 
igor@0: Разархивирование ядра:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # cd /usr/src
igor@0: # tar xfj linux-source-2.6.16.tar.bz2
igor@0: \end{verbatim}
igor@0: 
igor@0: Список патчей для ядра Debian GNU/Linux доступен здесь: https://alioth.debian.org/project/showfiles.php?group\_id=30894.
igor@0: 
igor@0: Получение патча (точный адрес патча необходимо уточнить на странице, указанной выше):
igor@0: 
igor@0: \begin{verbatim}
igor@0: # cd /usr/src
igor@0: # wget --no-check-certificate https://alioth.debian.org/download.php/1561/linux-2.6
igor@0: 16-xen3.0.2-hg9629.patch.gz
igor@0: \end{verbatim}
igor@0: 
igor@0: Наложение пачта:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # cd /usr/src/linux-source-2.6.16
igor@0: # zcat ../linux-2.6.16-xen3.0.2-hg9629.patch.gz | patch -p1
igor@0: patching file include/xen/interface/vcpu.h
igor@0: patching file include/xen/interface/version.h
igor@0: ...
igor@0: Hunk #1 succeeded at 422 (offset 4 lines).
igor@0: Hunk #2 succeeded at 717 (offset 5 lines).
igor@0: ...
igor@0: \end{verbatim}
igor@0: 
igor@0: После того как патч наложен,
igor@0: можно приступить к конфигурированию и сборке ядра:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # make menuconfig
igor@0: [configure like a normal machine]
igor@0: 
igor@0: Processor type and features  ---> Subarchitecture Type (Xen-compatible)
igor@0: 
igor@0: Xen --->
igor@0: [*] Privileged Guest (domain 0)
igor@0: [*]   Block-device backend driver
igor@0: [*]   Network-device backend driver
igor@0: [*] Scrub memory before freeing it to Xen
igor@0: [*] Block-device frontend driver
igor@0: [*] Network-device frontend driver
igor@0: [*] Disable serial port drivers
igor@0: <*> Export Xen attributes in sysfs
igor@0: \end{verbatim}
igor@0: 
igor@0: После конфигурирования, выполните сборку ядра с помощью \texttt{make-kpkg}:
igor@0: 
igor@0: \begin{verbatim}
igor@0: # make-kpkg --append-to-version -xen kernel_image
igor@0: \end{verbatim}
igor@0: 
igor@0: В результате должен быть получен
igor@0: пакет Debian, который можно проинсталлировать в с помощью программы \texttt{dpkg}.
igor@0: 
igor@0: \begin{verbatim}
igor@0: # dpkg -i ../linux-xen0-2.6.16-xen_10.00.Custom_i386.deb
igor@0: \end{verbatim}
igor@0: 
igor@0: Ядро будет проинсталлировано в каталог \texttt{/boot}.
igor@0: 
igor@0: \begin{verbatim}
igor@0: /boot/xen0-linux-2.6.16-xen
igor@0: \end{verbatim}
igor@0: 
igor@0: Подготовка образа initrd:
igor@0: В том случае, если вы используете при загрузке виртуальный диск initrd,
igor@0: его необходимо подготовить для работы с новым ядром.
igor@0: 
igor@0: Сейчас можно выполнить перезагрузку
igor@0: системы, и загрузиться на новом ядре.
igor@0: Система будет работать под управление Xen, 
igor@0: в домен Dom0.
igor@0: 
igor@0: Ещё раз перепроверьте
igor@0: содержимое конфигурационного файла \texttt{/boot/grub/menu.lst}
igor@0: и перезагружайте систему.
igor@0: 
igor@0: \subsubsection{Подготовка сетевого моста}
igor@0: <dl><dd> \textit{Основная статья: \textbf{Сеть в Xen}}
igor@0: </dd></dl>
igor@0: 
igor@0: По умолчанию пакеты Debian Xen 
igor@0: не модифицируют сетевые настройки при инсталляции.
igor@0: 
igor@0: Необходимо добавить мост \texttt{br-xen}
igor@0: в файлы \texttt{/etc/network/interfaces}.
igor@0: 
igor@0: \begin{verbatim}
igor@0: auto br-xen
igor@0: iface br-xen inet static
igor@0:       address 192.168.12.25
igor@0:       netmask 255.255.255.0
igor@0:       gateway 192.168.12.1
igor@0:       bridge_ports eth0
igor@0:       # optional
igor@0:       bridge_maxwait 0
igor@0: \end{verbatim}
igor@0: 
igor@0: Дополнительные сведения о конфигурировании сетевых мостов в Linux, 
igor@0: можно узнать в файле \texttt{/usr/share/doc/bridge-utils/README.Debian.gz},
igor@0: а также в справочном руководстве man на странице brctl(8).
igor@0: 
igor@0: \subsection{Что дальше?}
igor@0: После того как домен 0 готов, 
igor@0: можно приступать к подготовке гостевых систем ­- доменов U.
igor@0: 
igor@0: Гостевой домен может работать 
igor@0: под управлением различных операционных систем
igor@0: (подробнее: Поддержка Xen операционными системами).
igor@0: 
igor@0: Процедура подготовки гостевой системы описана
igor@0: на соответствующей странице:
igor@0: \begin{itemize}
igor@0: \item  Linux в Xen
igor@0: \item  FreeBSD в Xen
igor@0: \item  Windows XP в Xen (требует поддержки виртуализации на аппаратном уровне)
igor@0: \end{itemize}
igor@0: 
igor@0: В качестве гостевой системы также могут использоваться различные
igor@0: эмуляторы, упакованные в домен Xen,
igor@0: например Xenomips ­- эмулятор маршрутизатора Cisco 7200.
igor@0: 
igor@0: \subsection{Дополнительная информация}
igor@0: \begin{itemize}
igor@0: \item  Руководство пользователя Xen
igor@0: \end{itemize}
igor@0: 
igor@0: Сборка Xen из архива исходных текстов:
igor@0: 
igor@0: \begin{itemize}
igor@0: \item  http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/ Архивы исходных текстов Xen
igor@0: \item  Mercurial(hg) Cheatsheet for Xen -- Советы по использованию Mercurial для получения текущего архива Xen
igor@0: \end{itemize}
igor@0: 
igor@0: Инсталляция на Debian GNU/Linux:
igor@0: 
igor@0: \begin{itemize}
igor@0: \item  Xen Debian Quick Start
igor@0: \item  The Perfect Xen 3.0 Setup For Debian
igor@0: \item  Installing Xen 3.0 upon Debian Unstable, with a custom Kernel
igor@0: \end{itemize}
igor@0: 
igor@0: Инсталляция на Linux других дистрибутивов:
igor@0: 
igor@0: \begin{itemize}
igor@0: \item  UbuntuBreezyHowTo на XenSource
igor@0: \item  UbuntuHoaryHowTo на XenSource
igor@0: \item  HOWTO Xen and Gentoo
igor@0: \end{itemize}
igor@0: 
igor@0: Документация по Xen:
igor@0: 
igor@0: \begin{itemize}
igor@0: \item  Xen v3.0 Users Manual
igor@0: \item  Xen Documentation
igor@0: \item  HowTos -- сборник HowTo на XenSource
igor@0: \item  Xen Wiki на XenSource
igor@0: \end{itemize}




