Установка и настройка гипервизора Xen (монитора виртуальных машин) с пробросом видеокарты в гостевую ОС (Windows)

Изображение пользователя fox4.

Стимулом к написанию статьи послужила данная тема. После прочтения которой первая мысль пришедшая в голову была "Ничего себе костыль! Есть же уже велосипед!" но учитывая горячее обсуждение данной темы и количество заинтересованных пользователей пришел к выводу что тема вполне актуальна не смотря на приличное количество материалов в интернете.
Сразу хочется предупредить что статья не претендует на оригинальность и является компиляцией других материалов накопанных на "Хабре", "Лоре", и других ресурсах - поэтому в конце статьи поделюсь ссылками на все чем пользовался ваш покорный слуга.

Статья разделена на 3 раздела:
1. Аппаратные требования.
2. Установка и настройка Xen.
3. Проброс в гостевую ОС Видеокарты и других PCI устройств.

Итак для того чтобы установить Xen и пробросить видеокарту в гостевую ОС необходимо соблюдение нескольких аппаратных требований
1. Наличие достаточно современного процессора и материнской платы поддерживающих технологию аппаратной виртуализации для Intel VT-x VT-d для AMD AMD-V IOMUU а также 2-х видео карточек
одна из которых может быть встроенной в процессор или материнскую плату (но работать независимо от дискретной) и второй обязательно Radeon не ниже 4550 ну или nvidia quadro если нет проблем с деньгами :-) (об удачных пробросах бюджетных карточек от nvidia мне информация не попадалась)
И монитора с двумя независимыми входами или двух различных мониторов подключенных к своим видео карточкам соответственно.

Кстати владельцам процессоров Intel последних поколений с буквой "K" о пробросе придется забыть поскольку технология VT-d в них отключена но технология VT-x работает и если вас не сильно волнует наличие крутой видяхи в гостевой ОС или другой "железяки" то для организации параллельной работы нескольких ОС их вполне хватает.

Вот моя аппаратная платформа
CPU - Intel Core i7-3770 графика Intel® HD Graphics 4000
Мать - P8B75-V
Озу - 8 Гб
Видеокарта Radeon HD 4850 (вторая)
Монитор Acer AL2216W с двумя видео входами DSUB и DVI подключенный к двум видеокартам по разным каналам (на свой страх и риск так как на счет гальванической развязки входов нет никакой информации)

2. Устанавливаем Xen.
Если раньше установка этого ПО сопровождалось скачиванием исходников компиляцией и шаманством с файлами конфигураций что отпугивало 90% потенциальных пользователей то теперь начиная с версии Ubuntu 12.04 гипервизор Xen устанавливается прямо из репозитория ubuntu.
sudo apt-get install xen-hypervisor-4.2-amd64 xen-utils-4.2 xenwatch xen-tools xen-utils-common xenstore-utils (для 13.04 для более ранних версий систем 12.04 12.10 может оказаться xen-hypervisor-4.1-amd64 )
поставим так же графический инструмент управления ВМ virt-manager
sudo apt-get install virtinst virt-viewer virt-manager
Перезагружаем OC c выбором в GRUB ядра Xen проверяем что гипервизор установился нормально
# xm info

и домен Dom0 запущен
sudo xm list
Далее для virt-manager в файл ~/.bashrc
sudo kate ~/.bashrc
добавим
export VIRSH_DEFAULT_CONNECT_URI="xen:///"
сконфигурируем наш xend (демон виртуальной машины)
sudo kate /etc/xen/xend-config.sxp
параметр
(xend-unix-server yes)
должен быть раскомментирован.
Я сижу за роутером и потому удалив NetworkManager для Xen создал мост (bridge) прописав в /etc/network/interfaces
Так же не лишним в группу libvirtd будет добавить вашего пользователя
запускаем
virt-manager
или K-> Система -> Менеджер виртуальных машин
должны получить вот такое окошко
Нажав на кнопку "Создание новой виртуальной машины" можем приступить к установке и настройке виртуальной ОС
Если при создании новой ВМ virt-manager ругается ошибками идем по ссылке и лечим как написано в конце статьи все должно заработать
Создадим файл конфигурации виртуальной ОС
mkdir ~/xen_vm
cd ~/xen_vm
kate ./vm.cfg

