Windows Vista в Xen

Материал из Xgu.ru

Перейти к: навигация, поиск


Автор: Игорь Чубин
Короткий URL: xen/vista

На этой странице рассматривается процесс инсталляции и запуска виртуальной машины под управлением в MS Windows Vista внутри полностью виртуализированного домена Xen на машине с поддержкой процессором архитектурных расширений виртуализации (HVM). Отдельное внимание уделяется решению проблем с сетью внутри виртуальной машины.

Note-icon.gif

Для выполнения процедуры понадобится:

  • система с аппаратной поддержкой виртуализации (HVM);
  • в которой установлено минимум 2G ОЗУ;
  • и есть 10G свободного дискового пространства;
  • дистрибутив Windows Vista
  • и 30-60 минут свободного времени.

Содержание

[править] Подготовка хост-системы

Выполните подготовку хост-системы (домена 0 Xen) как описано на странице Инсталляция Xen или другим способом.

В ходе инсталляции Windows доступ к виртуальной машине будет осуществляться через VNC-сервер, встроенный в Xen. По умолчанию сервер привязан к интерфейсу loopback и доступен только по адресу 127.0.0.1.

Если необходимо работать с VNC-консолью с другой машины, можно пойти двумя путями:

  1. (более безопасный) Перенести порт VNC на неё с помощью SSH (см. подробнее на странице SSH);
  2. (более простой) Разрешить доступ к VNC-консоли с других машин.

Для этого нужно отредактировать файл /etc/xen/xend-config.sxp, в котором найти и изменить параметры:

(vnc-listen '0.0.0.0')

и

(vnc-password 'PASSWORD')

Если последний параметр не установить, доступ по VNC будет разрешён без пароля.


[править] Проверка на поддержку VMX-расширений

Хост-система должна поддерживать VMX-расширения процессора (см. Аппаратные требования Xen).


Убедиться в наличии поддержки VMX можно так.

Для процессоров Intel:

# xm dmesg | grep VMX
(XEN) VMXON is done
(XEN) VMXON is done
...
(XEN) VMXON is done
(XEN) VMXON is done
(XEN) VMXON is done
#

Если используется процессор AMD:

# xm dmesg | grep -i svm
(XEN) AMD SVM Extension is enabled for cpu 0.
(XEN) AMD SVM Extension is enabled for cpu 1.

В общем случае:

# xm info | grep caps
hw_caps                : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
xen_caps               : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p

hvm-3.0-x86_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.

Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и, если вы этого еще не сделали, задействуйте поддержку VT.

Возможно, BIOS вашей материнской платы искуственно отключает виртуализацию. В этом случае нужно обновить или исправить BIOS (см. например GA-M59SLI-S4).

[править] Подготовка образа инсталляционного диска

Можно использовать непосредственно диск с инсталлятором Windows, а можно предварительно создать с него образ.

Образ создаётся традиционным путём:

%# cd /Volumes/ISO
%# cat /dev/hdd > windows-vista.iso
%# ls -l windows-vista.iso 
-rw-r--r-- 1 igor igor 4681433088 2007-09-23 12:07 windows-vista.iso

[править] Подготовка конфигурационного файла домена Xen

Необходимо создать конфигурационный файл виртуальной машины, в которой будет работать Vista.

Можно использовать распространяемый с дистрибутивом Xen пример и доработать его, а можно воспользоваться этим примером:

$ grep -v ^# /etc/xen/windows-vista-hvm | grep -vx ''
kernel = "hvmloader"
builder='hvm'
memory = 1024
shadow_memory = 8
name = "windows-vista-hvm"
vif = [ 'type=ioemu, bridge=service0, mac=00:16:3e:03:00:c3' ]
disk = [ 'file:/xen/images/windows-vista-hvm.img,hda,w', 'file:/Volumes/ISO/windows-vista.iso,hdc:cdrom,r' ]
device_model = 'qemu-dm'
boot="d"
sdl=0
vnc=1
vncpasswd=''
stdvga=0
serial='pty'
usb=1

