+7 (812) 325 84 00

+7 (499) 322 07 96

Linux и Live Migration (часть 2)



В продолжении темы виртуализации Linux на Microsoft Hyper-V, я собирался рассказать об подробной установке интеграционных компонент на последние версии RedHat\CentOS, однако планы изменились.
[spoiler]
В процессе изучения вопроса совместимости гипервизора с различными дистрибутивами Linux, в официальном листе совместимости я наткнулся на упоминание поддержки RHEL:
Red Hat Enterprise Linux (RHEL) 5.2, 5.3 and 5.4 (x86 Edition or x64 Edition)
Это любопытно, так как неделю назад там красовалась надпись:
Red Hat Enterprise Linux (RHEL) 5.2, 5.3 and 5.4 (Emulated Devices Only)

Интеграционные компоненты, предоставляемые компанией Microsoft на официальном сайте, разработаны под определенную версию SLES, а именно 10 SP2 или SP3. Поддержка того же SLES, но 11-й версии, хоть и заявлена в официальном листе совместимости, по факту оказывается не полной. Не все SUSE одинаково полезны.

Это не значит, что интеграционные компоненты совсем не работают. Они работают, однако с некоторыми нюансами:
  • SLES 10 SP2-SP3 - Работают все компоненты, распознаются все устройства, включая виртуальный курсор.
  • SLES 11 - Работают все компоненты, распознаются все устройства. Установка драйвера виртуального курсора невозможна без плясок с бубном и портит конфиг X-сервера.
  • RHEL 5x, CentOS 5x - Работает большинство компонентов, не определяется SCSI-контроллер. Драйвер виртуального курсора ставится после установки пакета xorg-x11-server-sdk.
RHEL и CentOS используют достаточно старую версию ядра, так что есть вероятность, что SCSI-контроллер не определяется именно поэтому. Проблемы с виртуальной мышью могут быть связаны с тем, что на сайте проекта Satori могла не обновляться версия драйвера. А может, у меня просто не хватило терпения.

Думаю разработчики из Microsoft активно работает над улучшением интеграционных компонент, и в скором времени мы увидим поддержку во всех необходимых дистрибутивах. Как бы то ни было, драйвера виртуальной шины (vmbus) и синтетических сетевых контроллеров (seth) должны заработать в любом случае.

Далее несколько скриншотов корректной установки интеграционных компонент:

Установка самих компонент, требует предустановленных kernel-source и gcc.


Сразу после установки найдется синтетическая сеть, если она подключена к виртуальной машине.


Так должна выглядеть установка мышиных драйверов satori.

В SLES11 установка отваливалась с ошибкой, которая исправляется следующим образом:
1) Копируем файл osd.c из папки vmbus пакета интеграционных компонентов в папку inputvsc/vmbus.
2) Правим Makefile в папке dist/

OPEN_SUBDIRS := inputvsc   # hid inputvsc

.PHONY: install
install: cleanpublic public
@echo -n 'Installing inputvsc driver...'
# install -m0755 ./hid/hid.ko $(INSTALL_DIR)
install -m0755 ./inputvsc/inputvsc.ko $(INSTALL_DIR)
@echo 'done.'
@echo -n 'Updating module dependencies. This may take a while...'
depmod
@echo 'done.'
# install udev stuff
@echo -n 'Installing inputvsc udev rules ...'  
install -m0644 ./tools/udev/60-inputvsc.rules $(UDEV_RULESD_DIR)  
# udevcontrol reload_rules
udevadm control --reload-rules
@echo 'done.'
# update xorg.conf file to use vmbus mouse
@echo 'Updating xorg.conf file...'
chmod 755 ./tools/scripts/updatexorg.pl
./tools/scripts/updatexorg.pl || true
# install the inputvsc startup script
@echo 'Installing inputvsc startup script...'    
install -m0755 ./tools/init.d/inputvsc $(INITD_DIR)
chkconfig --add inputvsc
$(INITD_DIR)/inputvsc start

3) Правим Makefile в папке inputsvc/, комментируем строки:

all: default
default:
# so modpost does not complain about undefined vmbus symbols
# and we dont get version tainted warning
#cp -f $(PWD)/. ./hid/Module*.symvers $(PWD)/hid.symvers
#cp -f $(VMBUSDIR)/Module*.symvers $(PWD)/vmbus.symvers
#cat $(PWD)/hid.symvers $(PWD)/vmbus.symvers > $(PWD)/Modules.symvers
#ln -s $(PWD)/Modules.symvers $(PWD)/Module.symvers

@echo -n 'Building $(MODULE_NAME) driver...'
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 1>&2
@echo 'done.'
Редактируемые строки отмечены болдом.
После установки драйвера, есть шанс что не запустится X-сервер, в связи с изменением конфига. Xorg.conf можно восстановить, создать заново через sax2, или использовать этот:

# -- Xorg configuration updated to add new vmbus input mouse device --
# Xorg configuration created by pyxf86config

Section "ServerLayout"
Identifier     "Default Layout"
Screen      0  "Screen0" 0 0
InputDevice    "Keyboard0" "CoreKeyboard"
InputDevice "vmbmouse" "AlwaysCore"
EndSection

Section "ServerFlags"
Option     "AllowMouseOpenFail" "yes"
EndSection


Section "InputDevice"
 Driver "evdev"
 Identifier "vmbmouse"
 Option "Buttons" "5"
 Option "Name" "Microsoft Vmbus HID-compliant Mouse"
 Option "Protocol" "explorerps/2"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
Option     "XkbModel" "pc105"
Option     "XkbLayout" "us"
EndSection

Section "Device"
Identifier  "Videocard0"
Driver      "vesa"
EndSection

Section "Screen"
Identifier "Screen0"
Device     "Videocard0"
DefaultDepth     24
SubSection "Display"
 Viewport   0 0
 Depth     24
EndSubSection
EndSection

Резюмируя, могу сказать, что поддержка корпоративных дистрибутивов Linux в Hyper-V R2 еще далека от идеала, хотя и обеспечивает минимально необходимый для работы функционал(например Live Migration заработает практически при любом раскладе). Будем ждать того часа, когда драйвера для виртуальных устройств Hyper-V не нужно будет устанавливать на гостевые системы.