заполняем
создадим файл диска ВМ размером = 20 Гб
cd ~/xen_vm
dd if=/dev/zero of=hdd bs=1024k seek=20000 count=0

Установить шindows.
Для соединения (пока что) с "экраном" гостевой ОС используем, например VNC или krdc. Дефолтный адрес:порт 127.0.0.1:5900.

3. Пробрасываем VGA и PCI устройства в гостевую ОС (DomU)
Grep-аем видеокарту Radeon
sudo lspci|grep Radeon

Изолируем pci девайсы от dom0. Прописывайем значения в /etc/default/grub
GRUB_CMDLINE_LINUX="xen-pciback.permissive xen-pciback.hide=(01:00.0)(01:00.1) dom0_mem=2048M"
далее sudo update-grub2
перезагружаемся и проверяем доступность устройств для гостевой ОС
sudo xm pci-list-assignable-devices
если не прокатило
идём в /etc/init.d/
создаём файл ati.hide.pciback
заполняем
#!/bin/bash

modprobe xen-pciback

echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
echo 0000:01:00.0 > /sys/bus/pci/drivers/pciback/new_slot
echo 0000:01:00.0 > /sys/bus/pci/drivers/pciback/bind

echo 0000:01:00.1 > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
echo 0000:01:00.1 > /sys/bus/pci/drivers/pciback/new_slot
echo 0000:01:00.1 > /sys/bus/pci/drivers/pciback/bind

прописываем скрипт в автозагрузку
update-rc.d ati.hide.pciback defaults 95 05
перезагружаемся и снова проверяем доступность устройств
sudo xm pci-list-assignable-devices
Если устройства стали доступны DomU в файле vm.cfg раскоментируем 2 последних строчки
gfx_passthru = 0
pci=['01:00.0','01:00.1']

и попробуем создать ВМ
sudo xm create ~/xen_vm/vm.cfg
если всё прошло успешно и гостевая ОС запустилась
останется зайти в систему и установить драйверы на карту Radeon причем устанавливать нужно только сами драйверы Каталист Контрол Центр (CCC) ставить нельзя иначе получите "BSOD"
P.S. Обещанные в начали статьи ссылки
Установка Xen
Oписание параметров файлов виртуальных машин Xen
Xen. Или как приучить шindows быть второй на компе.
Проброс видеокарты в виртуальную машину
Xen_PCI_Passthrough
Паравиртуальные драйверы для Windows

Комментарии (29)

0
Sabalt - 14 Май, 2013 - 09:43
Изображение пользователя Sabalt.

fox4, спасибо за статью! Нужно будет попробовать. Ни разу не ставил Xen, всегда считал, что VirtualBox проще в использовании. Конечно, все зависит от поставленных задач. Мне не нужна высокая производительность в гостевой системе. Мне нужно загружаться в установленную винду (т.е. dualboot). С помощью xen это можно реализовать?

0
fox4 - 14 Май, 2013 - 10:03
Изображение пользователя fox4.

По идее да в файле конфигурации vm.cfg нужно указать примерно следующее
disk = [ 'phy:/dev/sdb,hdc,w', 'phy:/dev/cdrom,hdd:cdrom.r' ]
где /dev/sdb ваш раздел с виндой
определить раздел можно командой
sudo fdisk -l

0
Nemton - 14 Май, 2013 - 21:58
Изображение пользователя Nemton.

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

0
AlexBKost - 15 Май, 2013 - 12:48

Достаточно интересный и глубокий материал, достойный не просто плюса, а номинации на помещение в подшивку (не знаю как и кем это решается), хотя и мало кому пригодится в силу специфики оборудования.