Параметры, использованные в этом конфигурационном файле (с полным списком можно ознакомиться в «Руководстве пользователя Xen»):

  • kernel - VMX firmware loader, /usr/lib/xen/boot/vmxloader
  • builder - Функции сборки домена. VMX-домены используют vmx builder
  • vif - Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных("нормальных", с модифицированным ядром) доменах.
  • disk - Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа:
     phy:UNAME,ioemu:DEV,MODE,

где UNAME - имя устройства, DEV - имя диска, как его видит домен и MODE принимает значения r для read-only и w для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах.

Если используется образ диска, то строка принимает вид:

     file:FILEPATH,ioemu:DEV,MODE

Если используется больше одного диска, то они разделяются запятой. Например:

     disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w']
  • boot - Загрузка с floppy (a), hard disk (c) или CD-ROM (d).
  • device_model - Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже.
  • sdl - Задействует библиотеку SDL для отображения графики, по умолчанию равно "0" (отключено)
  • vnc - Задействует библиотеку VNC для отображения графики, по умолчанию равно "0" (отключено)
  • serial - Перенаправление последовательных портов гостевого домена на реальное устройство.
  • usb - Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать.
  • usbdevice - Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB:
    usbdevice='mouse'
  • localtime - Установка локального времени. По умолчанию равно "0", т.е UTC
  • enable-audio - Поддержка звука. Находится в разработке.
  • full-screen - Поддержка полноэкранного режима. Находится в разработке.
  • nographic - Другой способ перенаправить вывод на последовательный порт. В этом случае опции 'sdl' или 'vnc' не работают. Использование данного режима не рекомендуется.

[править] Подготовка диска для виртуальной машины

Виртуальная машина под управлением Windows Vista требует обязательного использования жёсткого диска.

В качестве виртуального жёсткого диска можно использовать:

  • файл в хост-системе;
  • блочное устройство в хост-системе, которым может быть:
    • физический жёсткий диски или его раздел;
    • том LVM;
    • сетевое или другое хранилище, доступное в виде блочного устройства.

В случае если будет использоваться файл, его нужно создать и указать в конфигурационном файле виртуальной машины в качестве диска.

%$ grep disk /etc/xen/windows-vista-hvm | grep -v ^# 
disk = [ 'file:/xen/images/windows-vista-hvm.img,hda,w', 'file:/Volumes/ISO/windows-vista.iso,hdc:cdrom,r' ]

Создание файла проще всего выполнить с помощью команды dd. Здесь создаётся разреженный файл размером 10G (минимальный размер диска при инсталляции Vista в конфигурации по умолчанию):

%$ sudo dd if=/dev/zero of=/xen/images/windows-vista-hvm.img bs=1k seek=10240k count=1
1+0 записей считано
1+0 записей написано
 скопировано 1024 байта (1,0 kB), 4,6e-05 секунд, 22,3 MB/s

%$ ls -l /xen/images/windows-vista-hvm.img 
-rw-r--r-- 1 root root 10737419264 2007-09-23 12:17 /xen/images/windows-vista-hvm.img

[править] Первый запуск

После того как

  1. Xen в домене 0 установлен и настроен;
  2. Создан образ инсталляционного диска Windows Vista (или доступен сам диск);
  3. Создан файл для диска виртуальной машины (или доступно нечто вместо него);
  4. Создан конфигурационный файл новой виртуальной машины

виртуальную машину можно запускать.

Запуск выполняется с помощью команды:

%$ sudo xm create windows-vista-hvm
Using config file "./windows-vista-hvm".
Started domain windows-vista-hvm

Если старт прошёл успешно, новый домен появится в списке доменов, работающих в хост-системе:

%$ sudo xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0  1000     1     r-----    706.4
windows-vista-hvm                          7  1032     1     ------      0.5

После того как виртуальная машина запущена, можно подключиться к её экрану с помощью VNC.

