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{НЕ} поддерживает