xg-scale

view windowsxp.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children 4a790b55d005
line source
1 \section{Windows XP в Xen}
4 Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять \textit{Windows в паравиртуальном режиме} (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем.
5 Подробности на странице \htmladdnormallinkfoot{Windows в паравиртуальном домене Xen}{http://xgu.ru/wiki/Paravirtualized\_Windows}.
7 \subsection{Предварительные требования}
8 В первую очередь, для установки Windows XP, как и любой другой системы с закрытым кодом, необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). Таблицу поддержки аппаратной виртуализации процессорами можно найти \htmladdnormallinkfoot{здесь}{http://xgu.ru/wiki/xen/hw}.
10 Поддержка аппаратной виртуализации должна быть и у Xen.
11 При сборке из исходных текстов понадобится установить в систему:
12 \begin{itemize}
13 \item \textbf{dev86} -- Ассемблер и компоновщик для реального режима 80x86. Этот пакет необходим для сборки кода BIOS, запускаемого в (виртуальном) реальном режиме. Если пакет dev86 недоступен для x86\_64, то можно использовать i386 версию.
14 \item \textbf{LibVNCServer} -- Немодифицируемый VGA дисплей, клавиатуру и мышь можно виртуализировать с помощью библиотеки vncserver.
15 \item \textbf{SDL-devel}, \textbf{SDL} -- Если пакеты SDL и SDL-devel не были установлены по умолчанию, то взять их можно из системы портов или скомпилировав из исходных текстов.
16 \end{itemize}
18 \subsubsection{Замечание для пользователей Debian}
19 При выполнении вышеуказанной процедуры на
20 Debian GNU/Linux необходимо учесть, что
21 пакет \textbf{dev86} в Debian разбит на два пакета -- \textbf{bin86} и \textbf{bcc} -- и перед компиляцией Xen из архива исходных текстов
22 должны быть установлены оба эти пакета (\htmladdnormallinkfoot{подробнее}{http://lists.xensource.com/archives/html/xen-users/2006-02/msg00207.html}).
24 \begin{verbatim}
25 $ apt-cache show bin86 bcc
26 Package: bin86
27 ...
28 Description: 16-bit x86 assembler and loader
29 This is the as86 and ld86 distribution written by Bruce Evans.
30 It's a complete 8086 assembler and loader which can make 32-bit
31 code for the 386+ processors (under Linux it's used only to create
32 the 16-bit bootsector and setup binaries).
34 Package: bcc
35 ...
36 Description: 16-bit x86 C compiler
37 This is a C-compiler for 8086 cpus which is important for the
38 development of boot loaders or BIOS related 8086 code.
40 It is possible to run 8086 code under i386 Linux using an emulator,
41 `elksemu', also included in this package.
42 \end{verbatim}
44 \subsection{Конфигурационный файл домена}
45 В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами.
46 Для облегчения процесса конфигурирования такого домена служит образцово-показательный конфигурационный файл \texttt{/etc/xen/xmexample.hvm} (путь может отличаться).
47 В нём помимо опций использующихся в паравиртуальных доменах
48 есть и сугубо специфические:
49 \begin{itemize}
50 \item \textbf{kernel} -- VMX firmware loader, /usr/lib/xen/boot/vmxloader
51 \item \textbf{builder} -- Функции сборки домена. VMX-домены используют vmx builder
52 \item \textbf{acpi} -- Задействует ACPI VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
53 \item \textbf{apic} -- Задействует APIC VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
54 \item \textbf{pae} -- Задействует PAE VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
55 \item \textbf{vif} -- Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных(\dq{}нормальных\dq{}, с модифицированным ядром) доменах.
56 \item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа:
57 \end{itemize}
59 \begin{verbatim}
60 phy:UNAME,ioemu:DEV,MODE,
61 \end{verbatim}
63 где \textbf{UNAME} -- имя устройства, \textbf{DEV} -- имя диска, как его видит домен и \textbf{MODE} принимает значения \textbf{r} для read-only и \textbf{w} для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах.
65 Если используется образ диска, то строка принимает вид:
67 \begin{verbatim}
68 file:FILEPATH,ioemu:DEV,MODE
69 \end{verbatim}
71 Если используется больше одного диска, то они разделяются запятой. Например:
73 \begin{verbatim}
74 disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w']
75 \end{verbatim}
77 \begin{itemize}
78 \item \textbf{cdrom} -- Образ CD-ROM. По умолчанию, для Domain0 это значение равно /dev/cdrom. Внутри VMX-домена CD-ROM будет виден как /dev/hdc.
79 \item \textbf{boot} -- Загрузка с floppy (a), hard disk (c) или CD-ROM (d).
80 \item \textbf{device\_model} -- Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже.
81 \item \textbf{sdl} -- Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
82 \item \textbf{vnc} -- Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
83 \item \textbf{vncviewer} -- Если vnc=1 и vncviewer=0, пользователь может использовать vncviewer для подключения к VMX-домену. Например:
84 \end{itemize}
86 \begin{verbatim}
87 $ vncviewer domain0_IP_address:VMX_domain_id
88 \end{verbatim}
90 \begin{itemize}
91 \item \textbf{ne2000} -- Задействует режим совместимости ne2000, по умолчанию равно \dq{}0\dq{} (отключено, используется pcnet)
92 \item \textbf{serial} -- Перенаправление последовательных портов гостевого домена на реальное устройство.
93 \item \textbf{usb} -- Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать.
94 \item \textbf{usbdevice} -- Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB:
95 \end{itemize}
97 \begin{verbatim}
98 usbdevice='mouse'
99 \end{verbatim}
101 \begin{itemize}
102 \item \textbf{localtime} -- Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC
103 \item \textbf{enable-audio} -- Поддержка звука. Находится в разработке.
104 \item \textbf{full-screen} -- Поддержка полноэкранного режима. Находится в разработке.
105 \item \textbf{nographic} -- Другой способ перенаправить вывод на последовательный порт. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. Использование данного режима не рекомендуется.
106 \end{itemize}
108 \subsection{Проверка на поддержку VMX}
109 После загрузки самого Dom0 убедимся в наличии поддержки VMX (процессоры Intel):
111 \begin{verbatim}
112 # xm dmesg | grep VMX
113 (XEN) VMXON is done
114 (XEN) VMXON is done
115 ...
116 (XEN) VMXON is done
117 (XEN) VMXON is done
118 (XEN) VMXON is done
119 #
120 \end{verbatim}
122 Если используется процессор AMD:
124 \begin{verbatim}
125 # xm dmesg | grep -i svm
126 (XEN) AMD SVM Extension is enabled for cpu 0.
127 (XEN) AMD SVM Extension is enabled for cpu 1.
128 \end{verbatim}
130 В общем случае:
132 \begin{verbatim}
133 # xm info | grep caps
134 hw_caps : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
135 xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
136 \end{verbatim}
138 hvm-3.0-x86\_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.
140 Если у вас другое сообщение, то проверьте настройки BIOS и задействуйте поддержку аппаратной виртуализации,
141 если она выключена.
143 \subsection{Создание дискового раздела для гостевой системы}
144 Создаем образ диска Xen:
146 \begin{verbatim}
147 # mkdir -p /root/xenimages
148 # cd /root/xenimages
149 # dd if=/dev/zero of=WS128.img bs=1M count=4096
150 \end{verbatim}
152 Также необходимо создать iso-образ системы WinXP -- ServicePack2. В данном случае, разместим его в каталоге \texttt{/root/xenimages}.
154 На основе эталонного файла конфигурации создадим свой собственный:
156 \begin{verbatim}
157 # cat /etc/xen/winXP128
158 kernel = "/usr/lib/xen/boot/hvmloader"
159 builder='hvm'
160 memory = 512
161 name = "WinXP128"
162 vcpus=1
163 pae=0
164 acpi=0
165 apic=0
166 cpus = ""
167 vif = [ 'type=ioemu, bridge=xenbr0' ]
168 disk = [
169 'file:/root/xenimages/winXP128.img,ioemu:hda,w',
170 'file:/root/xenimages/en_winxp_pro_with_sp2.iso,ioemu:hdc:cdrom,r'
171 ]
172 on_poweroff = 'destroy'
173 on_reboot = 'destroy'
174 on_crash = 'destroy'
175 device_model = '/usr/lib/xen/bin/qemu-dm'
176 boot='d'
177 sdl=0
178 vnc=1
179 vncviewer=0
180 stdvga=0
181 serial='pty'
182 ne2000=0
183 \end{verbatim}
185 Обратите внимание на то, что указан параметр boot=\rq{}d\rq{}, что необходимо для установки. Впоследствии его необходимо заменить на \dq{}boot=\rq{}c\rq{}\dq{}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается.
187 \subsection{Запуск домена и инсталляция гостевой системы}
188 Начинаем установку и подсоединяемся к домену с помощью VNC -- сразу после создания домена подключаемся к нему с помощью vncviewer.
190 \begin{verbatim}
191 # xm create -c /etc/xen/winXP128
192 Using config file "/etc/xen/winXP128".
193 Started domain WinXP128
194 \end{verbatim}
196 Подключение к VNC:
198 \begin{verbatim}
199 % vncviewer vermont:1
200 \end{verbatim}
202 С установкой могут быть проблемы. Можно попробовать решить проблему так: на экране установки, предлагающем нажать F6 для установки SCSI или RAID контроллера, надо нажать F5 и выбрать пункт \texttt{Standard PC} из предложенного меню.
204 \begin{verbatim}
205 ACPI Multiprocessor PC
206 ACPI Uniprocessor PC
207 Advanced Configuration and Power Interface (ACPI) PC
208 Compaq SystemPro Multiprocessor or 100% Compatible PC
209 MPS Uniprocessor PC
210 MPS Multiprocessor PC
211 Standard PC
212 Standard PC with C-Step i486
213 Other
214 \end{verbatim}
216 После того, как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. Согласно нашему файлу конфигурации, виртуальная машина будет закрыта и нам предоставится удачная возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, после чего запускаем виртуальную машину и соединяемся с консолью:
218 \begin{verbatim}
219 # xm create -c /etc/xen/winXP128
220 Using config file "/etc/xen/winXP128".
221 Started domain WinXP128
222 \end{verbatim}
224 VNC:
226 \begin{verbatim}
227 % vncviewer vermont:2
228 \end{verbatim}
230 Обратите внимание на параметр \rq{}:2\rq{}, так как изменился XenID (посмотреть его можно командой xm list). Не особо волнуйтесь насчет проблем VNC при работе с мышью. Как только вы завершите установку можно настроить службу терминального доступа и использовать Windows Remote Desktop или rdesktop. Если вы по-прежнему хотите использовать VNC, то обратитесь к этому разделу руководства.
233 \subsection{Вопросы и ответы}
234 Ниже приводятся выдержки из обсуждения \url{http://forum.sysadmins.ru/viewtopic.php?p=7941589\#7941589},
235 в котором были затронуты многие распространённые вопросы, касающиеся запуска Windows в HVM-домене.
236 Стиль дискуссии сохранён.
238 \textbf{Вопрос: Виртуалка начала бутиться с сидюка/винта, но при этом весь проц съела и черный экран виртуалки. Аптайм виртуалки увеличивается, значит сама виртуалка не повисла, наверно. Есть какие-нибуть идеи?}
240 Да, скорее всего виртуалка нормально работает.
241 вы подключаетесь к экрану виртуалки через VNC,
242 при смене разрешения экрана (а при загрузке винды
243 именно это и происходит) его нужно передергивать,
244 то есть закрывать и подключаться вновь.
246 \textbf{Вопрос: эникей не успевал нажать при буте с сидюка и виртуалка пытлас бутиться с пустого винта. А как вообще указать откуда она бутится?}
248 Да, в соответствии с вашим конфигом система пытается загрузиться с
249 привода CDROM.
251 \begin{itemize}
252 \item boot=\rq{}d\rq{} — загружатсья с CDROM\rq{}а (мнемоническое правило — «с диска D:» )
253 \item boot=\rq{}c\rq{} — загружатсья с диска (мнемоническое правило — «с диска C:» )
254 \end{itemize}
256 \textbf{Вопрос: а звук в виртуалке не настраивал? Или хотя-бы через rdesktop?}
258 Звук настраивали и всё работет.
259 Звук действительно слушается именно через rdesktop,
260 впрочем что и касается основной работы (кроме инсталляци) — работать лучше rdesktop.
262 При заходе через \textit{rdesktop}, для того чтобы
263 звук проигрывался локально, используйте ключ \textit{-rsound}:
264 \begin{verbatim}
265 rdesktop -rsound 192.168.1.1
266 \end{verbatim}
268 VNC (а точнее libvnc), с которым скомпилен Xen имеет множество ограничений и его стоит рассматривать как аврийный вариант. А так конечно же заходить на систему через rdesktop, сразу же после того как на ней поднимается стек TCP/IP. (или в крайнейм случае поставить полноценный VNC-сервер внутрь домена с Windows).
270 Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen.
271 Иначе у вас будет два курсора, одному из которых будет соответствовать ваша реальная мышь, а вторым виртуальная.
273 \textbf{Вопрос: Как поменять сд-имедж или диск физического привода не перезапуская виртуалки?}
275 Есть два метода. Один для дома для семьи (и он по умолчанию в новых версиях Xen блокируется и его надо явно разрешать) и второй
276 промышленный.
278 Первый: в VNC окне нажать ctr-alt-2 что переключит вас на консоль qemu, дальше использовать eject и прочие команды (я думаю там всё понятно, если не понятно, спрашивайте), а потом когда выполнили свое дело, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы (подробнее: (Xen-devel) About change of CD-ROM).
280 Второй: использовать xm block-attach, xm block-detach
281 (подробнее: Xen-block-attach).
283 Второй метод намного более правильный и более секюрный (первый блокируется из соображений безопасности ибо из консоли qemu можно намутить с доменом всё что угодно, и естественно, что это абсолютно не зависит от того, под каким юзером вы вошли в гостевой домен).
284 Кроме того, второй метод позволяет менять не только сидюки, но и винту и сетевышки и всё что вашей душеньке угодно (особенно это касается PV-доменов, ибо у HVM с этим простора всё же поменьше).
286 \textbf{Вопрос: ОЗУ на серваке 4 или больше гигов? А то у меня х86\_64, с 4гигами ядро вешается на такой строчке:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3\rq{}мя гигами -- нормально.}
288 Это нормально.
289 Точнее, это не совсем нормально, но это возможно.
291 Можно попробовать следующие решения:
293 \begin{enumerate}
294 \item Использовать параметр ядра agp=off
295 \item Добавить модуль intel\_agp в чёрный список незагружаемых модулей
296 \item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста.
297 \item Использовать AMD
298 \end{enumerate}
300 \textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen не выделить(да и незачем особо). Поддержка PAE включена.}
302 Насколько я понимаю, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне).
303 Вероятно, вы имеете в виду баг \#971, из-за которого дейтвительно нельзя было увидеть больше 4G памяти в HVM домене.
304 Если так, то он уже давно пофикшен и этой проблемы быть не должно.
306 Проверьте, что у вас:
307 \begin{enumerate}
308 \item Если в HVM-домене запускается Linux, ядро под которым запускается HVM-домен, имеет поддержку PAE. (это HVM, поэтому может работать и ядро без PAE на хосте с PAE, но конечно видеть >4G оно при этом не будет)
309 \item Если в HVM-домене запускается Windows, в конфигурации загрузчика (boot.ini) присутствует ключ /PAE
310 \end{enumerate}
312 \subsection{Дополнительная информация}
313 \subsubsection{Описание процесса запуска Windows в домене XenU}
315 \begin{itemize}
316 \item \htmladdnormallinkfoot{Windows XP в Xen}{http://xgu.ru/wiki/Windows\_XP\_в\_Xen} (рус.)
317 \item \htmladdnormallinkfoot{Xen w/ IntelVT->Windows Success Report}{http://lists.xensource.com/archives/html/xen-users/2006-06/msg00452.html} (англ.)
318 \item \htmladdnormallinkfoot{Запуск Windows XP в окружении Xen3}{http://dreamcatcher.ru/docs/xen3\_windows.html} (рус.)
319 \item \htmladdnormallinkfoot{How to Install Windows on Xen 3.0}{http://www.xensource.com/files/xen\_install\_windows.pdf} (англ.)
320 \item \htmladdnormallinkfoot{Building Xen from source on Ubuntu to run Windows}{http://linuxvirtualization.com/articles/2006/08/03/xen-on-ubuntu-for-windows} (англ.)
321 \end{itemize}
323 \subsubsection{Проблемы производительности в виртуализированных машинах Windows}
324 \begin{itemize}
325 \item \htmladdnormallinkfoot{poor harddisk performance HVM domain}{http://lists.xensource.com/archives/html/xen-users/2006-05/msg00097.html} (англ.)
326 \item \htmladdnormallinkfoot{By 2009, there will be three competitive hypervisor architectures ...}{http://www.stanford.edu/class/ee380/Abstracts/060125-stanford0601.pdf} (англ.)
327 \item \htmladdnormallinkfoot{Intel® Virtualization Technology for Directed I/O}{http://www.intel.com/technology/itj/2006/v10i3/2-io/1-abstract.htm} (англ.)
328 \item \htmladdnormallinkfoot{Optimizing Network Virtualization in Xen}{http://www.usenix.org/events//usenix06/tech/menon/menon\_html/index.html}. Aravind Menon, EPFL, Switzerland; Alan L. Cox, Rice university, Houston; Willy Zwaenepoel, EPFL, Switzerland. (англ.)
329 \end{itemize}