Установка Xen 4.0 на CentOS проходит сложнее чем обычно из-за необходимости замены базового, проверенного в боях ядра 2.6.18 на более свежее 2.6.32 с поддержкой paravirt_ops. Неплохим толчком для трудоемкого обновления могут послужить новые возможности в Xen 4.0, которые будут доступны для установки на CentOS через репозиторий еще наверное года через 2.
1. Сборка ядра pvops 2.6.32.x
Устанавливаем репозиторий RPMforge, этот репозиторий просто необходим для установки пакетов git, mercurial, flex, bison.
[root@localhost tmp]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm [root@localhost tmp]# rpm -i rpmforge-release-0.5.1-1.el5.rf.i386.rpm
Устанавливаем необходимые для сборки пакеты
yum install mercurial git make gcc ncurses-devel
Загружаем последний релиз ядра, эта процедура потянет за собой около 350 метров исходников
[root@localhost tmp]# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen [root@localhost tmp]# cd linux-2.6-xen [root@localhost linux-2.6-xen]# git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x
Переходим к настройке конфигурации ядра. Проверяем текущую версию и копируем файл конфигурации ядра в каталог сборки.
[root@localhost linux-2.6-xen]# uname -r 2.6.18-194.17.1.el5 [root@localhost linux-2.6-xen]# ll /boot/config* -rw-r--r-- 1 root root 69598 Sep 29 21:21 /boot/config-2.6.18-194.17.1.el5 -rw-r--r-- 1 root root 69593 Apr 2 2010 /boot/config-2.6.18-194.el5 [root@localhost linux-2.6-xen]# cp /boot/config-2.6.18-194.17.1.el5 .config
Настраивавам ядро, более подробно конфигурирование и сборка ядра описаны в статье сборка ядра 2.6.32.x pvops
[root@localhost linux-2.6-xen] make menuconfig
ВАЖНО: Ядро pv_ops при сборке для i386 поддерживает только режим PAE.
После выполнения настройки проверяем наличие следующих параметров в файле .config, если их нет возвращается обратно в menuconfig и добавляем.
CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_ACPI_PROCFS=y CONFIG_XEN=y CONFIG_XEN_MAX_DOMAIN_MEMORY=32 CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_PRIVILEGED_GUEST=y CONFIG_XEN_PCI=y CONFIG_PCI_XEN=y CONFIG_XEN_BLKDEV_FRONTEND=m CONFIG_NETXEN_NIC=m CONFIG_XEN_NETDEV_FRONTEND=m CONFIG_XEN_KBDDEV_FRONTEND=m CONFIG_HVC_XEN=y CONFIG_XEN_FBDEV_FRONTEND=m CONFIG_XEN_BALLOON=y CONFIG_XEN_SCRUB_PAGES=y CONFIG_XEN_DEV_EVTCHN=y CONFIG_XEN_BACKEND=y CONFIG_XEN_BLKDEV_BACKEND=y CONFIG_XEN_NETDEV_BACKEND=y CONFIG_XENFS=y CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_XENBUS_FRONTEND=m CONFIG_XEN_PCIDEV_FRONTEND=y
Собираем ядро
[root@localhost linux-2.6-xen]# make -j4 [root@localhost linux-2.6-xen]# make modules_install [root@localhost linux-2.6-xen]# make headers_install [root@localhost linux-2.6-xen]# make install
2. Сборка Xen 4.0
Загружаем последнюю версию xen 4.0
[root@localhost tmp]# hg clone http://xenbits.xen.org/xen-4.0-testing.hg [root@localhost tmp]# cd xen-4.0-testing.hg
Устанавливаем необходимые для сборки пакеты
[root@localhost]# yum install zlib-devel which openssl-devel gettext dev86 python-devel flex bison patch texinfo bzip2 bridge-utils
Собираем Intel ACPI ASL Compiler (iasl), он понадобится нам для сборки xen-tools. Для этого скачиваем UNIX Format Source Code and Build Environment с сайта http://acpica.org/downloads/, собираем компилятор и копируем в директорию /bin.
[root@localhost tmp]# wget http://acpica.org/download/acpica-unix-20100915.tar.gz [root@localhost tmp]# tar -zxvf acpica-unix-20100915.tar.gz [root@localhost tmp]# cd acpica-unix-20100915/compiler/ [root@localhost compiler]# make [root@localhost compiler]# cp iasl /bin
Переходим к сборке Xen-4.0, если правильно установлены все вышеперечисленные пакеты, то сборка пройдет как по маслу.
[root@localhost xen-4.0-testing.hg]# make xen [root@localhost xen-4.0-testing.hg]# make tools [root@localhost xen-4.0-testing.hg]# make stubdom [root@localhost xen-4.0-testing.hg]# make install-xen [root@localhost xen-4.0-testing.hg]# make install-tools [root@localhost xen-4.0-testing.hg]# make install-stubdom
3. Настройка Xen 4.0
Настраиваем систему на загрузку с ядром pv_ops, для этого открываем для редактирования /boot/grub/grub.conf и добавляем туда следующие строки. На момент написания статьи актуальная версия ядра 2.6.32.24.
title CentOS (2.6.32.24) root (hd0,0) kernel /xen-4.0.gz dom0_mem=512M loglvl=all guest_loglvl=all module /vmlinuz-2.6.32.24 ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.32.24.img
Перезапускаем систему с новым ядром и переходим к настройке Xend, исправляем в /etc/xen/xend-config.sxp закоментированные строки на
(xend-http-server yes) (xend-unix-server yes) (xend-port 8000)
Добавляем сервисы в автозапуск и запускаем
[root@localhost ~]# chkconfig --add xend [root@localhost ~]# chkconfig --add xendomains [root@localhost ~]# chkconfig xend on [root@localhost ~]# chkconfig xendomains on [root@localhost ~]# service xend start [root@localhost ~]# service xendomains start
Устанавливаем Virt-Install
[root@localhost xen]# yum install virt-manager
После запуска VirtInstall появляется ошибка, может конечно в новых версиях ее пропачат, но я потерял на этом без малого 4 дня.
ERROR POST operation failed: xend_post: error from xen daemon: (xend.err Device 0 (vif) could not be connected. Hotplug scripts not working.')
Решения есть 2:
1. Можно отключить модуль xt_physdev
2. Можно /etc/xen/scripts/vif-common.sh в функции frob_iptable() закомментировать строки
# iptables "$c" FORWARD -m physdev --physdev-in "$vif" "$@" -j ACCEPT \ # 2>/dev/null && # iptables "$c" FORWARD -m state --state RELATED,ESTABLISHED -m physdev \ # --physdev-out "$vif" -j ACCEPT 2>/dev/null
Если кто-то знает еще какие-то решения решения этой проблемы – пишите буду рад.
31 Коммент. : “Установка и настройка Xen 4.0 на CentOS 5.5”
Здравствуйте, получаю такую ошибку при компиляции tools,tubdom, где я допустил ошибку?
In file included from tapdisk-queue.c:44:
libaio-compat.h:82:3: error: #error __NR_eventfd?
make[5]: *** [tapdisk-queue.o] Ошибка 1
make[5]: Leaving directory `/tmp/xen-4.0-testing.hg/tools/blktap2/drivers’
make[4]: *** [subdir-install-drivers] Ошибка 2
make[4]: Leaving directory `/tmp/xen-4.0-testing.hg/tools/blktap2′
make[3]: *** [subdirs-install] Ошибка 2
make[3]: Leaving directory `/tmp/xen-4.0-testing.hg/tools/blktap2′
make[2]: *** [subdir-install-blktap2] Ошибка 2
make[2]: Leaving directory `/tmp/xen-4.0-testing.hg/tools’
make[1]: *** [subdirs-install] Ошибка 2
make[1]: Leaving directory `/tmp/xen-4.0-testing.hg/tools’
make: *** [install-tools] Ошибка 2
@bott30931024
Привет.
1. Какая версия CentOS x64 или i386?
2. Какой командой ты запустил компиляцию?
@Alsigned
1)Centos 5.5 – i386
2)make tools; make stubdom
@bott30931024
http://mysyura.in.ua/gentoo-xen-4/ тут описана Ваша ошибка и приложен патч
Здравствуйте,у меня проблемы с со сборкой…
Инфа:
CentOS x64 2.6.18-194.el5
делаю make tools и вываливается ошибка следующего рода:
__________________
make[1]: Entering directory `/root/xen-4.0-testing.hg/tools’
set -ex; \
if test -d git://xenbits.xensource.com/qemu-xen-4.0-testing.git; then \
rm -f ioemu-dir; \
ln -sf git://xenbits.xensource.com/qemu-xen-4.0-testing.git ioemu-dir; \
else \
if [ ! -d ioemu-remote ]; then \
rm -rf ioemu-remote ioemu-remote.tmp; \
mkdir ioemu-remote.tmp; rmdir ioemu-remote.tmp; \
git clone git://xenbits.xensource.com/qemu-xen-4.0-testing.git ioemu-remote.tmp; \
if [ "6d5b7ee3acfe8cc10681d2583a38398f7470ec2a" ]; then\
cd ioemu-remote.tmp; \
git branch -D dummy >/dev/null 2>&1 ||:; \
git checkout -b dummy 6d5b7ee3acfe8cc10681d2583a38398f7470ec2a; \
cd ..; \
fi; \
mv ioemu-remote.tmp ioemu-remote; \
fi; \
rm -f ioemu-dir; \
ln -sf ioemu-remote ioemu-dir; \
fi
+ test -d git://xenbits.xensource.com/qemu-xen-4.0-testing.git
+ ‘[' '!' -d ioemu-remote ']‘
+ rm -rf ioemu-remote ioemu-remote.tmp
+ mkdir ioemu-remote.tmp
+ rmdir ioemu-remote.tmp
+ git clone git://xenbits.xensource.com/qemu-xen-4.0-testing.git ioemu-remote.tmp
Cloning into ioemu-remote.tmp…
remote: Counting objects: 45586, done.
remote: Compressing objects: 100% (14868/14868), done.
remote: Total 45586 (delta 33175), reused 42563 (delta 30664)
Receiving objects: 100% (45586/45586), 18.21 MiB | 94 KiB/s, done.
Resolving deltas: 100% (33175/33175), done.
+ ‘[' 6d5b7ee3acfe8cc10681d2583a38398f7470ec2a ']‘
+ cd ioemu-remote.tmp
+ git branch -D dummy
+ :
+ git checkout -b dummy 6d5b7ee3acfe8cc10681d2583a38398f7470ec2a
fatal: reference is not a tree: 6d5b7ee3acfe8cc10681d2583a38398f7470ec2a
make[1]: *** [ioemu-dir-find] Error 128
make[1]: Leaving directory `/root/xen-4.0-testing.hg/tools’
make: *** [tools/ioemu-dir] Error 2
__________________
@DEMIAN_8
Привет.
Я тоже недавно столкнулся с этой ошибкой, это проблема свежей версии xen-4.0.2-rc1-pre, hg clone автоматом выбирает последний релиз.
Самый простой способ решения для сборки использовать вместо xen-4.0.2-rc1-pre более ранний релиз xen-4.0.1:
hg clone -r RELEASE-4.0.1 http://xenbits.xen.org/xen-4.0-testing.hg
Хай спасибо, за ответ… но так как я трафиком ограничен, не стал запариваться и просто залез в папку tools и изменил файл Makefile.
ioemu-dir-find:
set -ex; \
wget http://mirror.choon.net/xen/qemu-xen-4.0-testing.git.tgz \
tar -xvzf qemu-xen-4.0-testing.git.tgz \
mv qemu-xen-4.0-testing.git.tgz ioemu-remote.tmp \
fi; \
mv ioemu-remote.tmp ioemu-remote; \
fi; \
rm -f ioemu-dir; \
ln -sf ioemu-remote ioemu-dir; \
fi
set -e; \
$(absolutify_xen_root); \
$(buildmakevars2shellvars); \
cd ioemu-dir; \
./xen-setup $(IOEMU_CONFIGURE_CROSS)
и все собралось!=)
На забугорных описывали, что можно подцепить qemu по git http, но как-то не хотел вот и сделал по своему=)
эх забыл, вот так правильнее
ioemu-dir-find:
set -ex; \
wget http://mirror.choon.net/xen/qemu-xen-4.0-testing.git.tgz; \
tar -xvzf qemu-xen-4.0-testing.git.tgz; \
mv qemu-xen-4.0-testing.git.tgz ioemu-remote.tmp; \
fi; \
mv ioemu-remote.tmp ioemu-remote; \
fi; \
rm -f ioemu-dir; \
ln -sf ioemu-remote ioemu-dir; \
fi
set -e; \
$(absolutify_xen_root); \
$(buildmakevars2shellvars); \
cd ioemu-dir; \
./xen-setup $(IOEMU_CONFIGURE_CROSS)
Здравствуйте, у вас были ошибки подобного рода?
начал собирать и повалились:
[root@vmhost linux-2.6-xen]# make headers_install
CHK include/linux/version.h
make[1]: `scripts/unifdef’ is up to date.
[root@vmhost linux-2.6-xen]# make install
sh /root/linux-2.6-xen/arch/x86/boot/install.sh 2.6.32.27 arch/x86/boot/bzImage \
System.map “/boot”
WARNING: No module ehci-hcd found for kernel 2.6.32.27, continuing anyway
WARNING: No module ohci-hcd found for kernel 2.6.32.27, continuing anyway
WARNING: No module uhci-hcd found for kernel 2.6.32.27, continuing anyway
WARNING: No module ahci found for kernel 2.6.32.27, continuing anyway
WARNING: No module ahci found for kernel 2.6.32.27, continuing anyway
WARNING: No module ata_piix found for kernel 2.6.32.27, continuing anyway
WARNING: No module ahci found for kernel 2.6.32.27, continuing anyway
не знаете как решить эту траблу?
.config я взял с сайта XEN, которые рекомендуют
@DEMIAN_8
Привет.
Конфиг для ядра лучше делать самому, с ядрами 2.6.32.23-24 и с кофигами с сайта XEN у меня тоже были ошибки, правда на тот момент их было поменьше:
WARNING: No module ehci-hcd found for kernel 2.6.32.23, continuing anyway
WARNING: No module ohci-hcd found for kernel 2.6.32.23, continuing anyway
WARNING: No module uhci-hcd found for kernel 2.6.32.23, continuing anyway
WARNING: No module ata_piix found for kernel 2.6.32.23, continuing anyway
А после перезапуска с новым ядром система не находила винты и вываливалась в kernel-panic. На сколько я помню проблема была в двух параметрах, которые необходимы исключительно для RHEL, Fedora и CentOS:
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
После чего система стала загружаться, но Xen-так и не заработал. Поэтому я решил настраивать конфиги сам. Здесь немножко более подробно о сборке ядра: http://www.alsigned.ru/?p=653
Привет!
Выполняю:
[root@dhcppc1 xen-4.0-testing.hg]# wget http://acpica.org/download/acpica-unix-20100915.tar.gz
tar -zxvf acpica-unix-20100915.tar.gz
[root@dhcppc1 compiler]# make
flex -i -s -PAslCompiler -oaslcompilerlex.c ../compiler/aslcompiler.l
make: flex: Команда не найдена
make: *** [aslcompilerlex.c] Ошибка 127
и не хочет собиться компилятор. где копать?
@Georg
Привет.
Ну здесь все просто. Не установлен flex – ставится с репозитория RPMForge.
компилер собрался… сроку установки компонентом не так скопипастил (не всю)
дальше все собралось без остановок на ошибки.
после настройки grub и перезапуска произошла перезагрузка на строке kernel_thread_helper
у меня centos 5.5 i386, опции при установке: Gnome decktop и Virtualizatin (вчера с зеркала яндекса скачал диск сетевой установки и с него ставил)
ядро с Xen – 2.6.32.27
сами исходники Xen брал командой hg clone http://xenbits.xen.org/xen-4.0-testing.hg (т.е. новый релиз)
железо мать Intel DQ45CB, видео встроенное Intel GMA-4500, проц Intel C2D E5300
кромы клавиатуры и мыши (через переходник-контроллер PS2 to USB) и монитора к мат. плате ничего не подключено
в биос включена поддержка Intel Virtualization Technology
так же пробовал запуски с включением опций:
Intel Ttrusted execution Technology,
Intel VT for Directed I/O (VT-d)
может вы что-нибуду встречали подобное?
дополнение:
ядро конфигурировал так как вы написали. кроме всего добавил включение опций видео для Intel 810/915
кроме всего при сборке tools были ошибки, которые компилятор показал, но не остановился
@Georg
Я тестировал работоспособность Xen 4.0 на Q35 и G41 чипсетах с процессором Q9550 – в принципе работает без проблем.
1. E5300 – это Dual Core и как написано на сайте интела совсем не факт что поддерживает VT-x, и точно не поддерживает VT-d.
http://ark.intel.com/Product.aspx?id=35300&processor=E5300&spec-codes=SLB9U,SLGQ6,SLGTL
Поэтому все эти опции рекомендую отключить.
2. Проверить как будет загружаться ядро без Xen.
мда… получается самый дешевый E8300
а ядро без xen запустилось без проблем
пойду завтра, уже седня в магазин…. менять свой e5300
@Georg
Все зависит от того, что ты собрался виртуализировать. Если Windows то будет необходима полная виртуализация – здесь обязательна поддержка VT-x процессором и материнкой, в случае с Linux можно обойтись паравиртуальным гостем без использования VT-x.
VT-d нужен в случае использования PCI pass-through – вещичка кончено забавная, но перспективы использования выглядят крайне смутно.
именно XP)
поставил процессор E8400, пытался запустить то, что не запустилось при E5300 – безуспешно. ошибка – та же. опции vt-x и vt-d в bios включил.
может мне ядро перекомпилировать в связи с новым процессором? хоят что там менять в конфиге? тип процессора там для E5300 и E8400 указывать надо один и тот же Core2Duo – это так?
при компиляции tools возникает ошибка, но компилято идет дальше
KVM support no – (linux/kvm.h: No such file or directory, #error Invalid KVM version, #error Missing KVM capability KVM_CAP_USER_MEMORY, #error Missing KVM capability KVM_CAP_SET_TSS_ADDR, #error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
выполнил
yum install python-virtinst.noarch qemu.i386
и по прежнему ошибка не уходит
что можно сделать еще?
@Georg
Смотри:
1. Ядро без xen у тебя загружается
2. Tools и Stubdom нужны уже после загрузки – процесс загрузки от них не зависит.
Отсюда вывод поблема либо в xen, либо в мамке.
Сбрось кофиг ядра на почту (на странице о блоге), интересно посмотреть.
@Georg
В Xen 4.0 Qemu собирается вместе с tools, причем более поздней версии нежели чем в репозитории RPMForge, поэтому yum install qemu лучше было не делать.
Не большие ошибки во время компиляции это вполне нормальное явление, тем более что KVM это немножко другая вещь и к работе xen отношения особо не имеет.
А если не секрет в чем конкретно заключается необходимость в установке именно Xen 4.0? Почему бы не поставить 3.0 из базового репозитория?
PS: Не смотря на восторг от новой версии, я все-таки оставил на серверах Xen 3.0 с ядром 2.6.18.
конфиг сбросил (тема письма “конфин от Georg”)
насчет 4й версии я подумал что там есть проброс видеокарты, а вобще мне нужно виртуализировать винду. какая версия минимум xen и ядра нужна для этого?
посмотри плиз конфиг
@Georg
Проброс видеокарты это конечно здорово, но область применения сего чуда для меня все-таки остается загадкой.
Для виртуализации Windows вполне подойдет Xen 3.0 включенный в CentOS-5.5, устанавливается достаточно просто:
yum install xen kernel-xen virt-manager.
Конфигурашка ядра у тебя вроде правильная. На тестовой машинке ядро собралось, xen 4.0 запустился и даже паровиртуальный гость начал устанавливаться. Но тк такой же мамки у меня нет, то все эксперименты отменяются.
Спасибо за проверку конфигурации. Теперь мне остается искать патчи под мат плату или менять последнюю… Сообщи какое железо было у тебя на тесте.
Буду пробовать 3.0….
Скажи, а что за ядро такое (вариант загрузки второй по счету) в CentOS-5.5 ? он имеет приписку “xen”? Это ядро я загружал, но на команду xm я получил ответ, что команда не найдена. там какой-то xen 2.6
@Georg
Мат. плата Giga-Byte GA-EG41MFT-US2H процессор Core 2 Quad Q9400.
По номеру в списке сказать сложно какое это ядро, но если на конце приписка xen, то скорее всего это CentOS (2.6.18-194.32.1.el5xen) – ядро для xen установленное через yum install kernel-xen.
Если xm не найден – то скорее всего не установлен пакет xen:
yum install xen
Если хочешь пиши в аську расскажу подробнее.
в аську тебя добавил
вопрос: к мат плате Giga-Byte GA-EG41MFT-US2H какое еще важное железо подключено?
@Georg
Никакого, если не считать ATA DVD-RW, SATA HDD и PS/2 клавиатуры.
Кто уже пробрасывал видеокарту в HVM Windows? или хотя бы пытался это делать. Очень нужно, с чего начать?
@ALex
Я как только вышел xen 4.0 сразу заразился этой идеей, но потом так и не смог найти ей человеческого применения. Переключать видеокарту между виртуалками нельзя – отсюда получается что намного эффективнее поставить две ОС на “разных жестких дисках”.
В первую очередь собираем и устанавливаем Xen 4.0, после того как все заработало в grub добавляем:
vmlinuz-2.6.32.24 … pciback.permissive xen-pciback.hide=(02:00.0)
В конфиг виртуалки дописываем:
gfx_passthru=1
pci=[ '02:00.0' ]
02:00.0 – номер видеокарты из lspci
Приближенно так.
Установлен виртуально виндовс XP на Centos. После неаккуратного выключения компьютереа стало выходить такое. Как решается такая бага?
Traceback (most recent call last):
File “/usr/share/virt-manager/virtManager/engine.py”, line 501, in run_domain
vm.startup()
File “/usr/share/virt-manager/virtManager/domain.py”, line 575, in startup
self.vm.create()
File “/usr/lib64/python2.4/site-packages/libvirt.py”, line 333, in create
if ret == -1: raise libvirtError (‘virDomainCreate() failed’, dom=self)
libvirtError: Ошибка POST: xend_post: ошибка демона xen: (xend.err ‘Device 5632 (vbd) could not be connected. Hotplug scripts not working.’)