Используем vncviewer (в Debian GNU/Linux он находится в пакете xvncviewer):

$ vncviewer 127.0.0.1:0
VNC viewer version 3.3.7 - built Dec 30 2006 12:48:54
Copyright (C) 2002-2003 RealVNC Ltd.
Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
See http://www.realvnc.com for information on VNC.
VNC server supports protocol version 3.3 (viewer 3.3)
No authentication needed
Desktop name "HVMXEN-windows-vista-hvm"
Connected to VNC server, using protocol version 3.3
VNC server default format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap and visual, TrueColor, depth 24.
Got 256 exact BGR233 colours out of 256
Using BGR233 pixel format:
  8 bits per pixel.
  True colour: max red 7 green 7 blue 3, shift red 0 green 3 blue 6
Using shared memory PutImage
Throughput 20000 kbit/s - changing to Hextile
Throughput 20000 kbit/s - changing from 8bit
Using viewer's native pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0

Программа покажет экран инсталлятора операционной системы.

[править] Инсталляция Vista

Инсталляция выполняется традиционно. В ходе инсталляции система будет несколько раз перезагружаться, при этом подключение по VNC будет теряться. Для его восстановления нужно вызывать vncviewer повторно.

Vista1.jpg

Vista2.jpg

Vista3.jpg

Vista4.jpg

Vista5.jpg

Vista6.jpg

Система успешно установлена.

[править] Изменение порядка загрузки

После того как система была проинсталлирована, имеет смысл перейти на загрузку виртуальной машины с диска (не с CD). Для этого нужно поменять значение параметра boot в конфигурационном файле домена с d на c.

%$ grep ^boot /etc/xen/windows-vista-hvm 
boot="c"

[править] Инсталляция сети

Неизвестно по какой причине, но Windows Vista не работает корректно с сетевым адаптером RTL8139, который эмулируется в HVM-доменах Xen по умолчанию: сетевое устройство обнаруживается и драйвер устанавливается, но сеть не работает.

Самое простое решение проблемы — перейти на эмуляцию сетевого устройства NE2000. С ним у Windows Vista никаких проблем не замечено [1] Шаблон:битая ссылка.

Для этого в конфигурационном файле домена нужно изменить строку vif, добавить в неё описание модели сетевой карты model=ne2k_pci:

vif = [ 'type=ioemu, bridge=service0, mac=00:16:3e:03:00:c3, model=ne2k_pci' ]

Правда, драйвер для этой карты по умолчанию отсутствует в поставке Vista, и его необходимо установить дополнительно.

Для того чтобы передать драйвер Windows Vista, в которой пока что сеть не работает, нужно подготовить ISO-образ с драйвером и загрузить его в виртуальную машину.

ISO-образ нужно подключить к работающей машине (Ctrl-Alt-2) или указать в параметре disk машины.

$ grep ^disk /etc/xen/windows-vista-hvm 
disk = [ 'file:/xen/images/windows-vista-hvm.img,hda,w', 'file:/Volumes/ISO/ne2k-drivercd.iso,hdc:cdrom,r' ]

Диск содержит ZIP-архив. Его необходимо распаковать, и инициировать инсталляцию драйвера стандартным способом.

Vista7.jpg

После того как драйвер установлен, сеть начинает работать.

Это можно проверить с помощью команд ipconfig и ping:

Vista8.jpg

Или с помощью других приложений, которые используют сеть:

Vista9.jpg

[править] Запуск и работа

Windows Vista проинсталлирована и готова к работе.

Если у вас при загрузке после установки вываливается проблема с загрузчиком и система не может загрузиться, то есть способ всё поправить: Снова загрузиться с диска D (CD-ROM) и выбрать восстановление системы. Затем выбрать командную строку и выполнить bootrec.exe /fixmbr и bootrec.exe /fixboot

Всё, снова изменить загрузку на диск C и система загрузится без проблем.

JR.


[править] Дополнительная информация

Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure