Самая трудоемкая часть при установке Xen 4.0 – это сборка нового ядра 2.6.32.х с paravirt_ops и установка его вместо базового 2.6.18.x. В этой статье я более подробно постараюсь рассмотреть настройку нового ядра для CentOS 5.5.
1. Подготавливаемся к сборке
Устанавливаем репозиторий RPMForge
[root@localhost ~]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm [root@localhost ~]# rpm -i rpmforge-release-0.5.1-1.el5.rf.i386.rpm
Устанавливаем необходимые для сборки компоненты
[root@localhost ~]# yum install git make gcc ncurses-devel
Загружаем исходники ядра
[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.11.4.el5
Копируем соответствующий конфиг из директории /boot
[root@localhost linux-2.6-xen]# ll /boot | grep config -rw-r--r-- 1 root root 69598 Sep 21 13:38 config-2.6.18-194.11.4.el5 -rw-r--r-- 1 root root 69597 Jul 2 03:36 config-2.6.18-194.8.1.el5 -rw-r--r-- 1 root root 69593 Apr 2 2010 config-2.6.18-194.el5 [root@localhost linux-2.6-xen]# cp /boot/config-2.6.18-194.11.4.el5 .config
2. Настраиваем ядро
Один из вариантов в .config добавить следующие строки.
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
Но что бы не напортачить с зависимостями удобнее сделать это через базовую menuconfig.
[root@localhost linux-2.6-xen]# make menuconfig
Для архитектуры i386 ядро pvops поддерживает только режим PAE.
Processor type and features -> High Memory Support (64GB)
X86_PAE [=y]
Virtualization (NEW) ->
<M> Kernel-based Virtual Machine (KVM) support
<M> KVM for Intel processors support
< > KVM for AMD processors support (NEW)
Для RHEL и CentOS обязательно включить параметры SYSFS_DEPRECATE и SYSFS_DEPRECATED_V2
General setup -> enable deprecated sysfs features which may confuse old userspace tools
Processor type and features -> Paravirtualized guest support
[*] Xen guest support
[*] Enable Xen debug and tuning parameters in debugfs
[*] Enable Xen privileged domain support
[*] Enable support for Xen PCI passthrough devices
[*] VMI Guest support (DEPRECATED)
[*] KVM paravirtualized clock
[*] KVM Guest support
[*] Lguest guest support
-*- Enable paravirtualization code
[*] Paravirtualization layer for spinlocks
Здесь лучше всего встроить драйверы в ядро, а не делать их отдельными модулями .
Device Drivers
[*] Xen memory balloon driver (NEW)
[*] Scrub pages before returning them to system (NEW)
<*> Xen /dev/xen/evtchn device (NEW)
[*] Backend driver support (NEW)
<*> Xen backend network device
<*> Block-device backend driver
<*> Block-device tap backend driver
<*> PCI-device backend driver (NEW)
PCI Backend Mode (Virtual PCI) —>
[*] PCI Backend Debugging
<*> Xen filesystem (NEW)
[*] Create compatibility mount point /proc/xen (NEW)
[*] Create xen entries under /sys/hypervisor (NEW
<*> userspace grant access device driver
<M> xen platform pci device driver (NEW)
Переходим к настройке FrontEnd драйверов
Device Drivers -> Block devices -> Xen virtual block device support (делаем модуль) XEN_BLKDEV_FRONTEND
Device Drivers -> Network device support -> Xen network device frontend driver (делаем модуль)
XEN_NETDEV_FRONTEND
Device Drivers -> Input device support -> Xen virtual keyboard and mouse support
XEN_KBDDEV_FRONTEND
Device Drivers -> Graphics support -> Support for frame buffer devices -> Xen virtual frame buffer support
XEN_FBDEV_FRONTEND
3. Сборка и установка ядра
Теперь переходим к сборке ядра
[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
Проверяем установку нового ядра в файле /boot/grub/grub.conf
[root@localhost linux-2.6-xen]# cat /boot/grub/grub.conf default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32.24) root (hd0,0) kernel /vmlinuz-2.6.32.24 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.32.24.img title CentOS (2.6.18-194.11.4.el5) root (hd0,0) kernel /vmlinuz-2.6.18-194.11.4.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-194.11.4.el5.img title CentOS (2.6.18-194.8.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-194.8.1.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-194.8.1.el5.img
Меняем значение Default на 0 и перезагружаемся с новым ядром. Проверяем:
[root@localhost ~]# uname -r 2.6.32.24
Все отлично можно приступать к установке Xen 4.0.
45 Коммент. : “Сборка ядра 2.6.32.x pvops”
Здравствуйте.
А можно узнать где в части “Загружаем исходники ядра” переносы стоят?
Что-то не получается загрузить как строки не компоновал…
@SolarW
Привет.
В консоли набираешь:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
cd linux-2.6-xen
git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x
а как запустить гостя ???
прежний гость с кернел 2.6.18 не запускается
положил свежескомпиленое ядро в госевую файловую систему, подправил grub
не взлетает.
@eugene
Какую ошибку пишет?
У меня гости с 2.6.18 запустились без больших проблем.
Привет!
Получается, что схема такая:
- компилим ядро под xen
- настраиваем Grub для загрузки как после обычного апгрейда ядра
- загружаемся в собранное ядро
- компилируем xen
- настраиваем Grub по-особому для загрузки сначала среды xen и затем Dom0
Правильно?
@Georg
Привет.
Если уверен что ядро соберется как надо, можно оставить только:
- компилим ядро под xen
- компилируем xen
- настраиваем Grub по-особому для загрузки сначала среды xen и затем Dom0
Дело в том что сборка ядра по статье http://www.alsigned.ru/?p=676 вызвала ряд проблем, и здесь я решил более подробно рассмотреть эту процедуру, желания копировать из предыдущей статьи как собирается xen у меня не было – не люблю переписывать одно и тоже. Отсюда и небольшие издержки производства – один лишний перезапуск.
пару разу обновлял на центосе ядро по статье, а сейчас столкнулся с проблемой при
git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
сначала был таймаут. теперь ругается на то что нельзя идти на порт 9418
странно это все… машина в ксен-сервере за натом…. наружу разрешены все порты
git clone git://kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
Cloning into linux-2.6-xen…
kernel.org[0: 199.6.1.165]: errno=Connection timed out
вот что лезет в консоль
@gerasim
Привет.
Здесь понятно что ошибка в сетевом соединении, нужно погонять traceroute и ping до kernel.org, посмотреть коннектится ли telnet.
На всякий случай проверил, вдруг ссылка сменилась – все качается.
Поэтому можешь смело грешить либо на настройку сети, либо на интернет-провайдера
@Alsigned
действительно.. тормознул, в фаере естаблишед стоит и порт не прописан:) 9418 добавил применил правила и все окей теперь проблемс с компиляцией ядра. беру конфиг от 2.6.18 с имеющимися параметрами ксена, делаю make -j4 и получаю какую то ругань на параметры =m у некоторых пунктов… так как мой центось стоит в ксен-сервере то уже имеет ксен-ядро. видимо надо будет взять чистый конфиг от 18-ого и вставить туда параметры через менюселект…
ядро собрал но при перезагрузке кернел паник. кстати уже должен находится ксен файл в бут каталоге?
Привет, @gerasim
Сразу несколько вопросов: Какая ОС? Какая версия ядра? Что за железо?
and stopig wort is it??????
root@ZXDSL831II:/usr/src# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
Cloning into linux-2.6-xen…
fatal: Unable to look up git.kernel.org (port 9418) (Name or service not known)
sorry bat russin klava sdoxla )
Привет.
Где-то уже сталкивался с этой ошибкой. Скорее всего порт 9418 закрыт на файрволе. Попробуй соединиться телнетом с git.kernel.org по поту 9418.
kernel.org в дауне после хакерских атак… ищите зеркало или ждите пока подымут его…
Печально это все… Но думаю скоро все восстановится