xg-scale

annotate windowsxp.tex @ 6:4a790b55d005

Обновлен раздел по Windows XP. Исправлен стиль, добавлены некоторые уточнения по конфигурационному файлу
author Igor Chubin <igor@chub.in>
date Wed Jul 09 08:50:18 2008 +0300 (2008-07-09)
parents 4730a0d07d88
children
rev   line source
igor@6 1 \section{Windows в Xen}
igor@0 2
igor@6 3 Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять Windows в паравиртуальном режиме (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем.
igor@0 4
igor@6 5 \section{Предварительные требования}
igor@6 6 В первую очередь, для установки Windows XP, как и любой другой не портированной на Xen системы,
igor@6 7 необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD).
igor@6 8 Информацию о поддержке процессорами аппаратной виртуализации можно посмотреть на странице Аппаратные требования Xen.
igor@6 9 Поддержка аппаратной виртуализации должна быть и у Xen.
igor@0 10
igor@6 11 \subsection{Поддержка VMX}
igor@6 12 Убедиться в наличии поддержки VMX можно так.
igor@0 13
igor@6 14 Для процессоров Intel:
igor@0 15 \begin{verbatim}
igor@0 16 # xm dmesg | grep VMX
igor@0 17 (XEN) VMXON is done
igor@0 18 (XEN) VMXON is done
igor@0 19 ...
igor@0 20 \end{verbatim}
igor@0 21
igor@0 22 Если используется процессор AMD:
igor@0 23 \begin{verbatim}
igor@0 24 # xm dmesg | grep -i svm
igor@0 25 (XEN) AMD SVM Extension is enabled for cpu 0.
igor@0 26 (XEN) AMD SVM Extension is enabled for cpu 1.
igor@0 27 \end{verbatim}
igor@0 28
igor@0 29 В общем случае:
igor@0 30 \begin{verbatim}
igor@0 31 # xm info | grep caps
igor@0 32 hw_caps : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
igor@0 33 xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
igor@0 34 \end{verbatim}
igor@0 35
igor@0 36 hvm-3.0-x86\_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.
igor@0 37
igor@6 38 Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и,
igor@6 39 если вы этого ещё не сделали, задействуйте поддержку VT.
igor@0 40
igor@6 41 Возможно, BIOS вашей материнской платы искусственно отключает виртуализацию.
igor@6 42 В этом случае нужно обновить или исправить BIOS (см. например GA-M59SLI-S4)
igor@6 43
igor@6 44 \section{Конфигурационный файл домена}
igor@6 45 В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами (Hardware Virtualization Mode).
igor@6 46 Для облегчения процесса настройки существует пример конфигурационного файла такого домена
igor@6 47 (при установке из исходников он называется \texttt{/etc/xen/xmexample.hvm}; при установке из пакетов путь может быть другим).
igor@6 48 Множество параметров, использующихся в этом файле,
igor@6 49 шире чем в конфигурационном файле паравиртуального домена:
igor@6 50 \begin{itemize}
igor@6 51 \item \textbf{kernel} — VMX firmware loader, для HVM-домена обычно \texttt{hvmloader}
igor@6 52 \item \textbf{builder} — Тип домена. Для HVM-домена обязательно \texttt{hvm}
igor@6 53 \item \textbf{acpi} — Поддержка ACPI внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено)
igor@6 54 \item \textbf{apic} — Поддержка APIC внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено)
igor@6 55 \item \textbf{pae} — Поддержка PAE внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено)
igor@6 56 \item \textbf{vif} — Описание сетевых интерфейсов. Представляет собой список строк, каждая из которых описывает один интерфейс. В каждой строке, соответствующей интерфейсу, обязательно должен присутствовать компонент \texttt{bridge}, указывающий к какому мосту подключён интерфейс. Опционально может указываться MAC-адрес интерфейса (по умолчанию генерируется случайным образом внутри диапазона, выделенного Xen Source). Здесь же может задаваться модель эмулируемой сетевой карты (параметр \texttt{model}).
igor@6 57 \item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа:
igor@6 58 \end{itemize}
igor@6 59 \begin{verbatim}
igor@6 60 phy:UNAME,DEV,MODE
igor@6 61 \end{verbatim}
igor@6 62 где \textbf{UNAME} -- имя устройства, \textbf{DEV} -- имя диска, как его видит домен и \textbf{MODE} принимает значения \textbf{r} для read-only и \textbf{w} для read-write. Раньше нужно было ещё указывать параметр \texttt{ioemu}, сейчас это уже не обязательно \url{http://lists.xensource.com/archives/html/xen-devel/2006-08/msg00369.html}.
igor@6 63
igor@6 64 Если используется образ диска, находящийся в файле, то строка принимает вид:
igor@6 65 \begin{verbatim}
igor@6 66 file:FILEPATH,DEV,MODE
igor@6 67 \end{verbatim}
igor@6 68
igor@6 69 Если используется больше одного диска, то они разделяются запятой. Например:
igor@6 70 \begin{verbatim}
igor@6 71 disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.img,hdb,w']
igor@6 72 \end{verbatim}
igor@6 73
igor@6 74 Если какой-то из образов является образом компакт-диска, и предполагается, что в виртуальной машине должен эмулироваться привод CD-ROM, нужно использовать суффикс \texttt{:cdrom} в описании диска:
igor@6 75 \begin{verbatim}
igor@6 76 disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.iso,hdc:cdrom,w']
igor@6 77 \end{verbatim}
igor@6 78
igor@6 79 CD-ROM\rq{}ов может быть несколько.
igor@6 80 \begin{itemize}
igor@6 81 \item \textbf{boot} — Загрузка с floppy (a), hard disk (c) или CD-ROM (d).
igor@6 82 \item \textbf{device\_model} — Инструмент эмуляции устройств для HVM-домена. Обычно \texttt{qemu-dm}
igor@6 83 \item \textbf{sdl} — Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
igor@6 84 \item \textbf{vnc} — Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
igor@6 85 \end{itemize}
igor@6 86 Пользователь может использовать \textbf{vncviewer} для подключения к домену. Например:
igor@6 87 \begin{verbatim}
igor@6 88 $ vncviewer domain0_IP_address:0
igor@6 89 \end{verbatim}
igor@6 90
igor@6 91 \begin{itemize}
igor@6 92 \item \textbf{vncconsole} — Нужно ли автоматически запускать \textbf{vncviewer} при старте домена. Имеет смысла только если \texttt{vnc=1}. По умолчанию равно 0.
igor@6 93 \item \textbf{serial} — Перенаправление последовательных портов гостевого домена на файл устройства в домене 0.
igor@6 94 \item \textbf{usb} — Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать.
igor@6 95 \item \textbf{usbdevice} — Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB:
igor@6 96 \end{itemize}
igor@6 97
igor@6 98 \begin{verbatim}
igor@6 99 usbdevice='mouse'
igor@6 100 \end{verbatim}
igor@6 101
igor@6 102 \begin{itemize}
igor@6 103 \item \textbf{localtime} — Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC
igor@6 104 \item \textbf{soundhw} — Тип звукового устройства для эмуляции. Обычно \texttt{sb16}
igor@6 105 \item \textbf{full-screen} — Поддержка полноэкранного режима.
igor@6 106 \item \textbf{nographic} — Не использовать графический интерфейс, работать только через консоль. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают.
igor@6 107 \end{itemize}
igor@6 108
igor@6 109 \section{Создание дискового раздела для гостевой системы}
igor@0 110 Создаем образ диска Xen:
igor@0 111
igor@0 112 \begin{verbatim}
igor@6 113 # mkdir -p /root/xenimages
igor@0 114 # cd /root/xenimages
igor@0 115 # dd if=/dev/zero of=WS128.img bs=1M count=4096
igor@0 116 \end{verbatim}
igor@0 117
igor@6 118 Также необходимо создать ISO-образ системы Windows XP, который мы собираемся использовать при инсталляции. В данном случае, разместим его в каталоге \texttt{/root/xenimages}.
igor@0 119
igor@0 120 На основе эталонного файла конфигурации создадим свой собственный:
igor@0 121
igor@0 122 \begin{verbatim}
igor@6 123 # cat /etc/xen/winxp
igor@6 124 kernel = "hvmloader"
igor@6 125 builder='hvm'
igor@6 126 memory = 512
igor@6 127 name = "winxp"
igor@6 128 vcpus=1
igor@6 129 pae=0
igor@6 130 acpi=0
igor@6 131 apic=0
igor@6 132 cpus = ""
igor@6 133 vif = [ 'bridge=xenbr0' ]
igor@6 134 disk = [
igor@6 135 'file:/root/xenimages/winXP128.img,hda,w',
igor@6 136 'file:/root/xenimages/en_winxp_pro_with_sp2.iso,hdc:cdrom,r'
igor@6 137 ]
igor@6 138 on_poweroff = 'destroy'
igor@6 139 on_reboot = 'destroy'
igor@6 140 on_crash = 'destroy'
igor@6 141 device_model = 'qemu-dm'
igor@6 142 boot='d'
igor@6 143 sdl=0
igor@6 144 vnc=1
igor@6 145 vncconsole=0
igor@6 146 stdvga=0
igor@6 147 serial='pty'
igor@0 148 \end{verbatim}
igor@0 149
igor@6 150 Обратите внимание на то, что указан параметр \texttt{boot=\rq{}d\rq{}}, что необходимо для установки.
igor@6 151 Впоследствии его необходимо заменить на \texttt{boot=\rq{}c\rq{}}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается.
igor@0 152
igor@6 153 \section{Запуск домена и инсталляция гостевой системы}
igor@6 154 Начинаем установку и подсоединяемся к домену с помощью VNC. Для этого сразу после создания домена запускаем \textbf{vncviewer}.
igor@0 155
igor@0 156 \begin{verbatim}
igor@6 157 # xm create /etc/xen/winxp
igor@6 158 Using config file "/etc/xen/winxp".
igor@6 159 Started domain Winxp
igor@6 160 % vncviewer :0
igor@0 161 \end{verbatim}
igor@0 162
igor@0 163 С установкой могут быть проблемы. Можно попробовать решить проблему так: на экране установки, предлагающем нажать F6 для установки SCSI или RAID контроллера, надо нажать F5 и выбрать пункт \texttt{Standard PC} из предложенного меню.
igor@0 164
igor@0 165 \begin{verbatim}
igor@0 166 ACPI Multiprocessor PC
igor@0 167 ACPI Uniprocessor PC
igor@0 168 Advanced Configuration and Power Interface (ACPI) PC
igor@0 169 Compaq SystemPro Multiprocessor or 100% Compatible PC
igor@0 170 MPS Uniprocessor PC
igor@0 171 MPS Multiprocessor PC
igor@0 172 Standard PC
igor@0 173 Standard PC with C-Step i486
igor@0 174 Other
igor@0 175 \end{verbatim}
igor@0 176
igor@6 177 После того как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. В соответствии с файлом конфигурации,
igor@6 178 виртуальная машина при перезагрузке будет завершена, и нам предоставится возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}},
igor@6 179 после чего виртуальную машину можно будет запускать вновь и соединяться с её консолью:
igor@0 180
igor@0 181 \begin{verbatim}
igor@6 182 # xm create /etc/xen/winxp
igor@6 183 Using config file "/etc/xen/winxp".
igor@6 184 Started domain winxp
igor@6 185 % vncviewer :0
igor@0 186 \end{verbatim}
igor@0 187
igor@0 188
igor@6 189 \subsection{Паравиртуальные драйверы}
igor@0 190
igor@6 191 Аппаратная виртуализация берёт на себя основные трудности по переключению контекстов гостевых операционных систем и хост-системы, но она ничего (пока что) не делает для ускорения ввода/вывода. Как только задача требует ввода/вывода любая система виртуализации (но не паравиртуализации!) существенно замедляет свою работу.
igor@0 192
igor@6 193 Одна из главных причин разработки и использования паравиртуальных драйверов — возможность существенного повышения производительности работы гостевых систем, работающих в режиме полной виртуализации.
igor@6 194
igor@6 195 Во второй половине 2007 года появились первая реализация свободных паравиртуальных драйверов под Windows, сделанная Джеймсом Харпером (James Harper).
igor@6 196
igor@6 197 В конце 2007 года вышла версия 0.5.0 драйверов, которые можно рассматривать как экспериментальные. Их можно ставить в виртуальную машину и играться с ними, но их пока что ни в коем случае не стоит использовать на производственных системах.
igor@6 198
igor@6 199 В настоящий момент свободные паравиртуальные драйверы Xen для Windows находятся в сыром состоянии и могут использоваться исключительно в экспериментальных целях.
igor@6 200
igor@6 201 Последняя известная (на момент правки) версия свободных паравиртуальных драйверов — 0.9.10.
igor@6 202
igor@6 203 \subsection{Проброс PCI-устройств внутрь домена Windows}
igor@6 204
igor@6 205 Начиная с Xen 3.2.0 при наличии в системе аппаратной поддерживи виртуализации ввода/вывода
igor@6 206 Intel VT-d (не путать с виртуализацией процессора VT-x!)
igor@6 207 существует возможность выполнять монопольное выделение PCI-устройства
igor@6 208 домену Xen.
igor@6 209 Раньше это было возможно для паравиртуальных доменов, но было невозможно для
igor@6 210 HVM-доменов, а именно в таком исполняется Windows.
igor@6 211
igor@6 212 При выполнении проброс PCI-устройства Windows работает с ним напрямую,
igor@6 213 на полной скорости, и использую собственные драйвера.
igor@6 214 Это позволяет обойти проблемы с производительностью, которые есть при эмуляции устройств,
igor@6 215 а также задействовать все возможности устройства, о которых знает драйвер.
igor@6 216
igor@6 217 При выделении устройства гостевому оно становится
igor@6 218 недоступным для домена 0 и используется гостевым доменом монопольно.
igor@6 219
igor@6 220 Графический адаптер является очень специфическим устройством,
igor@6 221 монопольное выделение которого пока не поддерживается.
igor@6 222 Это означает, что запускать Counter Strike внутри гостевого
igor@6 223 домена Xen и при этом напрямую использовать графическую карту
igor@6 224 пока не получится.
igor@0 225
igor@0 226 \subsection{Вопросы и ответы}
igor@6 227 \textbf{Вопрос: Виртуальная машина начала загружаться с образа компакт-диска или жёсткого диска. Спустя некоторое время её экран стал чёрным. Потреблённое процессорное время увеличивается, значит виртуальная машина работает. Но на экране нет никакой реакции. Что делать?}
igor@0 228
igor@6 229 Да, скорее всего виртуальная машина нормально работает.
igor@6 230 Подключение к экрану виртуальной машины выполняется через VNC,
igor@6 231 при смене разрешения экрана (а при загрузке Windows
igor@6 232 именно это и происходит) нужно переподключаться,
igor@6 233 то есть закрывать VNC-клиент, а потом запускать его вновь.
igor@0 234
igor@6 235 \textbf{Вопрос: не успел нажать никакую кнопку, когда было соответствующее приглашение при загрузке с компакт-диска, и виртуальная машина попыталась загрузиться с пустого жёсткого диска. А как вообще указать откуда именно будет выполняться загрузка виртуальной машины?}
igor@0 236
igor@6 237 Откуда именно будет загружаться виртуальная машина
igor@6 238 определяется её конфигурационным файлом, а точнее параметром
igor@6 239 \texttt{boot}, указанном в нём.
igor@0 240 привода CDROM.
igor@0 241
igor@0 242 \begin{itemize}
igor@6 243 \item \texttt{boot=\rq{}d\rq{}} — загружаться с CDROM\rq{}а (мнемоническое правило — «с диска D:» )
igor@6 244 \item \texttt{boot=\rq{}c\rq{}} — загружаться с диска (мнемоническое правило — «с диска C:» )
igor@0 245 \end{itemize}
igor@0 246
igor@6 247 \textbf{Вопрос: должен ли работать звук в виртуальной машине при подключении через RDP?}
igor@0 248
igor@6 249 Звук должен работать и работает.
igor@6 250 Звук действительно можно прослушать только при подключении при помощи \textbf{rdesktop} по протоколу RDP.
igor@6 251 Вообще с системой работать удобнее через RDP, чем через служебное VNC-подключение.
igor@0 252
igor@6 253 При заходе через \textbf{rdesktop}, для того чтобы
igor@0 254 звук проигрывался локально, используйте ключ \textit{-rsound}:
igor@0 255 \begin{verbatim}
igor@0 256 rdesktop -rsound 192.168.1.1
igor@0 257 \end{verbatim}
igor@0 258
igor@6 259 \textbf{Вопрос: мышь внутри виртуальной машины и точка-курсор соответствующая указателю VNC-клиента разбегаются. При использовании RDP-подключения такого нет. Почему?}
igor@0 260
igor@6 261 Расхождение одной и второй мыши связано с тем,
igor@6 262 что \textbf{qemu-dm} эмулирует мышь, устройство относительно позиционирования,
igor@6 263 на основе информации полученной от VNC-подключения, устройства абсолютного позиционирования.
igor@6 264 Эмуляция выполняется с допущениями, поэтому точного совпадения курсоров нет.
igor@6 265
igor@6 266 VNC-подключение имеет множество других ограничений в сравнении с RDP,
igor@6 267 и его стоит рассматривать как аварийный вариант.
igor@6 268 Если возможности использовать RDP-подключение нет, стоит рассмотреть хотя бы возможность
igor@6 269 использования полноценного VNC-сервера внутри виртуальной машины.
igor@6 270
igor@6 271 Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel,
igor@6 272 или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen.
igor@0 273 Иначе у вас будет два курсора, одному из которых будет соответствовать ваша реальная мышь, а вторым виртуальная.
igor@0 274
igor@6 275 \textbf{Вопрос: Как поменять образ компакт-диска внутри виртуальной машины без её перезапуска?}
igor@0 276
igor@6 277 Есть два метода. Один для домашнего использования (он является небезопасным и по умолчанию в новых версиях Xen блокируется; чтобы использовать, его надо явно разрешать)
igor@6 278 и второй — промышленный.
igor@0 279
igor@6 280 Первый способ.
igor@6 281 В VNC-окне нажать ctr-alt-2, что переключит вас на консоль \textbf{qemu}.
igor@6 282 Дальше использовать \textbf{eject} и прочие команды для смены диска.
igor@6 283 После того как образ заменён, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы.
igor@0 284
igor@6 285 По умолчанию в новых версиях Xen эта возможность отключена.
igor@6 286 Для того чтобы её включить, нужно указать в конфигурационном
igor@6 287 файле домена
igor@6 288
igor@6 289 \begin{verbatim}
igor@6 290 monitor=1
igor@6 291 \end{verbatim}
igor@6 292
igor@6 293 (однако это считается небезопасным, см. ниже).
igor@6 294
igor@6 295 Второй: использовать \textbf{xm} \texttt{block-attach}, \textbf{xm} \texttt{block-detach}
igor@0 296 (подробнее: Xen-block-attach).
igor@0 297
igor@6 298 Второй метод намного более правильный и более безопасный (первый является небезопасным, поскольку из консоли \textbf{qemu} можно сделать с доменом всё что угодно,
igor@6 299 и, естественно, что это абсолютно не зависит от того, под каким пользователем вы вошли в гостевой домен).
igor@6 300 Кроме того, второй метод позволяет менять не только компакт-диски, но и жёсткие дискаи и сетевые карты
igor@6 301 (это касается PV-доменов, у HVM-доменов этот метод будет работать только при использовании паравиртуальных драйверов).
igor@0 302
igor@6 303 \textbf{Вопрос: Можно ли запускать HVM-домены на серверах с ОЗУ более 4 GB? В системе х86\_64 с 4GB ядро зависает с сообщением:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3GB — нормально.}
igor@0 304
igor@0 305 Это нормально.
igor@0 306 Точнее, это не совсем нормально, но это возможно.
igor@0 307
igor@0 308 Можно попробовать следующие решения:
igor@0 309
igor@0 310 \begin{enumerate}
igor@6 311 \item Использовать параметр ядра \texttt{agp=off};
igor@6 312 \item Добавить модуль intel\_agp в чёрный список незагружаемых модулей;
igor@6 313 \item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста;
igor@6 314 \item Использовать AMD.
igor@0 315 \end{enumerate}
igor@0 316
igor@6 317 \textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen выделить не получается. Поддержка PAE включена.}
igor@0 318
igor@6 319 Вероятно, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне).
igor@6 320 Скорее всего, проблема связана с багом \#971, из-за которого действительно нельзя было увидеть больше 4G памяти в HVM-домене.
igor@6 321 Если так, то он уже давно исправлен и этой проблемы быть не должно.
igor@0 322
igor@0 323 Проверьте, что у вас:
igor@0 324 \begin{enumerate}
igor@0 325 \item Если в HVM-домене запускается Linux, ядро под которым запускается HVM-домен, имеет поддержку PAE. (это HVM, поэтому может работать и ядро без PAE на хосте с PAE, но конечно видеть >4G оно при этом не будет)
igor@0 326 \item Если в HVM-домене запускается Windows, в конфигурации загрузчика (boot.ini) присутствует ключ /PAE
igor@0 327 \end{enumerate}
igor@0 328
igor@6 329 \textbf{Вопрос: как передать Windows-системе, запущенной внутри домена Xen, флоппи-диск, если есть его образ?}
igor@0 330
igor@6 331 Используйте параметр \texttt{fda} в конфигурационном файле.
igor@6 332
igor@6 333 \begin{verbatim}
igor@6 334 fda='/iso/winxp.img'
igor@6 335 \end{verbatim}
igor@6 336
igor@6 337 \section{Дополнительная информация}
igor@6 338 \subsection{Описание процесса запуска Windows в домене XenU}
igor@0 339 \begin{itemize}
igor@6 340 \item \htmladdnormallinkfoot{Инсталляция Windows XP в HVM-домене Xen}{http://xgu.ru/wiki/xen/winxp} (рус.)
igor@0 341 \end{itemize}
igor@0 342