Самая трудоемкая часть при установке 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”

  1. SolarW пишет:

    Здравствуйте.
    А можно узнать где в части “Загружаем исходники ядра” переносы стоят?
    Что-то не получается загрузить как строки не компоновал…

  2. Alsigned пишет:

    @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

  3. eugene пишет:

    а как запустить гостя ???
    прежний гость с кернел 2.6.18 не запускается

    положил свежескомпиленое ядро в госевую файловую систему, подправил grub
    не взлетает.

  4. Alsigned пишет:

    @eugene

    Какую ошибку пишет?

    У меня гости с 2.6.18 запустились без больших проблем.

  5. Georg пишет:

    Привет!
    Получается, что схема такая:
    - компилим ядро под xen
    - настраиваем Grub для загрузки как после обычного апгрейда ядра
    - загружаемся в собранное ядро
    - компилируем xen
    - настраиваем Grub по-особому для загрузки сначала среды xen и затем Dom0

    Правильно?

  6. Alsigned пишет:

    @Georg
    Привет.

    Если уверен что ядро соберется как надо, можно оставить только:
    - компилим ядро под xen
    - компилируем xen
    - настраиваем Grub по-особому для загрузки сначала среды xen и затем Dom0

    Дело в том что сборка ядра по статье http://www.alsigned.ru/?p=676 вызвала ряд проблем, и здесь я решил более подробно рассмотреть эту процедуру, желания копировать из предыдущей статьи как собирается xen у меня не было – не люблю переписывать одно и тоже. Отсюда и небольшие издержки производства – один лишний перезапуск.

  7. gerasim пишет:

    пару разу обновлял на центосе ядро по статье, а сейчас столкнулся с проблемой при
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
    сначала был таймаут. теперь ругается на то что нельзя идти на порт 9418
    странно это все… машина в ксен-сервере за натом…. наружу разрешены все порты

  8. gerasim пишет:

    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
    вот что лезет в консоль

  9. Alsigned пишет:

    @gerasim
    Привет.

    Здесь понятно что ошибка в сетевом соединении, нужно погонять traceroute и ping до kernel.org, посмотреть коннектится ли telnet.

    На всякий случай проверил, вдруг ссылка сменилась – все качается.

    [root@localhost ~]# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
    Cloning into linux-2.6-xen...
    remote: Counting objects: 2039617, done.
    remote: Compressing objects: 100% (337961/337961), done.
    remote: Total 2039617 (delta 1697487), reused 2023287 (delta 1682438)
    Receiving objects: 100% (2039617/2039617), 424.45 MiB | 497 KiB/s, done.
    Resolving deltas: 100% (1697487/1697487), done.

    Поэтому можешь смело грешить либо на настройку сети, либо на интернет-провайдера ;)

  10. gerasim пишет:

    @Alsigned

    действительно.. тормознул, в фаере естаблишед стоит и порт не прописан:) 9418 добавил применил правила и все окей :) теперь проблемс с компиляцией ядра. беру конфиг от 2.6.18 с имеющимися параметрами ксена, делаю make -j4 и получаю какую то ругань на параметры =m у некоторых пунктов… так как мой центось стоит в ксен-сервере то уже имеет ксен-ядро. видимо надо будет взять чистый конфиг от 18-ого и вставить туда параметры через менюселект…

  11. gerasim пишет:

    ядро собрал но при перезагрузке кернел паник. кстати уже должен находится ксен файл в бут каталоге?

  12. Alsigned пишет:

    Привет, @gerasim
    Сразу несколько вопросов: Какая ОС? Какая версия ядра? Что за железо?

  13. MAX пишет:

    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 :) )

  14. Alsigned пишет:

    Привет.
    Где-то уже сталкивался с этой ошибкой. Скорее всего порт 9418 закрыт на файрволе. Попробуй соединиться телнетом с git.kernel.org по поту 9418.

  15. repairman пишет:

    kernel.org в дауне после хакерских атак… ищите зеркало или ждите пока подымут его…

  16. Alsigned пишет:

    Печально это все… Но думаю скоро все восстановится ;)

Оставить комментарий