ЗЫ: Когда-то у меня был руководитель, который, естественно, первым читал все входящие поступления – от служебных инструкций до статей в серьёзных журналах. И своей рукою расставлял недостающие знаки препинания, в основном запятые. Никто не понимал – зачем? А некоторые даже посмеивались над ним. Только что и я почувствовал себя на его месте.

0
fox4 - 15 Май, 2013 - 16:02
Изображение пользователя fox4.

Ну у технарей частенько проблемы со знанием орфографии и пунктуации. Да и прогресс сильно расслабляет - будет время поправлюсь. (Казнить нельзя, помиловать :-) ).
А на счёт специфичности оборудования - до 3 пункта статья подойдет многим если нет высоких требований к GPU видеокарта будет эмулироваться.

0
AlexBKost - 15 Май, 2013 - 17:00

Да нет, я не в претензии. Можно ничего не менять. Просто, кроме положительных эмоций, пережил и ранее неизведанное ощущение – решил поделиться.

0
balamutick - 16 Май, 2013 - 18:54
Изображение пользователя balamutick.

Так в сравнении с Виртуал боксом - летает ?

0
fox4 - 16 Май, 2013 - 21:58
Изображение пользователя fox4.

Если сильно завязан на CPU выигрыш несомненный пробросишь видеокарту разницы нет вообще в остальном вопросы решаемые но есть нюансы будут вопросты задавай.

0
Int64 - 12 Июнь, 2013 - 21:17

а блин, пытаюсь пробросить видеокарту, почему-то нифига не выходит, к олдной видеокарте цепляю один монитор, к другой второй монитор, только если не выставлять nomodeset при обычно буте вся картинка сплющивается, когда пытаюсь включить Xen почему-то диалоговое окно появляется на мониторе для гостевой ос, и выводится ошибка low graphic mode, выставляю nomodeset этот пунктик проходит, вроде начинает загружать убунту, но потом вылазит ошибка load fallback graphic devices [fail] или Fixing recursive fault but need reboot или init failsafe-x main process terminated with status 1. Кто знает как решить?

0
fox4 - 13 Июнь, 2013 - 15:26
Изображение пользователя fox4.

Аппаратную конфигурацию компа в студию пожалуйста...
И посмотрите в биосе у какой графической карты приоритет использования похоже у вас Dom0 пытается использовать сразу обе видеокарты и не может разобраться какую инициализировать первой а какую второй они у вас случайно не одинаковые ?

0
Гость - 4 Июль, 2013 - 19:18

Возможно ли имея один монитор и одну видяху (INTEL) настроить так что бы можно было просто переключаться между системами (горячими клавишами или как нибудь ещё)?

0
MaximChuvashev - 4 Июль, 2013 - 20:58

второй Х сервер, почти всему, вторая видяха, вторая видео карта (не 100%, что будет работать тут. Но попытаться стоит)

0
fox4 - 5 Июль, 2013 - 19:19
Изображение пользователя fox4.

второй Х сервер, почти всему, вторая видяха, вторая видео карта (не 100%, что будет работать тут. Но попытаться стоит)
MaximChuvashev пытаться не стоит поскольку работать не будет (уровень привилегий XEN и X сервера скажем так сильно отличаются) скорее инженеры в скором времени реализуют что то типа аппаратной эмуляции видеокарты но это все будет доступно только на новом железе (если вообще реализуют).

0
Гость - 5 Сентябрь, 2014 - 00:23

Не из любопытства спрашиваю. Можноли одну видюху прокинуть в первую ВМ ,вторую во вторую ВМ, а ксен оставить на встройке в проц или мать?

0
fox4 - 6 Сентябрь, 2014 - 19:43
Изображение пользователя fox4.

Ну в общем не вижу препятствий изолируйте обе прокидываемые видюхи (надеюсь обе Radeon ) создайте 2 файла конфигурации для 2 ВМ в одном пропишите одну видяху в другом другую и эксперементируйте должно получиться. И ещё всю ОЗУ память компа распределите между двумя ВМ и Xen-ом грамотно чтоб всем досталось иначе будут дикие тормоза.

