# Xen (Русский)

Информация в этой статье или разделе устарела

Причина: rc.d references. Needs update, see Systemd (Русский). (Обсудить)

Этот документ описывает установку Xen внутри Arch Linux.

## Что такое Xen?

По утверждению команды разработки Xen: "Xen, мощный гипервизор промышленного стандарта с открытым кодом для виртуализации, предлагает мощный, эффективный и безопасный набор возможностей для виртуализации в архитектурах x86, x86_64, IA64, PowerPC, и других. Он поддерживает широкий диапазон гостевых операционных систем включая Windows®, Linux®, Solaris®, и различные версии BSD."

Гипервизор Xen - это тонкий уровень программного обеспечения, которое эмулирует компьютерную архитектуру. Он запускается загрузчиком и позволяет нескольким операционным системам работать одновременно поверх него. После загрузки гипервизор Xen запускает "dom0" (означает "домен 0"), или привилегированный домен, на котором в нашем случае запущено модифицированное ядро Linux (другие возможные операционные системы для dom0 NetBSD и OpenSolaris). Ядро dom0 в AUR в настоящее время базируется на ближайшей версии ядра Linux 2.6, а еще есть более нестабильная -dev версия; аппаратное обеспечение, конечно, должно поддерживаться этим ядром для того чтобы запускать Xen. После запуска dom0, один или больше "domU" (непривилегированный) доменов могут быть запущены и управляться из dom0.

## Установка Xen

### Установка необходимых пакетов

Перед компиляцией xen убедитесь, что у вас установлены gcc, make, patch, и python2.

    pacman -S gcc make patch python2

Новый пакет xen содержит Xen 4 и разрешает практически все необходимые зависимости автоматически. Но вследствие изменений в официальной версии Python для Arch Linux, некоторые старые скрипты выдают ошибки при запуске. Для решения этого загрузите python2.5 из AUR.

И когда Вам будет предложено редактировать PKGBUILD (предпочтительнее nano), не следует забывать заменить вот это:

    make PYTHON=python2 DESTDIR=$pkgdir  install-xen
    make PYTHON=python2 DESTDIR=$pkgdir  install-tools
    make PYTHON=python2 DESTDIR=$pkgdir  install-docs

на вот это:

    make PYTHON=python2.5 DESTDIR=$pkgdir  install-xen
    make PYTHON=python2.5 DESTDIR=$pkgdir  install-tools
    make PYTHON=python2.5 DESTDIR=$pkgdir  install-docs

    sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2.5|" \
    -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2.5|" \
    $(find $pkgdir -name '*.py')

Xen-tools - это набор простых perl-скриптов, который позволяет легко создавать новые гостевые домены Xen. xen-toolsAUR[ссылка недействительна: сохранено в aur-mirror] также есть в AUR.

Следующий шаг - скомпилировать и установить ядро dom0. Для этого скомпилируйте пакет kernel26-xen-dom0 из AUR.

Обратите внимание: в настоящее время kernel26-xen-dom0 отмечен в AUR как устаревший и не обновляется до 2.6.36. Так что Вам следует пройтись по новым параметрам 2.6.36 и согласиться использовать значения по умолчанию (или что еще Вы захотите) - так что просто нажмимайте enter всякий раз когда Вас спросят.

Установка закончена. Теперь Вы можете настроить Grub и загрузиться в ядро, которое только что было построено.

### Настройка GRUB

Grub должен быть настроен так, чтобы после загрузки гипервизора Xen загружалось ядро dom0. Добавьте следующие строки в /boot/grub/menu.lst:

    title Xen with Arch Linux
    root (hd0,X)
    kernel /xen.gz dom0_mem=524288
    module /vmlinuz26-xen-dom0 root=/dev/sdaY ro console=tty0
    module /kernel26-xen-dom0.img

здесь X и Y - соответствующие номера для Вашего диска; а dom0_mem, console и vga - опциональные настраиваемые параметры. Одна примечательная деталь: Вы также можете использовать LVM. Так что вместо /dev/sdaY Вы также можете указать /dev/mapper/такойто_lvm.

Стандартное ядро arch можно использовать для загрузки доменов domU. Для того чтобы это сделать следует добавить 'xen-blkfront' в раздел модулей в /etc/mkinitcpio.conf:

    MODULES="... xen-blkfront ..."

