xg-scale
changeset 6:4a790b55d005 tip
Обновлен раздел по Windows XP. Исправлен стиль, добавлены некоторые уточнения по конфигурационному файлу
author | Igor Chubin <igor@chub.in> |
---|---|
date | Wed Jul 09 08:50:18 2008 +0300 (2008-07-09) |
parents | 75853b740e5a |
children | |
files | windowsxp.tex xen/resources.tex |
line diff
1.1 --- a/windowsxp.tex Sun Jul 06 23:46:33 2008 +0300 1.2 +++ b/windowsxp.tex Wed Jul 09 08:50:18 2008 +0300 1.3 @@ -1,126 +1,25 @@ 1.4 -\section{Windows XP в Xen} 1.5 +\section{Windows в Xen} 1.6 1.7 +Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять Windows в паравиртуальном режиме (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем. 1.8 1.9 -Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять \textit{Windows в паравиртуальном режиме} (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем. 1.10 -Подробности на странице \htmladdnormallinkfoot{Windows в паравиртуальном домене Xen}{http://xgu.ru/wiki/Paravirtualized\_Windows}. 1.11 +\section{Предварительные требования} 1.12 +В первую очередь, для установки Windows XP, как и любой другой не портированной на Xen системы, 1.13 +необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). 1.14 +Информацию о поддержке процессорами аппаратной виртуализации можно посмотреть на странице Аппаратные требования Xen. 1.15 +Поддержка аппаратной виртуализации должна быть и у Xen. 1.16 1.17 -\subsection{Предварительные требования} 1.18 -В первую очередь, для установки Windows XP, как и любой другой системы с закрытым кодом, необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). Таблицу поддержки аппаратной виртуализации процессорами можно найти \htmladdnormallinkfoot{здесь}{http://xgu.ru/wiki/xen/hw}. 1.19 +\subsection{Поддержка VMX} 1.20 +Убедиться в наличии поддержки VMX можно так. 1.21 1.22 -Поддержка аппаратной виртуализации должна быть и у Xen. 1.23 -При сборке из исходных текстов понадобится установить в систему: 1.24 -\begin{itemize} 1.25 -\item \textbf{dev86} -- Ассемблер и компоновщик для реального режима 80x86. Этот пакет необходим для сборки кода BIOS, запускаемого в (виртуальном) реальном режиме. Если пакет dev86 недоступен для x86\_64, то можно использовать i386 версию. 1.26 -\item \textbf{LibVNCServer} -- Немодифицируемый VGA дисплей, клавиатуру и мышь можно виртуализировать с помощью библиотеки vncserver. 1.27 -\item \textbf{SDL-devel}, \textbf{SDL} -- Если пакеты SDL и SDL-devel не были установлены по умолчанию, то взять их можно из системы портов или скомпилировав из исходных текстов. 1.28 -\end{itemize} 1.29 - 1.30 -\subsubsection{Замечание для пользователей Debian} 1.31 -При выполнении вышеуказанной процедуры на 1.32 -Debian GNU/Linux необходимо учесть, что 1.33 -пакет \textbf{dev86} в Debian разбит на два пакета -- \textbf{bin86} и \textbf{bcc} -- и перед компиляцией Xen из архива исходных текстов 1.34 -должны быть установлены оба эти пакета (\htmladdnormallinkfoot{подробнее}{http://lists.xensource.com/archives/html/xen-users/2006-02/msg00207.html}). 1.35 - 1.36 -\begin{verbatim} 1.37 -$ apt-cache show bin86 bcc 1.38 -Package: bin86 1.39 -... 1.40 -Description: 16-bit x86 assembler and loader 1.41 -This is the as86 and ld86 distribution written by Bruce Evans. 1.42 -It's a complete 8086 assembler and loader which can make 32-bit 1.43 -code for the 386+ processors (under Linux it's used only to create 1.44 -the 16-bit bootsector and setup binaries). 1.45 - 1.46 -Package: bcc 1.47 -... 1.48 -Description: 16-bit x86 C compiler 1.49 -This is a C-compiler for 8086 cpus which is important for the 1.50 -development of boot loaders or BIOS related 8086 code. 1.51 - 1.52 -It is possible to run 8086 code under i386 Linux using an emulator, 1.53 -`elksemu', also included in this package. 1.54 -\end{verbatim} 1.55 - 1.56 -\subsection{Конфигурационный файл домена} 1.57 -В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами. 1.58 -Для облегчения процесса конфигурирования такого домена служит образцово-показательный конфигурационный файл \texttt{/etc/xen/xmexample.hvm} (путь может отличаться). 1.59 -В нём помимо опций использующихся в паравиртуальных доменах 1.60 -есть и сугубо специфические: 1.61 -\begin{itemize} 1.62 -\item \textbf{kernel} -- VMX firmware loader, /usr/lib/xen/boot/vmxloader 1.63 -\item \textbf{builder} -- Функции сборки домена. VMX-домены используют vmx builder 1.64 -\item \textbf{acpi} -- Задействует ACPI VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.65 -\item \textbf{apic} -- Задействует APIC VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.66 -\item \textbf{pae} -- Задействует PAE VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.67 -\item \textbf{vif} -- Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных(\dq{}нормальных\dq{}, с модифицированным ядром) доменах. 1.68 -\item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа: 1.69 -\end{itemize} 1.70 - 1.71 -\begin{verbatim} 1.72 -phy:UNAME,ioemu:DEV,MODE, 1.73 -\end{verbatim} 1.74 - 1.75 -где \textbf{UNAME} -- имя устройства, \textbf{DEV} -- имя диска, как его видит домен и \textbf{MODE} принимает значения \textbf{r} для read-only и \textbf{w} для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах. 1.76 - 1.77 -Если используется образ диска, то строка принимает вид: 1.78 - 1.79 -\begin{verbatim} 1.80 -file:FILEPATH,ioemu:DEV,MODE 1.81 -\end{verbatim} 1.82 - 1.83 -Если используется больше одного диска, то они разделяются запятой. Например: 1.84 - 1.85 -\begin{verbatim} 1.86 -disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w'] 1.87 -\end{verbatim} 1.88 - 1.89 -\begin{itemize} 1.90 -\item \textbf{cdrom} -- Образ CD-ROM. По умолчанию, для Domain0 это значение равно /dev/cdrom. Внутри VMX-домена CD-ROM будет виден как /dev/hdc. 1.91 -\item \textbf{boot} -- Загрузка с floppy (a), hard disk (c) или CD-ROM (d). 1.92 -\item \textbf{device\_model} -- Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже. 1.93 -\item \textbf{sdl} -- Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) 1.94 -\item \textbf{vnc} -- Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) 1.95 -\item \textbf{vncviewer} -- Если vnc=1 и vncviewer=0, пользователь может использовать vncviewer для подключения к VMX-домену. Например: 1.96 -\end{itemize} 1.97 - 1.98 -\begin{verbatim} 1.99 -$ vncviewer domain0_IP_address:VMX_domain_id 1.100 -\end{verbatim} 1.101 - 1.102 -\begin{itemize} 1.103 -\item \textbf{ne2000} -- Задействует режим совместимости ne2000, по умолчанию равно \dq{}0\dq{} (отключено, используется pcnet) 1.104 -\item \textbf{serial} -- Перенаправление последовательных портов гостевого домена на реальное устройство. 1.105 -\item \textbf{usb} -- Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать. 1.106 -\item \textbf{usbdevice} -- Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB: 1.107 -\end{itemize} 1.108 - 1.109 -\begin{verbatim} 1.110 -usbdevice='mouse' 1.111 -\end{verbatim} 1.112 - 1.113 -\begin{itemize} 1.114 -\item \textbf{localtime} -- Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC 1.115 -\item \textbf{enable-audio} -- Поддержка звука. Находится в разработке. 1.116 -\item \textbf{full-screen} -- Поддержка полноэкранного режима. Находится в разработке. 1.117 -\item \textbf{nographic} -- Другой способ перенаправить вывод на последовательный порт. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. Использование данного режима не рекомендуется. 1.118 -\end{itemize} 1.119 - 1.120 -\subsection{Проверка на поддержку VMX} 1.121 -После загрузки самого Dom0 убедимся в наличии поддержки VMX (процессоры Intel): 1.122 - 1.123 +Для процессоров Intel: 1.124 \begin{verbatim} 1.125 # xm dmesg | grep VMX 1.126 (XEN) VMXON is done 1.127 (XEN) VMXON is done 1.128 ... 1.129 -(XEN) VMXON is done 1.130 -(XEN) VMXON is done 1.131 -(XEN) VMXON is done 1.132 -# 1.133 \end{verbatim} 1.134 1.135 Если используется процессор AMD: 1.136 - 1.137 \begin{verbatim} 1.138 # xm dmesg | grep -i svm 1.139 (XEN) AMD SVM Extension is enabled for cpu 0. 1.140 @@ -128,7 +27,6 @@ 1.141 \end{verbatim} 1.142 1.143 В общем случае: 1.144 - 1.145 \begin{verbatim} 1.146 # xm info | grep caps 1.147 hw_caps : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f 1.148 @@ -137,66 +35,129 @@ 1.149 1.150 hvm-3.0-x86\_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V. 1.151 1.152 -Если у вас другое сообщение, то проверьте настройки BIOS и задействуйте поддержку аппаратной виртуализации, 1.153 -если она выключена. 1.154 +Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и, 1.155 +если вы этого ещё не сделали, задействуйте поддержку VT. 1.156 1.157 -\subsection{Создание дискового раздела для гостевой системы} 1.158 +Возможно, BIOS вашей материнской платы искусственно отключает виртуализацию. 1.159 +В этом случае нужно обновить или исправить BIOS (см. например GA-M59SLI-S4) 1.160 + 1.161 +\section{Конфигурационный файл домена} 1.162 +В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами (Hardware Virtualization Mode). 1.163 +Для облегчения процесса настройки существует пример конфигурационного файла такого домена 1.164 +(при установке из исходников он называется \texttt{/etc/xen/xmexample.hvm}; при установке из пакетов путь может быть другим). 1.165 +Множество параметров, использующихся в этом файле, 1.166 +шире чем в конфигурационном файле паравиртуального домена: 1.167 +\begin{itemize} 1.168 +\item \textbf{kernel} — VMX firmware loader, для HVM-домена обычно \texttt{hvmloader} 1.169 +\item \textbf{builder} — Тип домена. Для HVM-домена обязательно \texttt{hvm} 1.170 +\item \textbf{acpi} — Поддержка ACPI внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.171 +\item \textbf{apic} — Поддержка APIC внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.172 +\item \textbf{pae} — Поддержка PAE внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) 1.173 +\item \textbf{vif} — Описание сетевых интерфейсов. Представляет собой список строк, каждая из которых описывает один интерфейс. В каждой строке, соответствующей интерфейсу, обязательно должен присутствовать компонент \texttt{bridge}, указывающий к какому мосту подключён интерфейс. Опционально может указываться MAC-адрес интерфейса (по умолчанию генерируется случайным образом внутри диапазона, выделенного Xen Source). Здесь же может задаваться модель эмулируемой сетевой карты (параметр \texttt{model}). 1.174 +\item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа: 1.175 +\end{itemize} 1.176 +\begin{verbatim} 1.177 +phy:UNAME,DEV,MODE 1.178 +\end{verbatim} 1.179 +где \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}. 1.180 + 1.181 +Если используется образ диска, находящийся в файле, то строка принимает вид: 1.182 +\begin{verbatim} 1.183 +file:FILEPATH,DEV,MODE 1.184 +\end{verbatim} 1.185 + 1.186 +Если используется больше одного диска, то они разделяются запятой. Например: 1.187 +\begin{verbatim} 1.188 +disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.img,hdb,w'] 1.189 +\end{verbatim} 1.190 + 1.191 +Если какой-то из образов является образом компакт-диска, и предполагается, что в виртуальной машине должен эмулироваться привод CD-ROM, нужно использовать суффикс \texttt{:cdrom} в описании диска: 1.192 +\begin{verbatim} 1.193 +disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.iso,hdc:cdrom,w'] 1.194 +\end{verbatim} 1.195 + 1.196 +CD-ROM\rq{}ов может быть несколько. 1.197 +\begin{itemize} 1.198 +\item \textbf{boot} — Загрузка с floppy (a), hard disk (c) или CD-ROM (d). 1.199 +\item \textbf{device\_model} — Инструмент эмуляции устройств для HVM-домена. Обычно \texttt{qemu-dm} 1.200 +\item \textbf{sdl} — Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) 1.201 +\item \textbf{vnc} — Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) 1.202 +\end{itemize} 1.203 +Пользователь может использовать \textbf{vncviewer} для подключения к домену. Например: 1.204 +\begin{verbatim} 1.205 +$ vncviewer domain0_IP_address:0 1.206 +\end{verbatim} 1.207 + 1.208 +\begin{itemize} 1.209 +\item \textbf{vncconsole} — Нужно ли автоматически запускать \textbf{vncviewer} при старте домена. Имеет смысла только если \texttt{vnc=1}. По умолчанию равно 0. 1.210 +\item \textbf{serial} — Перенаправление последовательных портов гостевого домена на файл устройства в домене 0. 1.211 +\item \textbf{usb} — Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать. 1.212 +\item \textbf{usbdevice} — Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB: 1.213 +\end{itemize} 1.214 + 1.215 +\begin{verbatim} 1.216 +usbdevice='mouse' 1.217 +\end{verbatim} 1.218 + 1.219 +\begin{itemize} 1.220 +\item \textbf{localtime} — Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC 1.221 +\item \textbf{soundhw} — Тип звукового устройства для эмуляции. Обычно \texttt{sb16} 1.222 +\item \textbf{full-screen} — Поддержка полноэкранного режима. 1.223 +\item \textbf{nographic} — Не использовать графический интерфейс, работать только через консоль. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. 1.224 +\end{itemize} 1.225 + 1.226 +\section{Создание дискового раздела для гостевой системы} 1.227 Создаем образ диска Xen: 1.228 1.229 \begin{verbatim} 1.230 - # mkdir -p /root/xenimages 1.231 +# mkdir -p /root/xenimages 1.232 # cd /root/xenimages 1.233 # dd if=/dev/zero of=WS128.img bs=1M count=4096 1.234 \end{verbatim} 1.235 1.236 -Также необходимо создать iso-образ системы WinXP -- ServicePack2. В данном случае, разместим его в каталоге \texttt{/root/xenimages}. 1.237 +Также необходимо создать ISO-образ системы Windows XP, который мы собираемся использовать при инсталляции. В данном случае, разместим его в каталоге \texttt{/root/xenimages}. 1.238 1.239 На основе эталонного файла конфигурации создадим свой собственный: 1.240 1.241 \begin{verbatim} 1.242 - # cat /etc/xen/winXP128 1.243 - kernel = "/usr/lib/xen/boot/hvmloader" 1.244 - builder='hvm' 1.245 - memory = 512 1.246 - name = "WinXP128" 1.247 - vcpus=1 1.248 - pae=0 1.249 - acpi=0 1.250 - apic=0 1.251 - cpus = "" 1.252 - vif = [ 'type=ioemu, bridge=xenbr0' ] 1.253 - disk = [ 1.254 - 'file:/root/xenimages/winXP128.img,ioemu:hda,w', 1.255 - 'file:/root/xenimages/en_winxp_pro_with_sp2.iso,ioemu:hdc:cdrom,r' 1.256 - ] 1.257 - on_poweroff = 'destroy' 1.258 - on_reboot = 'destroy' 1.259 - on_crash = 'destroy' 1.260 - device_model = '/usr/lib/xen/bin/qemu-dm' 1.261 - boot='d' 1.262 - sdl=0 1.263 - vnc=1 1.264 - vncviewer=0 1.265 - stdvga=0 1.266 - serial='pty' 1.267 - ne2000=0 1.268 +# cat /etc/xen/winxp 1.269 +kernel = "hvmloader" 1.270 +builder='hvm' 1.271 +memory = 512 1.272 +name = "winxp" 1.273 +vcpus=1 1.274 +pae=0 1.275 +acpi=0 1.276 +apic=0 1.277 +cpus = "" 1.278 +vif = [ 'bridge=xenbr0' ] 1.279 +disk = [ 1.280 +'file:/root/xenimages/winXP128.img,hda,w', 1.281 +'file:/root/xenimages/en_winxp_pro_with_sp2.iso,hdc:cdrom,r' 1.282 +] 1.283 +on_poweroff = 'destroy' 1.284 +on_reboot = 'destroy' 1.285 +on_crash = 'destroy' 1.286 +device_model = 'qemu-dm' 1.287 +boot='d' 1.288 +sdl=0 1.289 +vnc=1 1.290 +vncconsole=0 1.291 +stdvga=0 1.292 +serial='pty' 1.293 \end{verbatim} 1.294 1.295 -Обратите внимание на то, что указан параметр boot=\rq{}d\rq{}, что необходимо для установки. Впоследствии его необходимо заменить на \dq{}boot=\rq{}c\rq{}\dq{}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается. 1.296 +Обратите внимание на то, что указан параметр \texttt{boot=\rq{}d\rq{}}, что необходимо для установки. 1.297 +Впоследствии его необходимо заменить на \texttt{boot=\rq{}c\rq{}}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается. 1.298 1.299 -\subsection{Запуск домена и инсталляция гостевой системы} 1.300 -Начинаем установку и подсоединяемся к домену с помощью VNC -- сразу после создания домена подключаемся к нему с помощью vncviewer. 1.301 +\section{Запуск домена и инсталляция гостевой системы} 1.302 +Начинаем установку и подсоединяемся к домену с помощью VNC. Для этого сразу после создания домена запускаем \textbf{vncviewer}. 1.303 1.304 \begin{verbatim} 1.305 -# xm create -c /etc/xen/winXP128 1.306 -Using config file "/etc/xen/winXP128". 1.307 -Started domain WinXP128 1.308 -\end{verbatim} 1.309 - 1.310 -Подключение к VNC: 1.311 - 1.312 -\begin{verbatim} 1.313 -% vncviewer vermont:1 1.314 +# xm create /etc/xen/winxp 1.315 +Using config file "/etc/xen/winxp". 1.316 +Started domain Winxp 1.317 +% vncviewer :0 1.318 \end{verbatim} 1.319 1.320 С установкой могут быть проблемы. Можно попробовать решить проблему так: на экране установки, предлагающем нажать F6 для установки SCSI или RAID контроллера, надо нажать F5 и выбрать пункт \texttt{Standard PC} из предложенного меню. 1.321 @@ -213,77 +174,133 @@ 1.322 Other 1.323 \end{verbatim} 1.324 1.325 -После того, как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. Согласно нашему файлу конфигурации, виртуальная машина будет закрыта и нам предоставится удачная возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, после чего запускаем виртуальную машину и соединяемся с консолью: 1.326 +После того как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. В соответствии с файлом конфигурации, 1.327 +виртуальная машина при перезагрузке будет завершена, и нам предоставится возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, 1.328 +после чего виртуальную машину можно будет запускать вновь и соединяться с её консолью: 1.329 1.330 \begin{verbatim} 1.331 -# xm create -c /etc/xen/winXP128 1.332 -Using config file "/etc/xen/winXP128". 1.333 -Started domain WinXP128 1.334 +# xm create /etc/xen/winxp 1.335 +Using config file "/etc/xen/winxp". 1.336 +Started domain winxp 1.337 +% vncviewer :0 1.338 \end{verbatim} 1.339 1.340 -VNC: 1.341 1.342 -\begin{verbatim} 1.343 -% vncviewer vermont:2 1.344 -\end{verbatim} 1.345 +\subsection{Паравиртуальные драйверы} 1.346 1.347 -Обратите внимание на параметр \rq{}:2\rq{}, так как изменился XenID (посмотреть его можно командой xm list). Не особо волнуйтесь насчет проблем VNC при работе с мышью. Как только вы завершите установку можно настроить службу терминального доступа и использовать Windows Remote Desktop или rdesktop. Если вы по-прежнему хотите использовать VNC, то обратитесь к этому разделу руководства. 1.348 +Аппаратная виртуализация берёт на себя основные трудности по переключению контекстов гостевых операционных систем и хост-системы, но она ничего (пока что) не делает для ускорения ввода/вывода. Как только задача требует ввода/вывода любая система виртуализации (но не паравиртуализации!) существенно замедляет свою работу. 1.349 1.350 +Одна из главных причин разработки и использования паравиртуальных драйверов — возможность существенного повышения производительности работы гостевых систем, работающих в режиме полной виртуализации. 1.351 + 1.352 +Во второй половине 2007 года появились первая реализация свободных паравиртуальных драйверов под Windows, сделанная Джеймсом Харпером (James Harper). 1.353 + 1.354 +В конце 2007 года вышла версия 0.5.0 драйверов, которые можно рассматривать как экспериментальные. Их можно ставить в виртуальную машину и играться с ними, но их пока что ни в коем случае не стоит использовать на производственных системах. 1.355 + 1.356 +В настоящий момент свободные паравиртуальные драйверы Xen для Windows находятся в сыром состоянии и могут использоваться исключительно в экспериментальных целях. 1.357 + 1.358 +Последняя известная (на момент правки) версия свободных паравиртуальных драйверов — 0.9.10. 1.359 + 1.360 +\subsection{Проброс PCI-устройств внутрь домена Windows} 1.361 + 1.362 +Начиная с Xen 3.2.0 при наличии в системе аппаратной поддерживи виртуализации ввода/вывода 1.363 +Intel VT-d (не путать с виртуализацией процессора VT-x!) 1.364 +существует возможность выполнять монопольное выделение PCI-устройства 1.365 +домену Xen. 1.366 +Раньше это было возможно для паравиртуальных доменов, но было невозможно для 1.367 +HVM-доменов, а именно в таком исполняется Windows. 1.368 + 1.369 +При выполнении проброс PCI-устройства Windows работает с ним напрямую, 1.370 +на полной скорости, и использую собственные драйвера. 1.371 +Это позволяет обойти проблемы с производительностью, которые есть при эмуляции устройств, 1.372 +а также задействовать все возможности устройства, о которых знает драйвер. 1.373 + 1.374 +При выделении устройства гостевому оно становится 1.375 +недоступным для домена 0 и используется гостевым доменом монопольно. 1.376 + 1.377 +Графический адаптер является очень специфическим устройством, 1.378 +монопольное выделение которого пока не поддерживается. 1.379 +Это означает, что запускать Counter Strike внутри гостевого 1.380 +домена Xen и при этом напрямую использовать графическую карту 1.381 +пока не получится. 1.382 1.383 \subsection{Вопросы и ответы} 1.384 -Ниже приводятся выдержки из обсуждения \url{http://forum.sysadmins.ru/viewtopic.php?p=7941589\#7941589}, 1.385 -в котором были затронуты многие распространённые вопросы, касающиеся запуска Windows в HVM-домене. 1.386 -Стиль дискуссии сохранён. 1.387 +\textbf{Вопрос: Виртуальная машина начала загружаться с образа компакт-диска или жёсткого диска. Спустя некоторое время её экран стал чёрным. Потреблённое процессорное время увеличивается, значит виртуальная машина работает. Но на экране нет никакой реакции. Что делать?} 1.388 1.389 -\textbf{Вопрос: Виртуалка начала бутиться с сидюка/винта, но при этом весь проц съела и черный экран виртуалки. Аптайм виртуалки увеличивается, значит сама виртуалка не повисла, наверно. Есть какие-нибуть идеи?} 1.390 +Да, скорее всего виртуальная машина нормально работает. 1.391 +Подключение к экрану виртуальной машины выполняется через VNC, 1.392 +при смене разрешения экрана (а при загрузке Windows 1.393 +именно это и происходит) нужно переподключаться, 1.394 +то есть закрывать VNC-клиент, а потом запускать его вновь. 1.395 1.396 -Да, скорее всего виртуалка нормально работает. 1.397 -вы подключаетесь к экрану виртуалки через VNC, 1.398 -при смене разрешения экрана (а при загрузке винды 1.399 -именно это и происходит) его нужно передергивать, 1.400 -то есть закрывать и подключаться вновь. 1.401 +\textbf{Вопрос: не успел нажать никакую кнопку, когда было соответствующее приглашение при загрузке с компакт-диска, и виртуальная машина попыталась загрузиться с пустого жёсткого диска. А как вообще указать откуда именно будет выполняться загрузка виртуальной машины?} 1.402 1.403 -\textbf{Вопрос: эникей не успевал нажать при буте с сидюка и виртуалка пытлас бутиться с пустого винта. А как вообще указать откуда она бутится?} 1.404 - 1.405 -Да, в соответствии с вашим конфигом система пытается загрузиться с 1.406 +Откуда именно будет загружаться виртуальная машина 1.407 +определяется её конфигурационным файлом, а точнее параметром 1.408 +\texttt{boot}, указанном в нём. 1.409 привода CDROM. 1.410 1.411 \begin{itemize} 1.412 -\item boot=\rq{}d\rq{} — загружатсья с CDROM\rq{}а (мнемоническое правило — «с диска D:» ) 1.413 -\item boot=\rq{}c\rq{} — загружатсья с диска (мнемоническое правило — «с диска C:» ) 1.414 +\item \texttt{boot=\rq{}d\rq{}} — загружаться с CDROM\rq{}а (мнемоническое правило — «с диска D:» ) 1.415 +\item \texttt{boot=\rq{}c\rq{}} — загружаться с диска (мнемоническое правило — «с диска C:» ) 1.416 \end{itemize} 1.417 1.418 -\textbf{Вопрос: а звук в виртуалке не настраивал? Или хотя-бы через rdesktop?} 1.419 +\textbf{Вопрос: должен ли работать звук в виртуальной машине при подключении через RDP?} 1.420 1.421 -Звук настраивали и всё работет. 1.422 -Звук действительно слушается именно через rdesktop, 1.423 -впрочем что и касается основной работы (кроме инсталляци) — работать лучше rdesktop. 1.424 +Звук должен работать и работает. 1.425 +Звук действительно можно прослушать только при подключении при помощи \textbf{rdesktop} по протоколу RDP. 1.426 +Вообще с системой работать удобнее через RDP, чем через служебное VNC-подключение. 1.427 1.428 -При заходе через \textit{rdesktop}, для того чтобы 1.429 +При заходе через \textbf{rdesktop}, для того чтобы 1.430 звук проигрывался локально, используйте ключ \textit{-rsound}: 1.431 \begin{verbatim} 1.432 rdesktop -rsound 192.168.1.1 1.433 \end{verbatim} 1.434 1.435 -VNC (а точнее libvnc), с которым скомпилен Xen имеет множество ограничений и его стоит рассматривать как аврийный вариант. А так конечно же заходить на систему через rdesktop, сразу же после того как на ней поднимается стек TCP/IP. (или в крайнейм случае поставить полноценный VNC-сервер внутрь домена с Windows). 1.436 +\textbf{Вопрос: мышь внутри виртуальной машины и точка-курсор соответствующая указателю VNC-клиента разбегаются. При использовании RDP-подключения такого нет. Почему?} 1.437 1.438 -Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen. 1.439 +Расхождение одной и второй мыши связано с тем, 1.440 +что \textbf{qemu-dm} эмулирует мышь, устройство относительно позиционирования, 1.441 +на основе информации полученной от VNC-подключения, устройства абсолютного позиционирования. 1.442 +Эмуляция выполняется с допущениями, поэтому точного совпадения курсоров нет. 1.443 + 1.444 +VNC-подключение имеет множество других ограничений в сравнении с RDP, 1.445 +и его стоит рассматривать как аварийный вариант. 1.446 +Если возможности использовать RDP-подключение нет, стоит рассмотреть хотя бы возможность 1.447 +использования полноценного VNC-сервера внутри виртуальной машины. 1.448 + 1.449 +Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, 1.450 +или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen. 1.451 Иначе у вас будет два курсора, одному из которых будет соответствовать ваша реальная мышь, а вторым виртуальная. 1.452 1.453 -\textbf{Вопрос: Как поменять сд-имедж или диск физического привода не перезапуская виртуалки?} 1.454 +\textbf{Вопрос: Как поменять образ компакт-диска внутри виртуальной машины без её перезапуска?} 1.455 1.456 -Есть два метода. Один для дома для семьи (и он по умолчанию в новых версиях Xen блокируется и его надо явно разрешать) и второй 1.457 -промышленный. 1.458 +Есть два метода. Один для домашнего использования (он является небезопасным и по умолчанию в новых версиях Xen блокируется; чтобы использовать, его надо явно разрешать) 1.459 +и второй — промышленный. 1.460 1.461 -Первый: в VNC окне нажать ctr-alt-2 что переключит вас на консоль qemu, дальше использовать eject и прочие команды (я думаю там всё понятно, если не понятно, спрашивайте), а потом когда выполнили свое дело, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы (подробнее: (Xen-devel) About change of CD-ROM). 1.462 +Первый способ. 1.463 +В VNC-окне нажать ctr-alt-2, что переключит вас на консоль \textbf{qemu}. 1.464 +Дальше использовать \textbf{eject} и прочие команды для смены диска. 1.465 +После того как образ заменён, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы. 1.466 1.467 -Второй: использовать xm block-attach, xm block-detach 1.468 +По умолчанию в новых версиях Xen эта возможность отключена. 1.469 +Для того чтобы её включить, нужно указать в конфигурационном 1.470 +файле домена 1.471 + 1.472 +\begin{verbatim} 1.473 +monitor=1 1.474 +\end{verbatim} 1.475 + 1.476 +(однако это считается небезопасным, см. ниже). 1.477 + 1.478 +Второй: использовать \textbf{xm} \texttt{block-attach}, \textbf{xm} \texttt{block-detach} 1.479 (подробнее: Xen-block-attach). 1.480 1.481 -Второй метод намного более правильный и более секюрный (первый блокируется из соображений безопасности ибо из консоли qemu можно намутить с доменом всё что угодно, и естественно, что это абсолютно не зависит от того, под каким юзером вы вошли в гостевой домен). 1.482 -Кроме того, второй метод позволяет менять не только сидюки, но и винту и сетевышки и всё что вашей душеньке угодно (особенно это касается PV-доменов, ибо у HVM с этим простора всё же поменьше). 1.483 +Второй метод намного более правильный и более безопасный (первый является небезопасным, поскольку из консоли \textbf{qemu} можно сделать с доменом всё что угодно, 1.484 +и, естественно, что это абсолютно не зависит от того, под каким пользователем вы вошли в гостевой домен). 1.485 +Кроме того, второй метод позволяет менять не только компакт-диски, но и жёсткие дискаи и сетевые карты 1.486 +(это касается PV-доменов, у HVM-доменов этот метод будет работать только при использовании паравиртуальных драйверов). 1.487 1.488 -\textbf{Вопрос: ОЗУ на серваке 4 или больше гигов? А то у меня х86\_64, с 4гигами ядро вешается на такой строчке:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3\rq{}мя гигами -- нормально.} 1.489 +\textbf{Вопрос: Можно ли запускать HVM-домены на серверах с ОЗУ более 4 GB? В системе х86\_64 с 4GB ядро зависает с сообщением:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3GB — нормально.} 1.490 1.491 Это нормально. 1.492 Точнее, это не совсем нормально, но это возможно. 1.493 @@ -291,17 +308,17 @@ 1.494 Можно попробовать следующие решения: 1.495 1.496 \begin{enumerate} 1.497 -\item Использовать параметр ядра agp=off 1.498 -\item Добавить модуль intel\_agp в чёрный список незагружаемых модулей 1.499 -\item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста. 1.500 -\item Использовать AMD 1.501 +\item Использовать параметр ядра \texttt{agp=off}; 1.502 +\item Добавить модуль intel\_agp в чёрный список незагружаемых модулей; 1.503 +\item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста; 1.504 +\item Использовать AMD. 1.505 \end{enumerate} 1.506 1.507 -\textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen не выделить(да и незачем особо). Поддержка PAE включена.} 1.508 +\textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen выделить не получается. Поддержка PAE включена.} 1.509 1.510 -Насколько я понимаю, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне). 1.511 -Вероятно, вы имеете в виду баг \#971, из-за которого дейтвительно нельзя было увидеть больше 4G памяти в HVM домене. 1.512 -Если так, то он уже давно пофикшен и этой проблемы быть не должно. 1.513 +Вероятно, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне). 1.514 +Скорее всего, проблема связана с багом \#971, из-за которого действительно нельзя было увидеть больше 4G памяти в HVM-домене. 1.515 +Если так, то он уже давно исправлен и этой проблемы быть не должно. 1.516 1.517 Проверьте, что у вас: 1.518 \begin{enumerate} 1.519 @@ -309,22 +326,17 @@ 1.520 \item Если в HVM-домене запускается Windows, в конфигурации загрузчика (boot.ini) присутствует ключ /PAE 1.521 \end{enumerate} 1.522 1.523 -\subsection{Дополнительная информация} 1.524 -\subsubsection{Описание процесса запуска Windows в домене XenU} 1.525 +\textbf{Вопрос: как передать Windows-системе, запущенной внутри домена Xen, флоппи-диск, если есть его образ?} 1.526 1.527 +Используйте параметр \texttt{fda} в конфигурационном файле. 1.528 + 1.529 +\begin{verbatim} 1.530 +fda='/iso/winxp.img' 1.531 +\end{verbatim} 1.532 + 1.533 +\section{Дополнительная информация} 1.534 +\subsection{Описание процесса запуска Windows в домене XenU} 1.535 \begin{itemize} 1.536 -\item \htmladdnormallinkfoot{Windows XP в Xen}{http://xgu.ru/wiki/Windows\_XP\_в\_Xen} (рус.) 1.537 -\item \htmladdnormallinkfoot{Xen w/ IntelVT->Windows Success Report}{http://lists.xensource.com/archives/html/xen-users/2006-06/msg00452.html} (англ.) 1.538 -\item \htmladdnormallinkfoot{Запуск Windows XP в окружении Xen3}{http://dreamcatcher.ru/docs/xen3\_windows.html} (рус.) 1.539 -\item \htmladdnormallinkfoot{How to Install Windows on Xen 3.0}{http://www.xensource.com/files/xen\_install\_windows.pdf} (англ.) 1.540 -\item \htmladdnormallinkfoot{Building Xen from source on Ubuntu to run Windows}{http://linuxvirtualization.com/articles/2006/08/03/xen-on-ubuntu-for-windows} (англ.) 1.541 +\item \htmladdnormallinkfoot{Инсталляция Windows XP в HVM-домене Xen}{http://xgu.ru/wiki/xen/winxp} (рус.) 1.542 \end{itemize} 1.543 1.544 -\subsubsection{Проблемы производительности в виртуализированных машинах Windows} 1.545 -\begin{itemize} 1.546 -\item \htmladdnormallinkfoot{poor harddisk performance HVM domain}{http://lists.xensource.com/archives/html/xen-users/2006-05/msg00097.html} (англ.) 1.547 -\item \htmladdnormallinkfoot{By 2009, there will be three competitive hypervisor architectures ...}{http://www.stanford.edu/class/ee380/Abstracts/060125-stanford0601.pdf} (англ.) 1.548 -\item \htmladdnormallinkfoot{Intel® Virtualization Technology for Directed I/O}{http://www.intel.com/technology/itj/2006/v10i3/2-io/1-abstract.htm} (англ.) 1.549 -\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. (англ.) 1.550 -\end{itemize} 1.551 -
2.1 --- a/xen/resources.tex Sun Jul 06 23:46:33 2008 +0300 2.2 +++ b/xen/resources.tex Wed Jul 09 08:50:18 2008 +0300 2.3 @@ -67,7 +67,6 @@ 2.4 уменьшение памяти домена 0 выполняться не будет. 2.5 2.6 Пример настройки: 2.7 - 2.8 \begin{verbatim} 2.9 (dom0-min-mem 0) 2.10 \end{verbatim} 2.11 @@ -107,11 +106,10 @@ 2.12 $ sudo xm create dhcp 2.13 Using config file "/etc/xen/dhcp". 2.14 Started domain dhcp 2.15 - 2.16 $ sudo xm list 2.17 -Name ID Mem VCPUs State Time(s) 2.18 -Domain-0 0 1171 1 r----- 5274.5 2.19 -dhcp 8 128 1 -b---- 2.8 2.20 +Name ID Mem VCPUs State Time(s) 2.21 +Domain-0 0 1171 1 r----- 5274.5 2.22 +dhcp 8 128 1 -b---- 2.8 2.23 \end{verbatim} 2.24 2.25 Гостевая операционная система видит 128MB: 2.26 @@ -119,15 +117,13 @@ 2.27 \begin{verbatim} 2.28 $ sudo xm console dhcp 2.29 Debian GNU/Linux lenny/sid dhcp tty1 2.30 - 2.31 dhcp login: root 2.32 Password: 2.33 - 2.34 dhcp:~# free 2.35 - total used free shared buffers cached 2.36 -Mem: 131220 33132 98088 0 1524 12204 2.37 --/+ buffers/cache: 19404 111816 2.38 -Swap: 0 0 0 2.39 + total used free shared buffers cached 2.40 +Mem: 131220 33132 98088 0 1524 12204 2.41 +-/+ buffers/cache: 19404 111816 2.42 +Swap: 0 0 0 2.43 \end{verbatim} 2.44 2.45 Увеличиваем объём доступной домену оперативной памяти: 2.46 @@ -135,23 +131,20 @@ 2.47 \begin{verbatim} 2.48 %$ sudo xm mem-set dhcp 256 2.49 %$ sudo xm list 2.50 -Name ID Mem VCPUs State Time(s) 2.51 -Domain-0 0 1171 1 r----- 5329.8 2.52 -dhcp 8 256 1 -b---- 2.9 2.53 +Name ID Mem VCPUs State Time(s) 2.54 +Domain-0 0 1171 1 r----- 5329.8 2.55 +dhcp 8 256 1 -b---- 2.9 2.56 \end{verbatim} 2.57 2.58 Гостевая операционная система теперь видит 256MB: 2.59 2.60 \begin{verbatim} 2.61 $ sudo xm console dhcp 2.62 - 2.63 -dhcp:~# 2.64 -dhcp:~# 2.65 dhcp:~# free 2.66 - total used free shared buffers cached 2.67 -Mem: 262144 33336 228808 0 1620 12228 2.68 --/+ buffers/cache: 19488 242656 2.69 -Swap: 0 0 0 2.70 + total used free shared buffers cached 2.71 +Mem: 262144 33336 228808 0 1620 12228 2.72 +-/+ buffers/cache: 19488 242656 2.73 +Swap: 0 0 0 2.74 \end{verbatim} 2.75 2.76 В настоящий момент изменение памяти на лету \textit{НЕ} поддерживает