0
fox4 - 5 Июль, 2013 - 18:18
Изображение пользователя fox4.

Если вы имеете ввиду использование одной графической карты со всеми "прибамбасами" 3D и прочее в обоих системах то это не возможно, по крайней мере сейчас, но для "гостевой" системы XEN эмулирует VGA карточку. (Статья до 3 пункта).

0
Гость - 30 Июль, 2014 - 15:45

Статья отличная! Но немного полазил по сайту интела, 4930к, 3930к, 4820к Технология виртуализации Intel® для направленного ввода/вывода (VT-d) ‡ = yes. Хотя мой 4700mq VT-d не поддерживает... А как хотелось бы завернуть ЮСБ 3.0 в ВМ. Всё равно автору респект!

0
fox4 - 31 Июль, 2014 - 12:41
Изображение пользователя fox4.

Спасибо. Ну так статье уже больше года. За это время Intel мог в своих процах поменять всё что угодно маркировку технологии и так далее. Так что да вы правы если нужен проброс обязательно надо смотреть на присутствие технологии VT-d.

0
alex286 - 5 Август, 2014 - 22:39
Изображение пользователя alex286.

Застрял...По моему что-то в питоне..

0
fox4 - 6 Август, 2014 - 10:03
Изображение пользователя fox4.

А это на каком этапе - Создание ВМ в virt-manager как я понимаю ?
вот ссылка там в конце статьи решение проблемы и в последующих комментариях вроде похожая ситуация обсуждалась правда язык забугорный.
Ну и версию питона у себя проверьте на всякий случай а то судя по логу 2.7 пытается использовать а сейчас вроде уже выше 3 версии гуляют.

0
DarkneSS - 6 Август, 2014 - 18:35
Изображение пользователя DarkneSS.

Версии 3 пока ещё гуляют только в умах энтузиастов. Мало питонья на него портировано.

0
fox4 - 6 Август, 2014 - 20:39
Изображение пользователя fox4.

Да и как вы объясните этот скрин? Уж я то точно не оголтелый питоноэнтузиаст!

З.Ы. Kubuntu 14.04 из не вошедшего в дистрибутив и устанавливавшегося дополнительно steam, vlc, google earth, skype, true crypt и что из этого могло подтянуть python 3.x по зависимостям ?

0
DarkneSS - 7 Август, 2014 - 06:50
Изображение пользователя DarkneSS.

Ничто из вами перечисленного, посколько всё стоит и у меня, а трёшку я подтягивал сам. Обратите внимание, что у вас установлена и двойка, на которой всё работает. Зачем дистростроители ставят из коробки бесполезный на данный момент питон3, вопрос не ко мне :)

0
fox4 - 7 Август, 2014 - 10:41
Изображение пользователя fox4.

Значит что то из дистрибутива его использует иначе какой смысл в lts-ом дистрибутиве (синоним стабильности) использовать недопиленный питон 3 :-)

0
DarkneSS - 10 Август, 2014 - 11:46
Изображение пользователя DarkneSS.

Он не недопиленный, просто на нём почти ничего нет. Пометьте для удаления и посмотрите, что использует. У меня — ничего.

0
fox4 - 10 Август, 2014 - 12:38
Изображение пользователя fox4.

Спасибо за совет но оставлю как есть. Верю в вашу правоту по поводу редкости использования 3 питона просто логика дистростроителей начинает беспокоить. Получается что после перехода 700 Мб рубежа они пихают в дистрибутив и нужное и ненужное.

+3
MacLeod - 10 Август, 2014 - 12:46
Изображение пользователя MacLeod.

Логика проста: "давай пихать, пора уже, может хоть зачешутся и начнут переводить свои г***оскрипты на тройку..." =)

0
fox4 - 10 Август, 2014 - 13:30
Изображение пользователя fox4.

:-)))

0
DarkneSS - 11 Август, 2014 - 06:54
Изображение пользователя DarkneSS.

Да, примерно так, жаль, на тулкитописателей это не действует.

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

CAPTCHA на основе изображений
Введите цифры