Теперь, следующий шаг - загрузка в ядро xen.

Следующий шаг: запуск xend:

    # /etc/rc.d/xend start

При использовании xen рекомендуется назначать фиксированный объем памяти. Также, если гостевые системы активно используют ввод-вывод, может быть полезным выделить (зафиксировать) один из процессорос только для dom0. Пожалуйста посмотрите другую XenCommonProblems секцию вики страницы "Как выделить одно ядро процессора (или ядра)только для dom0?" для дополнительной информации.

### Настройка GRUB2

Работает точно так же как с Grub, но здесь Вам нужно использовать команду 'multiboot' вместо использования 'kernel'. Так что это будет:

    # (2) Arch Linux(XEN)
    menuentry "Arch Linux(XEN)" {
        set root=(hd0,X)
        multiboot /boot/xen.gz dom0_mem=2048M
        module /boot/vmlinuz26-xen-dom0 root=/dev/sdaY ro
        module /boot/kernel26-xen-dom0.gz
    }

Если у Вас получилось загрузиться в ядро dom0, тогда можно продолжать.

### Примеры добавления domU

Основная идея добавления domU такова. Мы должны получить ядра domU, выделить пространство для виртуального жесткого диска, создать файл конфигурации для domU, и затем запустить domU с помощью xm.

    $ mkfs.ext4 /dev/sdb1    ## форматировать раздел
    $ mkdir /tmp/install
    $ mount /dev/sdb1 /tmp/install
    $ mkdir -p /tmp/install/{dev,proc,sys} /tmp/install/var/lib/pacman /tmp/install/var/cache/pacman/pkg
    $ mount -o bind /dev /tmp/install/dev
    $ mount -t proc none /tmp/install/proc
    $ mount -o bind /sys /tmp/install/sys
    $ pacman -Sy -r /tmp/install --cachedir /tmp/install/var/cache/pacman/pkg -b /tmp/install/var/lib/pacman base
    $ cp -r /etc/pacman* /tmp/install/etc
    $ chroot /tmp/install /bin/bash
    $ vi /etc/resolv.conf
    $ vi /etc/fstab
        /dev/xvda               /           ext4    defaults                0       1

    $ vi /etc/inittab
        c1:2345:respawn:/sbin/agetty -8 38400 hvc0 linux
        #c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
        #c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux
        #c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux
        #c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux
        #c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux
        #c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux

    $ exit  ## exit chroot
    $ umount /tmp/install/dev
    $ umount /tmp/install/proc
    $ umount /tmp/install/sys
    $ umount /tmp/install

If not starting from a fresh install and one wants to rsync from an existing system:

    $ mkfs.ext4 /dev/sdb1    ## форматировать раздел lv
    $ mkdir /tmp/install
    $ mount /dev/sdb1 /tmp/install
    $ mkdir /tmp/install/{proc,sys}
    $ chmod 555 /tmp/install/proc
    $ rsync -avzH --delete --exclude=proc/ --exclude=sys/ old_ooga:/ /tmp/install/

    $ vi /etc/xen/dom01     ## создаем конфиг-файл
        #  -*- mode: python; -*-
        kernel = "/boot/vmlinuz26"
        ramdisk = "/boot/kernel26.img"
        memory = 1024
        name = "dom01"
        vif = [ 'mac=00:16:3e:00:01:01' ]
        disk = [ 'phy:/dev/sdb1,xvda,w' ]
        dhcp="dhcp"
        hostname = "ooga"
        root = "/dev/xvda ro"

    $ xm create -c dom01

### Аппаратная Виртуализация

Если мы хотим для наших domUs аппаратную виртуализацию, хост-машина должна поддерживать виртуализацию либо Intel-VT либо AMD-V. Для того чтобы проверить это, запустите следующие команды на хост-машине:

Для процессоров Intel:

    grep vmx /proc/cpuinfo

Для процессоров AMD:

    grep svm /proc/cpuinfo

