# HG changeset patch # User Igor Chubin # Date 1215582618 -10800 # Node ID 4a790b55d00578324304cbd675a9f53aa533f97e # Parent 75853b740e5ac06a39ff5f09da4f20f2b924e52b Обновлен раздел по Windows XP. Исправлен стиль, добавлены некоторые уточнения по конфигурационному файлу diff -r 75853b740e5a -r 4a790b55d005 windowsxp.tex --- a/windowsxp.tex Sun Jul 06 23:46:33 2008 +0300 +++ b/windowsxp.tex Wed Jul 09 08:50:18 2008 +0300 @@ -1,126 +1,25 @@ -\section{Windows XP в Xen} +\section{Windows в Xen} +Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять Windows в паравиртуальном режиме (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем. -Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять \textit{Windows в паравиртуальном режиме} (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем. -Подробности на странице \htmladdnormallinkfoot{Windows в паравиртуальном домене Xen}{http://xgu.ru/wiki/Paravirtualized\_Windows}. +\section{Предварительные требования} +В первую очередь, для установки Windows XP, как и любой другой не портированной на Xen системы, +необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). +Информацию о поддержке процессорами аппаратной виртуализации можно посмотреть на странице Аппаратные требования Xen. +Поддержка аппаратной виртуализации должна быть и у Xen. -\subsection{Предварительные требования} -В первую очередь, для установки Windows XP, как и любой другой системы с закрытым кодом, необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). Таблицу поддержки аппаратной виртуализации процессорами можно найти \htmladdnormallinkfoot{здесь}{http://xgu.ru/wiki/xen/hw}. +\subsection{Поддержка VMX} +Убедиться в наличии поддержки VMX можно так. -Поддержка аппаратной виртуализации должна быть и у Xen. -При сборке из исходных текстов понадобится установить в систему: -\begin{itemize} -\item \textbf{dev86} -- Ассемблер и компоновщик для реального режима 80x86. Этот пакет необходим для сборки кода BIOS, запускаемого в (виртуальном) реальном режиме. Если пакет dev86 недоступен для x86\_64, то можно использовать i386 версию. -\item \textbf{LibVNCServer} -- Немодифицируемый VGA дисплей, клавиатуру и мышь можно виртуализировать с помощью библиотеки vncserver. -\item \textbf{SDL-devel}, \textbf{SDL} -- Если пакеты SDL и SDL-devel не были установлены по умолчанию, то взять их можно из системы портов или скомпилировав из исходных текстов. -\end{itemize} - -\subsubsection{Замечание для пользователей Debian} -При выполнении вышеуказанной процедуры на -Debian GNU/Linux необходимо учесть, что -пакет \textbf{dev86} в Debian разбит на два пакета -- \textbf{bin86} и \textbf{bcc} -- и перед компиляцией Xen из архива исходных текстов -должны быть установлены оба эти пакета (\htmladdnormallinkfoot{подробнее}{http://lists.xensource.com/archives/html/xen-users/2006-02/msg00207.html}). - -\begin{verbatim} -$ apt-cache show bin86 bcc -Package: bin86 -... -Description: 16-bit x86 assembler and loader -This is the as86 and ld86 distribution written by Bruce Evans. -It's a complete 8086 assembler and loader which can make 32-bit -code for the 386+ processors (under Linux it's used only to create -the 16-bit bootsector and setup binaries). - -Package: bcc -... -Description: 16-bit x86 C compiler -This is a C-compiler for 8086 cpus which is important for the -development of boot loaders or BIOS related 8086 code. - -It is possible to run 8086 code under i386 Linux using an emulator, -`elksemu', also included in this package. -\end{verbatim} - -\subsection{Конфигурационный файл домена} -В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами. -Для облегчения процесса конфигурирования такого домена служит образцово-показательный конфигурационный файл \texttt{/etc/xen/xmexample.hvm} (путь может отличаться). -В нём помимо опций использующихся в паравиртуальных доменах -есть и сугубо специфические: -\begin{itemize} -\item \textbf{kernel} -- VMX firmware loader, /usr/lib/xen/boot/vmxloader -\item \textbf{builder} -- Функции сборки домена. VMX-домены используют vmx builder -\item \textbf{acpi} -- Задействует ACPI VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) -\item \textbf{apic} -- Задействует APIC VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) -\item \textbf{pae} -- Задействует PAE VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено) -\item \textbf{vif} -- Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных(\dq{}нормальных\dq{}, с модифицированным ядром) доменах. -\item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа: -\end{itemize} - -\begin{verbatim} -phy:UNAME,ioemu:DEV,MODE, -\end{verbatim} - -где \textbf{UNAME} -- имя устройства, \textbf{DEV} -- имя диска, как его видит домен и \textbf{MODE} принимает значения \textbf{r} для read-only и \textbf{w} для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах. - -Если используется образ диска, то строка принимает вид: - -\begin{verbatim} -file:FILEPATH,ioemu:DEV,MODE -\end{verbatim} - -Если используется больше одного диска, то они разделяются запятой. Например: - -\begin{verbatim} -disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w'] -\end{verbatim} - -\begin{itemize} -\item \textbf{cdrom} -- Образ CD-ROM. По умолчанию, для Domain0 это значение равно /dev/cdrom. Внутри VMX-домена CD-ROM будет виден как /dev/hdc. -\item \textbf{boot} -- Загрузка с floppy (a), hard disk (c) или CD-ROM (d). -\item \textbf{device\_model} -- Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже. -\item \textbf{sdl} -- Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) -\item \textbf{vnc} -- Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) -\item \textbf{vncviewer} -- Если vnc=1 и vncviewer=0, пользователь может использовать vncviewer для подключения к VMX-домену. Например: -\end{itemize} - -\begin{verbatim} -$ vncviewer domain0_IP_address:VMX_domain_id -\end{verbatim} - -\begin{itemize} -\item \textbf{ne2000} -- Задействует режим совместимости ne2000, по умолчанию равно \dq{}0\dq{} (отключено, используется pcnet) -\item \textbf{serial} -- Перенаправление последовательных портов гостевого домена на реальное устройство. -\item \textbf{usb} -- Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать. -\item \textbf{usbdevice} -- Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB: -\end{itemize} - -\begin{verbatim} -usbdevice='mouse' -\end{verbatim} - -\begin{itemize} -\item \textbf{localtime} -- Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC -\item \textbf{enable-audio} -- Поддержка звука. Находится в разработке. -\item \textbf{full-screen} -- Поддержка полноэкранного режима. Находится в разработке. -\item \textbf{nographic} -- Другой способ перенаправить вывод на последовательный порт. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. Использование данного режима не рекомендуется. -\end{itemize} - -\subsection{Проверка на поддержку VMX} -После загрузки самого Dom0 убедимся в наличии поддержки VMX (процессоры Intel): - +Для процессоров Intel: \begin{verbatim} # xm dmesg | grep VMX (XEN) VMXON is done (XEN) VMXON is done ... -(XEN) VMXON is done -(XEN) VMXON is done -(XEN) VMXON is done -# \end{verbatim} Если используется процессор AMD: - \begin{verbatim} # xm dmesg | grep -i svm (XEN) AMD SVM Extension is enabled for cpu 0. @@ -128,7 +27,6 @@ \end{verbatim} В общем случае: - \begin{verbatim} # xm info | grep caps hw_caps : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f @@ -137,66 +35,129 @@ hvm-3.0-x86\_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V. -Если у вас другое сообщение, то проверьте настройки BIOS и задействуйте поддержку аппаратной виртуализации, -если она выключена. +Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и, +если вы этого ещё не сделали, задействуйте поддержку VT. -\subsection{Создание дискового раздела для гостевой системы} +Возможно, BIOS вашей материнской платы искусственно отключает виртуализацию. +В этом случае нужно обновить или исправить BIOS (см. например GA-M59SLI-S4) + +\section{Конфигурационный файл домена} +В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами (Hardware Virtualization Mode). +Для облегчения процесса настройки существует пример конфигурационного файла такого домена +(при установке из исходников он называется \texttt{/etc/xen/xmexample.hvm}; при установке из пакетов путь может быть другим). +Множество параметров, использующихся в этом файле, +шире чем в конфигурационном файле паравиртуального домена: +\begin{itemize} +\item \textbf{kernel} — VMX firmware loader, для HVM-домена обычно \texttt{hvmloader} +\item \textbf{builder} — Тип домена. Для HVM-домена обязательно \texttt{hvm} +\item \textbf{acpi} — Поддержка ACPI внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) +\item \textbf{apic} — Поддержка APIC внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) +\item \textbf{pae} — Поддержка PAE внутри HVM-домена, по умолчанию равно \dq{}0\dq{} (отключено) +\item \textbf{vif} — Описание сетевых интерфейсов. Представляет собой список строк, каждая из которых описывает один интерфейс. В каждой строке, соответствующей интерфейсу, обязательно должен присутствовать компонент \texttt{bridge}, указывающий к какому мосту подключён интерфейс. Опционально может указываться MAC-адрес интерфейса (по умолчанию генерируется случайным образом внутри диапазона, выделенного Xen Source). Здесь же может задаваться модель эмулируемой сетевой карты (параметр \texttt{model}). +\item \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа: +\end{itemize} +\begin{verbatim} +phy:UNAME,DEV,MODE +\end{verbatim} +где \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}. + +Если используется образ диска, находящийся в файле, то строка принимает вид: +\begin{verbatim} +file:FILEPATH,DEV,MODE +\end{verbatim} + +Если используется больше одного диска, то они разделяются запятой. Например: +\begin{verbatim} +disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.img,hdb,w'] +\end{verbatim} + +Если какой-то из образов является образом компакт-диска, и предполагается, что в виртуальной машине должен эмулироваться привод CD-ROM, нужно использовать суффикс \texttt{:cdrom} в описании диска: +\begin{verbatim} +disk = ['file:/var/images/image1.img,hda,w', 'file:/var/images/image2.iso,hdc:cdrom,w'] +\end{verbatim} + +CD-ROM\rq{}ов может быть несколько. +\begin{itemize} +\item \textbf{boot} — Загрузка с floppy (a), hard disk (c) или CD-ROM (d). +\item \textbf{device\_model} — Инструмент эмуляции устройств для HVM-домена. Обычно \texttt{qemu-dm} +\item \textbf{sdl} — Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) +\item \textbf{vnc} — Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено) +\end{itemize} +Пользователь может использовать \textbf{vncviewer} для подключения к домену. Например: +\begin{verbatim} +$ vncviewer domain0_IP_address:0 +\end{verbatim} + +\begin{itemize} +\item \textbf{vncconsole} — Нужно ли автоматически запускать \textbf{vncviewer} при старте домена. Имеет смысла только если \texttt{vnc=1}. По умолчанию равно 0. +\item \textbf{serial} — Перенаправление последовательных портов гостевого домена на файл устройства в домене 0. +\item \textbf{usb} — Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать. +\item \textbf{usbdevice} — Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB: +\end{itemize} + +\begin{verbatim} +usbdevice='mouse' +\end{verbatim} + +\begin{itemize} +\item \textbf{localtime} — Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC +\item \textbf{soundhw} — Тип звукового устройства для эмуляции. Обычно \texttt{sb16} +\item \textbf{full-screen} — Поддержка полноэкранного режима. +\item \textbf{nographic} — Не использовать графический интерфейс, работать только через консоль. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. +\end{itemize} + +\section{Создание дискового раздела для гостевой системы} Создаем образ диска Xen: \begin{verbatim} - # mkdir -p /root/xenimages +# mkdir -p /root/xenimages # cd /root/xenimages # dd if=/dev/zero of=WS128.img bs=1M count=4096 \end{verbatim} -Также необходимо создать iso-образ системы WinXP -- ServicePack2. В данном случае, разместим его в каталоге \texttt{/root/xenimages}. +Также необходимо создать ISO-образ системы Windows XP, который мы собираемся использовать при инсталляции. В данном случае, разместим его в каталоге \texttt{/root/xenimages}. На основе эталонного файла конфигурации создадим свой собственный: \begin{verbatim} - # cat /etc/xen/winXP128 - kernel = "/usr/lib/xen/boot/hvmloader" - builder='hvm' - memory = 512 - name = "WinXP128" - vcpus=1 - pae=0 - acpi=0 - apic=0 - cpus = "" - vif = [ 'type=ioemu, bridge=xenbr0' ] - disk = [ - 'file:/root/xenimages/winXP128.img,ioemu:hda,w', - 'file:/root/xenimages/en_winxp_pro_with_sp2.iso,ioemu:hdc:cdrom,r' - ] - on_poweroff = 'destroy' - on_reboot = 'destroy' - on_crash = 'destroy' - device_model = '/usr/lib/xen/bin/qemu-dm' - boot='d' - sdl=0 - vnc=1 - vncviewer=0 - stdvga=0 - serial='pty' - ne2000=0 +# cat /etc/xen/winxp +kernel = "hvmloader" +builder='hvm' +memory = 512 +name = "winxp" +vcpus=1 +pae=0 +acpi=0 +apic=0 +cpus = "" +vif = [ 'bridge=xenbr0' ] +disk = [ +'file:/root/xenimages/winXP128.img,hda,w', +'file:/root/xenimages/en_winxp_pro_with_sp2.iso,hdc:cdrom,r' +] +on_poweroff = 'destroy' +on_reboot = 'destroy' +on_crash = 'destroy' +device_model = 'qemu-dm' +boot='d' +sdl=0 +vnc=1 +vncconsole=0 +stdvga=0 +serial='pty' \end{verbatim} -Обратите внимание на то, что указан параметр boot=\rq{}d\rq{}, что необходимо для установки. Впоследствии его необходимо заменить на \dq{}boot=\rq{}c\rq{}\dq{}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается. +Обратите внимание на то, что указан параметр \texttt{boot=\rq{}d\rq{}}, что необходимо для установки. +Впоследствии его необходимо заменить на \texttt{boot=\rq{}c\rq{}}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается. -\subsection{Запуск домена и инсталляция гостевой системы} -Начинаем установку и подсоединяемся к домену с помощью VNC -- сразу после создания домена подключаемся к нему с помощью vncviewer. +\section{Запуск домена и инсталляция гостевой системы} +Начинаем установку и подсоединяемся к домену с помощью VNC. Для этого сразу после создания домена запускаем \textbf{vncviewer}. \begin{verbatim} -# xm create -c /etc/xen/winXP128 -Using config file "/etc/xen/winXP128". -Started domain WinXP128 -\end{verbatim} - -Подключение к VNC: - -\begin{verbatim} -% vncviewer vermont:1 +# xm create /etc/xen/winxp +Using config file "/etc/xen/winxp". +Started domain Winxp +% vncviewer :0 \end{verbatim} С установкой могут быть проблемы. Можно попробовать решить проблему так: на экране установки, предлагающем нажать F6 для установки SCSI или RAID контроллера, надо нажать F5 и выбрать пункт \texttt{Standard PC} из предложенного меню. @@ -213,77 +174,133 @@ Other \end{verbatim} -После того, как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. Согласно нашему файлу конфигурации, виртуальная машина будет закрыта и нам предоставится удачная возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, после чего запускаем виртуальную машину и соединяемся с консолью: +После того как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. В соответствии с файлом конфигурации, +виртуальная машина при перезагрузке будет завершена, и нам предоставится возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, +после чего виртуальную машину можно будет запускать вновь и соединяться с её консолью: \begin{verbatim} -# xm create -c /etc/xen/winXP128 -Using config file "/etc/xen/winXP128". -Started domain WinXP128 +# xm create /etc/xen/winxp +Using config file "/etc/xen/winxp". +Started domain winxp +% vncviewer :0 \end{verbatim} -VNC: -\begin{verbatim} -% vncviewer vermont:2 -\end{verbatim} +\subsection{Паравиртуальные драйверы} -Обратите внимание на параметр \rq{}:2\rq{}, так как изменился XenID (посмотреть его можно командой xm list). Не особо волнуйтесь насчет проблем VNC при работе с мышью. Как только вы завершите установку можно настроить службу терминального доступа и использовать Windows Remote Desktop или rdesktop. Если вы по-прежнему хотите использовать VNC, то обратитесь к этому разделу руководства. +Аппаратная виртуализация берёт на себя основные трудности по переключению контекстов гостевых операционных систем и хост-системы, но она ничего (пока что) не делает для ускорения ввода/вывода. Как только задача требует ввода/вывода любая система виртуализации (но не паравиртуализации!) существенно замедляет свою работу. +Одна из главных причин разработки и использования паравиртуальных драйверов — возможность существенного повышения производительности работы гостевых систем, работающих в режиме полной виртуализации. + +Во второй половине 2007 года появились первая реализация свободных паравиртуальных драйверов под Windows, сделанная Джеймсом Харпером (James Harper). + +В конце 2007 года вышла версия 0.5.0 драйверов, которые можно рассматривать как экспериментальные. Их можно ставить в виртуальную машину и играться с ними, но их пока что ни в коем случае не стоит использовать на производственных системах. + +В настоящий момент свободные паравиртуальные драйверы Xen для Windows находятся в сыром состоянии и могут использоваться исключительно в экспериментальных целях. + +Последняя известная (на момент правки) версия свободных паравиртуальных драйверов — 0.9.10. + +\subsection{Проброс PCI-устройств внутрь домена Windows} + +Начиная с Xen 3.2.0 при наличии в системе аппаратной поддерживи виртуализации ввода/вывода +Intel VT-d (не путать с виртуализацией процессора VT-x!) +существует возможность выполнять монопольное выделение PCI-устройства +домену Xen. +Раньше это было возможно для паравиртуальных доменов, но было невозможно для +HVM-доменов, а именно в таком исполняется Windows. + +При выполнении проброс PCI-устройства Windows работает с ним напрямую, +на полной скорости, и использую собственные драйвера. +Это позволяет обойти проблемы с производительностью, которые есть при эмуляции устройств, +а также задействовать все возможности устройства, о которых знает драйвер. + +При выделении устройства гостевому оно становится +недоступным для домена 0 и используется гостевым доменом монопольно. + +Графический адаптер является очень специфическим устройством, +монопольное выделение которого пока не поддерживается. +Это означает, что запускать Counter Strike внутри гостевого +домена Xen и при этом напрямую использовать графическую карту +пока не получится. \subsection{Вопросы и ответы} -Ниже приводятся выдержки из обсуждения \url{http://forum.sysadmins.ru/viewtopic.php?p=7941589\#7941589}, -в котором были затронуты многие распространённые вопросы, касающиеся запуска Windows в HVM-домене. -Стиль дискуссии сохранён. +\textbf{Вопрос: Виртуальная машина начала загружаться с образа компакт-диска или жёсткого диска. Спустя некоторое время её экран стал чёрным. Потреблённое процессорное время увеличивается, значит виртуальная машина работает. Но на экране нет никакой реакции. Что делать?} -\textbf{Вопрос: Виртуалка начала бутиться с сидюка/винта, но при этом весь проц съела и черный экран виртуалки. Аптайм виртуалки увеличивается, значит сама виртуалка не повисла, наверно. Есть какие-нибуть идеи?} +Да, скорее всего виртуальная машина нормально работает. +Подключение к экрану виртуальной машины выполняется через VNC, +при смене разрешения экрана (а при загрузке Windows +именно это и происходит) нужно переподключаться, +то есть закрывать VNC-клиент, а потом запускать его вновь. -Да, скорее всего виртуалка нормально работает. -вы подключаетесь к экрану виртуалки через VNC, -при смене разрешения экрана (а при загрузке винды -именно это и происходит) его нужно передергивать, -то есть закрывать и подключаться вновь. +\textbf{Вопрос: не успел нажать никакую кнопку, когда было соответствующее приглашение при загрузке с компакт-диска, и виртуальная машина попыталась загрузиться с пустого жёсткого диска. А как вообще указать откуда именно будет выполняться загрузка виртуальной машины?} -\textbf{Вопрос: эникей не успевал нажать при буте с сидюка и виртуалка пытлас бутиться с пустого винта. А как вообще указать откуда она бутится?} - -Да, в соответствии с вашим конфигом система пытается загрузиться с +Откуда именно будет загружаться виртуальная машина +определяется её конфигурационным файлом, а точнее параметром +\texttt{boot}, указанном в нём. привода CDROM. \begin{itemize} -\item boot=\rq{}d\rq{} — загружатсья с CDROM\rq{}а (мнемоническое правило — «с диска D:» ) -\item boot=\rq{}c\rq{} — загружатсья с диска (мнемоническое правило — «с диска C:» ) +\item \texttt{boot=\rq{}d\rq{}} — загружаться с CDROM\rq{}а (мнемоническое правило — «с диска D:» ) +\item \texttt{boot=\rq{}c\rq{}} — загружаться с диска (мнемоническое правило — «с диска C:» ) \end{itemize} -\textbf{Вопрос: а звук в виртуалке не настраивал? Или хотя-бы через rdesktop?} +\textbf{Вопрос: должен ли работать звук в виртуальной машине при подключении через RDP?} -Звук настраивали и всё работет. -Звук действительно слушается именно через rdesktop, -впрочем что и касается основной работы (кроме инсталляци) — работать лучше rdesktop. +Звук должен работать и работает. +Звук действительно можно прослушать только при подключении при помощи \textbf{rdesktop} по протоколу RDP. +Вообще с системой работать удобнее через RDP, чем через служебное VNC-подключение. -При заходе через \textit{rdesktop}, для того чтобы +При заходе через \textbf{rdesktop}, для того чтобы звук проигрывался локально, используйте ключ \textit{-rsound}: \begin{verbatim} rdesktop -rsound 192.168.1.1 \end{verbatim} -VNC (а точнее libvnc), с которым скомпилен Xen имеет множество ограничений и его стоит рассматривать как аврийный вариант. А так конечно же заходить на систему через rdesktop, сразу же после того как на ней поднимается стек TCP/IP. (или в крайнейм случае поставить полноценный VNC-сервер внутрь домена с Windows). +\textbf{Вопрос: мышь внутри виртуальной машины и точка-курсор соответствующая указателю VNC-клиента разбегаются. При использовании RDP-подключения такого нет. Почему?} -Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen. +Расхождение одной и второй мыши связано с тем, +что \textbf{qemu-dm} эмулирует мышь, устройство относительно позиционирования, +на основе информации полученной от VNC-подключения, устройства абсолютного позиционирования. +Эмуляция выполняется с допущениями, поэтому точного совпадения курсоров нет. + +VNC-подключение имеет множество других ограничений в сравнении с RDP, +и его стоит рассматривать как аварийный вариант. +Если возможности использовать RDP-подключение нет, стоит рассмотреть хотя бы возможность +использования полноценного VNC-сервера внутри виртуальной машины. + +Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, +или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen. Иначе у вас будет два курсора, одному из которых будет соответствовать ваша реальная мышь, а вторым виртуальная. -\textbf{Вопрос: Как поменять сд-имедж или диск физического привода не перезапуская виртуалки?} +\textbf{Вопрос: Как поменять образ компакт-диска внутри виртуальной машины без её перезапуска?} -Есть два метода. Один для дома для семьи (и он по умолчанию в новых версиях Xen блокируется и его надо явно разрешать) и второй -промышленный. +Есть два метода. Один для домашнего использования (он является небезопасным и по умолчанию в новых версиях Xen блокируется; чтобы использовать, его надо явно разрешать) +и второй — промышленный. -Первый: в VNC окне нажать ctr-alt-2 что переключит вас на консоль qemu, дальше использовать eject и прочие команды (я думаю там всё понятно, если не понятно, спрашивайте), а потом когда выполнили свое дело, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы (подробнее: (Xen-devel) About change of CD-ROM). +Первый способ. +В VNC-окне нажать ctr-alt-2, что переключит вас на консоль \textbf{qemu}. +Дальше использовать \textbf{eject} и прочие команды для смены диска. +После того как образ заменён, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы. -Второй: использовать xm block-attach, xm block-detach +По умолчанию в новых версиях Xen эта возможность отключена. +Для того чтобы её включить, нужно указать в конфигурационном +файле домена + +\begin{verbatim} +monitor=1 +\end{verbatim} + +(однако это считается небезопасным, см. ниже). + +Второй: использовать \textbf{xm} \texttt{block-attach}, \textbf{xm} \texttt{block-detach} (подробнее: Xen-block-attach). -Второй метод намного более правильный и более секюрный (первый блокируется из соображений безопасности ибо из консоли qemu можно намутить с доменом всё что угодно, и естественно, что это абсолютно не зависит от того, под каким юзером вы вошли в гостевой домен). -Кроме того, второй метод позволяет менять не только сидюки, но и винту и сетевышки и всё что вашей душеньке угодно (особенно это касается PV-доменов, ибо у HVM с этим простора всё же поменьше). +Второй метод намного более правильный и более безопасный (первый является небезопасным, поскольку из консоли \textbf{qemu} можно сделать с доменом всё что угодно, +и, естественно, что это абсолютно не зависит от того, под каким пользователем вы вошли в гостевой домен). +Кроме того, второй метод позволяет менять не только компакт-диски, но и жёсткие дискаи и сетевые карты +(это касается PV-доменов, у HVM-доменов этот метод будет работать только при использовании паравиртуальных драйверов). -\textbf{Вопрос: ОЗУ на серваке 4 или больше гигов? А то у меня х86\_64, с 4гигами ядро вешается на такой строчке:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3\rq{}мя гигами -- нормально.} +\textbf{Вопрос: Можно ли запускать HVM-домены на серверах с ОЗУ более 4 GB? В системе х86\_64 с 4GB ядро зависает с сообщением:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3GB — нормально.} Это нормально. Точнее, это не совсем нормально, но это возможно. @@ -291,17 +308,17 @@ Можно попробовать следующие решения: \begin{enumerate} -\item Использовать параметр ядра agp=off -\item Добавить модуль intel\_agp в чёрный список незагружаемых модулей -\item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста. -\item Использовать AMD +\item Использовать параметр ядра \texttt{agp=off}; +\item Добавить модуль intel\_agp в чёрный список незагружаемых модулей; +\item Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста; +\item Использовать AMD. \end{enumerate} -\textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen не выделить(да и незачем особо). Поддержка PAE включена.} +\textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen выделить не получается. Поддержка PAE включена.} -Насколько я понимаю, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне). -Вероятно, вы имеете в виду баг \#971, из-за которого дейтвительно нельзя было увидеть больше 4G памяти в HVM домене. -Если так, то он уже давно пофикшен и этой проблемы быть не должно. +Вероятно, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне). +Скорее всего, проблема связана с багом \#971, из-за которого действительно нельзя было увидеть больше 4G памяти в HVM-домене. +Если так, то он уже давно исправлен и этой проблемы быть не должно. Проверьте, что у вас: \begin{enumerate} @@ -309,22 +326,17 @@ \item Если в HVM-домене запускается Windows, в конфигурации загрузчика (boot.ini) присутствует ключ /PAE \end{enumerate} -\subsection{Дополнительная информация} -\subsubsection{Описание процесса запуска Windows в домене XenU} +\textbf{Вопрос: как передать Windows-системе, запущенной внутри домена Xen, флоппи-диск, если есть его образ?} +Используйте параметр \texttt{fda} в конфигурационном файле. + +\begin{verbatim} +fda='/iso/winxp.img' +\end{verbatim} + +\section{Дополнительная информация} +\subsection{Описание процесса запуска Windows в домене XenU} \begin{itemize} -\item \htmladdnormallinkfoot{Windows XP в Xen}{http://xgu.ru/wiki/Windows\_XP\_в\_Xen} (рус.) -\item \htmladdnormallinkfoot{Xen w/ IntelVT->Windows Success Report}{http://lists.xensource.com/archives/html/xen-users/2006-06/msg00452.html} (англ.) -\item \htmladdnormallinkfoot{Запуск Windows XP в окружении Xen3}{http://dreamcatcher.ru/docs/xen3\_windows.html} (рус.) -\item \htmladdnormallinkfoot{How to Install Windows on Xen 3.0}{http://www.xensource.com/files/xen\_install\_windows.pdf} (англ.) -\item \htmladdnormallinkfoot{Building Xen from source on Ubuntu to run Windows}{http://linuxvirtualization.com/articles/2006/08/03/xen-on-ubuntu-for-windows} (англ.) +\item \htmladdnormallinkfoot{Инсталляция Windows XP в HVM-домене Xen}{http://xgu.ru/wiki/xen/winxp} (рус.) \end{itemize} -\subsubsection{Проблемы производительности в виртуализированных машинах Windows} -\begin{itemize} -\item \htmladdnormallinkfoot{poor harddisk performance HVM domain}{http://lists.xensource.com/archives/html/xen-users/2006-05/msg00097.html} (англ.) -\item \htmladdnormallinkfoot{By 2009, there will be three competitive hypervisor architectures ...}{http://www.stanford.edu/class/ee380/Abstracts/060125-stanford0601.pdf} (англ.) -\item \htmladdnormallinkfoot{Intel® Virtualization Technology for Directed I/O}{http://www.intel.com/technology/itj/2006/v10i3/2-io/1-abstract.htm} (англ.) -\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. (англ.) -\end{itemize} - diff -r 75853b740e5a -r 4a790b55d005 xen/resources.tex --- a/xen/resources.tex Sun Jul 06 23:46:33 2008 +0300 +++ b/xen/resources.tex Wed Jul 09 08:50:18 2008 +0300 @@ -67,7 +67,6 @@ уменьшение памяти домена 0 выполняться не будет. Пример настройки: - \begin{verbatim} (dom0-min-mem 0) \end{verbatim} @@ -107,11 +106,10 @@ $ sudo xm create dhcp Using config file "/etc/xen/dhcp". Started domain dhcp - $ sudo xm list -Name ID Mem VCPUs State Time(s) -Domain-0 0 1171 1 r----- 5274.5 -dhcp 8 128 1 -b---- 2.8 +Name ID Mem VCPUs State Time(s) +Domain-0 0 1171 1 r----- 5274.5 +dhcp 8 128 1 -b---- 2.8 \end{verbatim} Гостевая операционная система видит 128MB: @@ -119,15 +117,13 @@ \begin{verbatim} $ sudo xm console dhcp Debian GNU/Linux lenny/sid dhcp tty1 - dhcp login: root Password: - dhcp:~# free - total used free shared buffers cached -Mem: 131220 33132 98088 0 1524 12204 --/+ buffers/cache: 19404 111816 -Swap: 0 0 0 + total used free shared buffers cached +Mem: 131220 33132 98088 0 1524 12204 +-/+ buffers/cache: 19404 111816 +Swap: 0 0 0 \end{verbatim} Увеличиваем объём доступной домену оперативной памяти: @@ -135,23 +131,20 @@ \begin{verbatim} %$ sudo xm mem-set dhcp 256 %$ sudo xm list -Name ID Mem VCPUs State Time(s) -Domain-0 0 1171 1 r----- 5329.8 -dhcp 8 256 1 -b---- 2.9 +Name ID Mem VCPUs State Time(s) +Domain-0 0 1171 1 r----- 5329.8 +dhcp 8 256 1 -b---- 2.9 \end{verbatim} Гостевая операционная система теперь видит 256MB: \begin{verbatim} $ sudo xm console dhcp - -dhcp:~# -dhcp:~# dhcp:~# free - total used free shared buffers cached -Mem: 262144 33336 228808 0 1620 12228 --/+ buffers/cache: 19488 242656 -Swap: 0 0 0 + total used free shared buffers cached +Mem: 262144 33336 228808 0 1620 12228 +-/+ buffers/cache: 19488 242656 +Swap: 0 0 0 \end{verbatim} В настоящий момент изменение памяти на лету \textit{НЕ} поддерживает