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: 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: 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:
\textit{Основная статья: \textbf{Сеть в Xen}} igor@0:
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}