Если ни одна из вышеуказанных команд не дает вывода, тогда скорее всего эти возможности не поддерживаются и Ваше оборудование неспособно запускать гостевые ОС с аппаратной виртуализацией (HVM). Также может быть что процессор на хост-машине поддерживает одну из этих возможностей, но функциональность запрещена по умолчанию в системном БИОСе. Чтобы проверитьь это, откройте меню БИОС во время загрузки и поищите опции связанные с поддержкой виртуализации. Если такая опция есть и запрещена, то разрешите ее, загрузите систему и повторите предыдущие команды.

## Arch как гостевая система (режим паравиртуализации)

Чтобы использовать паравиртуализацию нужно установить:

- kernel26-xen
- (optional) xe-guest-utilities

Измените режим на PV с помощью команд: (в dom0):

     xe vm-param-set uuid=<vm uuid> HVM-boot-policy=""
     xe vm-param-set uuid=<vm uuid> PV-bootloader=pygrub

Отредактируйте /boot/grub/menu.lst и добавьте kernel26-xen:

     # (1) Arch Linux (domU)
     title  Arch Linux (domU)
     root   (hd0,0)
     kernel /boot/vmlinuz26-xen root=/dev/xvda1 ro console=hvc0
     initrd /boot/kernel26-xen.img

Добавьте следующие модули xen в Ваш initcpio, добавив в MODULES в /etc/mkinitcpio.conf: "xen-blkfront xen-fbfront xenfs xen-netfront xen-kbdfront" и перекомпилируйте Ваш initcpio:

     mkinitcpio -p kernel26-xen

Раскомментируйте следующую строку в файле /etc/inittab для того чтобы разрешить консольный вход:

     h0:2345:respawn:/sbin/agetty -8 38400 hvc0 linux

### xe-guest-utilities

ЧТобы использовать xe-guest-utilities, добавьте точку монтирования xenfs в /etc/fstab:

     xenfs                  /proc/xen     xenfs     defaults            0      0

и добавьте xe-linux-distribution в раздел DAEMONS файла /etc/rc.conf.

### Примечания

- pygrub не показывает меню загрузки. И некоторые версии pygrub не поддерживают сжатые lzma обычные ядра. Смотрите https://bbs.archlinux.org/viewtopic.php?id=118525
- обычное ядро i686 не поддерживает xen вследствие highmem, но ядро x86_64 поддерживает. Смотрите https://bugs.archlinux.org/task/24207?project=1. Но все же Вы можете использовать i686/x86_64 kernel26-xen как показано выше, если о но сжато gzip, а не lzma или xz
- Чтобы избежать ошибок связанных с hwclock, установите HARDWARECLOCK="xen" в /etc/rc.conf (вообще Вы можете использовать здесь любое значение кроме "UTC" and "localtime")
- Если Вы хотите вернуться к аппаратной виртуальной машине, установите HVM-boot-policy="BIOS order"
- Если при загрузке Xen ядро вылетает в panic, и предлагает 'use apic="debug" and send an error report', попробуйте установить noapic в строке kernel в menu.lst

## Инструменты Управления Xen

The "Virtual Machine Manager" application is a desktop user interface for managing virtual machines. It presents a summary view of running domains, their live performance & resource utilization statistics. The detailed view graphs performance & utilization over time. Wizards enable the creation of new domains, and configuration & adjustment of a domain's resource allocation & virtual hardware. An embedded VNC client viewer presents a full graphical console to the guest domain.

virt-manager-lightAUR[ссылка недействительна: сохранено в aur-mirror]

## Полезные Пакеты

Поскольку в AUR много разных пакетов, и Вы можете потратить много времени, понимая, какие из них нужны, вот маленький набор самых (интересных) пакетов xen:

- Мультиплатформенный клон интерфейса XenCenter с открытым кодом: openxencenterAUR[ссылка недействительна: package not found]
- Мультиплатформенный клон интерфейса XenCenter с открытым кодом (версия svn): openxencenter-svn
- Интерфейс к облачной платформе Xen (Xen Cloud Platform): xvpAUR[ссылка недействительна: сохранено в aur-mirror]

## Ресурсы

- Домашняя страница Xen: [1]
- Xen Вики: [2]
- Патчи ядра Xen: [3]
- Руководство Виртуатопии как заставить Windows Server 2008 работать с Xen: [4]

Category:

- Emulators (Русский)

Hidden category:

- Pages with broken package links