xg-scale

diff windowsxp.tex @ 4:253d66dd74bb

Добавлено подробное описание управления памятью домена и выделением устройств домену
author Igor Chubin <igor@chub.in>
date Sun Jul 06 23:27:46 2008 +0300 (2008-07-06)
parents
children 4a790b55d005
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/windowsxp.tex	Sun Jul 06 23:27:46 2008 +0300
     1.3 @@ -0,0 +1,330 @@
     1.4 +\section{Windows XP в Xen}
     1.5 +
     1.6 +
     1.7 +Здесь рассматривается процедура подготовки и запуска домена с Windows в системе виртуализации Xen на платформе с аппаратной поддержкой виртуализации (HVM). Выполнять \textit{Windows в паравиртуальном режиме} (т.е. без использования аппаратных архитектурных расширений виртуализации) на сегодняшний день нельзя. Возможно, это можно будет сделать в будущем. 
     1.8 +Подробности на странице \htmladdnormallinkfoot{Windows в паравиртуальном домене Xen}{http://xgu.ru/wiki/Paravirtualized\_Windows}.
     1.9 +
    1.10 +\subsection{Предварительные требования}
    1.11 +В первую очередь, для установки Windows XP, как и любой другой системы с закрытым кодом, необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). Таблицу поддержки аппаратной виртуализации процессорами можно найти \htmladdnormallinkfoot{здесь}{http://xgu.ru/wiki/xen/hw}. 
    1.12 +
    1.13 +Поддержка аппаратной виртуализации должна быть и у Xen.
    1.14 +При сборке из исходных текстов понадобится установить в систему:
    1.15 +\begin{itemize}
    1.16 +\item  \textbf{dev86} -- Ассемблер и компоновщик для реального режима 80x86. Этот пакет необходим для сборки кода BIOS, запускаемого в (виртуальном) реальном режиме. Если пакет dev86 недоступен для x86\_64, то можно использовать i386 версию.
    1.17 +\item  \textbf{LibVNCServer} -- Немодифицируемый VGA дисплей, клавиатуру и мышь можно виртуализировать с помощью библиотеки vncserver. 
    1.18 +\item  \textbf{SDL-devel}, \textbf{SDL} -- Если пакеты SDL и SDL-devel не были установлены по умолчанию, то взять их можно из системы портов или скомпилировав из исходных текстов.
    1.19 +\end{itemize}
    1.20 +
    1.21 +\subsubsection{Замечание для пользователей Debian}
    1.22 +При выполнении вышеуказанной процедуры на 
    1.23 +Debian GNU/Linux необходимо учесть, что 
    1.24 +пакет \textbf{dev86} в Debian разбит на два пакета -- \textbf{bin86} и \textbf{bcc} -- и перед компиляцией Xen из архива исходных текстов 
    1.25 +должны быть установлены оба эти пакета (\htmladdnormallinkfoot{подробнее}{http://lists.xensource.com/archives/html/xen-users/2006-02/msg00207.html}).
    1.26 +
    1.27 +\begin{verbatim}
    1.28 +$ apt-cache show bin86 bcc
    1.29 +Package: bin86
    1.30 +...
    1.31 +Description: 16-bit x86 assembler and loader
    1.32 +This is the as86 and ld86 distribution written by Bruce Evans.
    1.33 +It's a complete 8086 assembler and loader which can make 32-bit
    1.34 +code for the 386+ processors (under Linux it's used only to create
    1.35 +the 16-bit bootsector and setup binaries).
    1.36 +
    1.37 +Package: bcc
    1.38 +...
    1.39 +Description: 16-bit x86 C compiler
    1.40 +This is a C-compiler for 8086 cpus which is important for the
    1.41 +development of boot loaders or BIOS related 8086 code.
    1.42 +
    1.43 +It is possible to run 8086 code under i386 Linux using an emulator,
    1.44 +`elksemu', also included in this package.
    1.45 +\end{verbatim}
    1.46 +
    1.47 +\subsection{Конфигурационный файл домена}
    1.48 +В терминологии Xen гостевые домены, исполняющиеся в режиме аппаратной виртуализации называются HVM-доменами. 
    1.49 +Для облегчения процесса конфигурирования такого домена служит образцово-показательный конфигурационный файл \texttt{/etc/xen/xmexample.hvm} (путь может отличаться).
    1.50 +В нём помимо опций использующихся в паравиртуальных доменах 
    1.51 +есть и сугубо специфические:
    1.52 +\begin{itemize}
    1.53 +\item  \textbf{kernel} -- VMX firmware loader, /usr/lib/xen/boot/vmxloader
    1.54 +\item  \textbf{builder} -- Функции сборки домена. VMX-домены используют vmx builder
    1.55 +\item  \textbf{acpi} -- Задействует ACPI VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
    1.56 +\item  \textbf{apic} -- Задействует APIC VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
    1.57 +\item  \textbf{pae} -- Задействует PAE VMX-домена, по умолчанию равно \dq{}0\dq{} (отключено)
    1.58 +\item  \textbf{vif} -- Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных(\dq{}нормальных\dq{}, с модифицированным ядром) доменах.
    1.59 +\item  \textbf{disk} -- Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа:
    1.60 +\end{itemize}
    1.61 +
    1.62 +\begin{verbatim}
    1.63 +phy:UNAME,ioemu:DEV,MODE,
    1.64 +\end{verbatim}
    1.65 +
    1.66 +где \textbf{UNAME} -- имя устройства, \textbf{DEV} -- имя диска, как его видит домен и \textbf{MODE} принимает значения \textbf{r} для read-only и \textbf{w} для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах.
    1.67 +
    1.68 +Если используется образ диска, то строка принимает вид:
    1.69 +
    1.70 +\begin{verbatim}
    1.71 +file:FILEPATH,ioemu:DEV,MODE
    1.72 +\end{verbatim}
    1.73 +
    1.74 +Если используется больше одного диска, то они разделяются запятой. Например:
    1.75 +
    1.76 +\begin{verbatim}
    1.77 +disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w']
    1.78 +\end{verbatim}
    1.79 +
    1.80 +\begin{itemize}
    1.81 +\item  \textbf{cdrom} -- Образ CD-ROM. По умолчанию, для Domain0 это значение равно /dev/cdrom. Внутри VMX-домена CD-ROM будет виден как /dev/hdc.
    1.82 +\item  \textbf{boot} -- Загрузка с floppy (a), hard disk (c) или CD-ROM (d).
    1.83 +\item  \textbf{device\_model} -- Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже.
    1.84 +\item  \textbf{sdl} -- Задействует библиотеку SDL для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
    1.85 +\item  \textbf{vnc} -- Задействует библиотеку VNC для отображения графики, по умолчанию равно \dq{}0\dq{} (отключено)
    1.86 +\item  \textbf{vncviewer} -- Если vnc=1 и vncviewer=0, пользователь может использовать vncviewer для подключения к VMX-домену. Например:
    1.87 +\end{itemize}
    1.88 +
    1.89 +\begin{verbatim}
    1.90 +$ vncviewer domain0_IP_address:VMX_domain_id
    1.91 +\end{verbatim}
    1.92 +
    1.93 +\begin{itemize}
    1.94 +\item  \textbf{ne2000} -- Задействует режим совместимости ne2000, по умолчанию равно \dq{}0\dq{} (отключено, используется pcnet)
    1.95 +\item  \textbf{serial} -- Перенаправление последовательных портов гостевого домена на реальное устройство.
    1.96 +\item  \textbf{usb} -- Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать.
    1.97 +\item  \textbf{usbdevice} -- Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB:
    1.98 +\end{itemize}
    1.99 +
   1.100 +\begin{verbatim}
   1.101 +usbdevice='mouse'
   1.102 +\end{verbatim}
   1.103 +
   1.104 +\begin{itemize}
   1.105 +\item  \textbf{localtime} -- Установка локального времени. По умолчанию равно \dq{}0\dq{}, т.е UTC
   1.106 +\item  \textbf{enable-audio} -- Поддержка звука. Находится в разработке.
   1.107 +\item  \textbf{full-screen} -- Поддержка полноэкранного режима. Находится в разработке.
   1.108 +\item  \textbf{nographic} -- Другой способ перенаправить вывод на последовательный порт. В этом случае опции \rq{}sdl\rq{} или \rq{}vnc\rq{} не работают. Использование данного режима не рекомендуется.
   1.109 +\end{itemize}
   1.110 +
   1.111 +\subsection{Проверка на поддержку VMX}
   1.112 +После загрузки самого Dom0 убедимся в наличии поддержки VMX (процессоры Intel):
   1.113 +
   1.114 +\begin{verbatim}
   1.115 +# xm dmesg | grep VMX
   1.116 +(XEN) VMXON is done
   1.117 +(XEN) VMXON is done
   1.118 +...
   1.119 +(XEN) VMXON is done
   1.120 +(XEN) VMXON is done
   1.121 +(XEN) VMXON is done
   1.122 +#
   1.123 +\end{verbatim}
   1.124 +
   1.125 +Если используется процессор AMD:
   1.126 +
   1.127 +\begin{verbatim}
   1.128 +# xm dmesg | grep -i svm
   1.129 +(XEN) AMD SVM Extension is enabled for cpu 0.
   1.130 +(XEN) AMD SVM Extension is enabled for cpu 1.
   1.131 +\end{verbatim}
   1.132 +
   1.133 +В общем случае:
   1.134 +
   1.135 +\begin{verbatim}
   1.136 +# xm info | grep caps
   1.137 +hw_caps                : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
   1.138 +xen_caps               : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
   1.139 +\end{verbatim}
   1.140 +
   1.141 +hvm-3.0-x86\_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.
   1.142 +
   1.143 +Если у вас другое сообщение, то проверьте настройки BIOS и задействуйте поддержку аппаратной виртуализации, 
   1.144 +если она выключена.
   1.145 +
   1.146 +\subsection{Создание дискового раздела для гостевой системы}
   1.147 +Создаем образ диска Xen:
   1.148 +
   1.149 +\begin{verbatim}
   1.150 +    # mkdir -p /root/xenimages
   1.151 +    # cd /root/xenimages
   1.152 +    # dd if=/dev/zero of=WS128.img bs=1M count=4096
   1.153 +\end{verbatim}
   1.154 +
   1.155 +Также необходимо создать iso-образ системы WinXP -- ServicePack2. В данном случае, разместим его в каталоге \texttt{/root/xenimages}.
   1.156 +
   1.157 +На основе эталонного файла конфигурации создадим свой собственный:
   1.158 +
   1.159 +\begin{verbatim}
   1.160 +    # cat /etc/xen/winXP128
   1.161 +    kernel = "/usr/lib/xen/boot/hvmloader"
   1.162 +    builder='hvm'
   1.163 +    memory = 512
   1.164 +    name = "WinXP128"
   1.165 +    vcpus=1
   1.166 +    pae=0
   1.167 +    acpi=0
   1.168 +    apic=0
   1.169 +    cpus = ""
   1.170 +    vif = [ 'type=ioemu, bridge=xenbr0' ]
   1.171 +    disk = [ 
   1.172 +      'file:/root/xenimages/winXP128.img,ioemu:hda,w',
   1.173 +      'file:/root/xenimages/en_winxp_pro_with_sp2.iso,ioemu:hdc:cdrom,r'
   1.174 +    ]
   1.175 +    on_poweroff = 'destroy'
   1.176 +    on_reboot   = 'destroy'
   1.177 +    on_crash    = 'destroy'
   1.178 +    device_model = '/usr/lib/xen/bin/qemu-dm'
   1.179 +    boot='d'
   1.180 +    sdl=0
   1.181 +    vnc=1
   1.182 +    vncviewer=0
   1.183 +    stdvga=0
   1.184 +    serial='pty'
   1.185 +    ne2000=0
   1.186 +\end{verbatim}
   1.187 +
   1.188 +Обратите внимание на то, что указан параметр boot=\rq{}d\rq{}, что необходимо для установки. Впоследствии его необходимо заменить на \dq{}boot=\rq{}c\rq{}\dq{}. Доступ к гостевому домену будет осуществляться через VNC, использование SDL не предполагается.
   1.189 +
   1.190 +\subsection{Запуск домена и инсталляция гостевой системы}
   1.191 +Начинаем установку и подсоединяемся к домену с помощью VNC -- сразу после создания домена подключаемся к нему с помощью vncviewer.
   1.192 +
   1.193 +\begin{verbatim}
   1.194 +# xm create -c /etc/xen/winXP128
   1.195 +Using config file "/etc/xen/winXP128".
   1.196 +Started domain WinXP128
   1.197 +\end{verbatim}
   1.198 +
   1.199 +Подключение к VNC:
   1.200 +
   1.201 +\begin{verbatim}
   1.202 +% vncviewer vermont:1
   1.203 +\end{verbatim}
   1.204 +
   1.205 +С установкой могут быть проблемы. Можно попробовать решить проблему так: на экране установки, предлагающем нажать F6 для установки SCSI или RAID контроллера, надо нажать F5 и выбрать пункт \texttt{Standard PC} из предложенного меню.
   1.206 +
   1.207 +\begin{verbatim}
   1.208 +ACPI Multiprocessor PC 
   1.209 +ACPI Uniprocessor PC 
   1.210 +Advanced Configuration and Power Interface (ACPI) PC 
   1.211 +Compaq SystemPro Multiprocessor or 100% Compatible PC 
   1.212 +MPS Uniprocessor PC 
   1.213 +MPS Multiprocessor PC 
   1.214 +Standard PC 
   1.215 +Standard PC with C-Step i486 
   1.216 +Other
   1.217 +\end{verbatim}
   1.218 +
   1.219 +После того, как программа установки Windows отформатирует диск и скопирует на него необходимые файлы, выполняется перезагрузка. Согласно нашему файлу конфигурации, виртуальная машина будет закрыта и нам предоставится удачная возможность отредактировать параметр \texttt{boot=\rq{}c\rq{}}, после чего запускаем виртуальную машину и соединяемся с консолью:
   1.220 +
   1.221 +\begin{verbatim}
   1.222 +# xm create -c /etc/xen/winXP128
   1.223 +Using config file "/etc/xen/winXP128".
   1.224 +Started domain WinXP128
   1.225 +\end{verbatim}
   1.226 +
   1.227 +VNC:
   1.228 +
   1.229 +\begin{verbatim}
   1.230 +% vncviewer vermont:2
   1.231 +\end{verbatim}
   1.232 +
   1.233 +Обратите внимание на параметр \rq{}:2\rq{}, так как изменился XenID (посмотреть его можно командой xm list). Не особо волнуйтесь насчет проблем VNC при работе с мышью. Как только вы завершите установку можно настроить службу терминального доступа и использовать Windows Remote Desktop или rdesktop. Если вы по-прежнему хотите использовать VNC, то обратитесь к этому разделу руководства.
   1.234 +
   1.235 +
   1.236 +\subsection{Вопросы и ответы}
   1.237 +Ниже приводятся выдержки из обсуждения \url{http://forum.sysadmins.ru/viewtopic.php?p=7941589\#7941589}, 
   1.238 +в котором были затронуты многие распространённые вопросы, касающиеся запуска Windows в HVM-домене.
   1.239 +Стиль дискуссии сохранён.
   1.240 +
   1.241 +\textbf{Вопрос: Виртуалка начала бутиться с сидюка/винта, но при этом весь проц съела и черный экран виртуалки. Аптайм виртуалки увеличивается, значит сама виртуалка не повисла, наверно. Есть какие-нибуть идеи?}
   1.242 +
   1.243 +Да, скорее всего виртуалка нормально работает.
   1.244 +вы подключаетесь к экрану виртуалки через VNC,
   1.245 +при смене разрешения экрана (а при загрузке винды
   1.246 +именно это и происходит) его нужно передергивать,
   1.247 +то есть закрывать и подключаться вновь.
   1.248 +
   1.249 +\textbf{Вопрос: эникей не успевал нажать при буте с сидюка и виртуалка пытлас бутиться с пустого винта. А как вообще указать откуда она бутится?}
   1.250 +
   1.251 +Да, в соответствии с вашим конфигом система пытается загрузиться с
   1.252 +привода CDROM.
   1.253 +
   1.254 +\begin{itemize}
   1.255 +\item  boot=\rq{}d\rq{} — загружатсья с CDROM\rq{}а (мнемоническое правило — «с диска D:» )
   1.256 +\item  boot=\rq{}c\rq{} — загружатсья с диска (мнемоническое правило — «с диска C:» )
   1.257 +\end{itemize}
   1.258 +
   1.259 +\textbf{Вопрос: а звук в виртуалке не настраивал? Или хотя-бы через rdesktop?}
   1.260 +
   1.261 +Звук настраивали и всё работет.
   1.262 +Звук действительно слушается именно через rdesktop,
   1.263 +впрочем что и касается основной работы (кроме инсталляци) — работать лучше rdesktop.
   1.264 +
   1.265 +При заходе через \textit{rdesktop}, для того чтобы 
   1.266 +звук проигрывался локально, используйте ключ \textit{-rsound}:
   1.267 +\begin{verbatim}
   1.268 +  rdesktop -rsound 192.168.1.1
   1.269 +\end{verbatim}
   1.270 +
   1.271 +VNC (а точнее libvnc), с которым скомпилен Xen имеет множество ограничений и его стоит рассматривать как аврийный вариант. А так конечно же заходить на систему через rdesktop, сразу же после того как на ней поднимается стек TCP/IP. (или в крайнейм случае поставить полноценный VNC-сервер внутрь домена с Windows).
   1.272 +
   1.273 +Если вы всё же используете встроенный VNC, то желательно отключить аппаратное ускорение мыши в Control Panel, или перейти на эмуляцию другого устройства (не мыши, а планшета) в Xen.
   1.274 +Иначе у вас будет два курсора, одному из которых будет соответствовать ваша реальная мышь, а вторым виртуальная.
   1.275 +
   1.276 +\textbf{Вопрос: Как поменять сд-имедж или диск физического привода не перезапуская виртуалки?}
   1.277 +
   1.278 +Есть два метода. Один для дома для семьи (и он по умолчанию в новых версиях Xen блокируется и его надо явно разрешать) и второй
   1.279 +промышленный.
   1.280 +
   1.281 +Первый: в VNC окне нажать ctr-alt-2 что переключит вас на консоль qemu, дальше использовать eject и прочие команды (я думаю там всё понятно, если не понятно, спрашивайте), а потом когда выполнили свое дело, нажать ctrl-alt-1 (не F1! не путайте!) для возврата в консоль (графическую) гостевой операционной системы (подробнее: (Xen-devel) About change of CD-ROM).
   1.282 +
   1.283 +Второй: использовать xm block-attach, xm block-detach
   1.284 +(подробнее: Xen-block-attach).
   1.285 +
   1.286 +Второй метод намного более правильный и более секюрный (первый блокируется из соображений безопасности ибо из консоли qemu можно намутить с доменом всё что угодно, и естественно, что это абсолютно не зависит от того, под каким юзером вы вошли в гостевой домен).
   1.287 +Кроме того, второй метод позволяет менять не только сидюки, но и винту и сетевышки и всё что вашей душеньке угодно (особенно это касается PV-доменов, ибо у HVM с этим простора всё же поменьше).
   1.288 +
   1.289 +\textbf{Вопрос: ОЗУ на серваке 4 или больше гигов?  А то у меня х86\_64, с 4гигами ядро вешается на такой строчке:\dq{}agpgart: Detected an Intel 965G Chipset.\dq{}, с 3\rq{}мя гигами -- нормально.}
   1.290 +
   1.291 +Это нормально.
   1.292 +Точнее, это не совсем нормально, но это возможно.
   1.293 +
   1.294 +Можно попробовать следующие решения:
   1.295 +
   1.296 +\begin{enumerate}
   1.297 +\item  Использовать параметр ядра agp=off
   1.298 +\item  Добавить модуль intel\_agp в чёрный список незагружаемых модулей
   1.299 +\item  Включить в BIOS фичу Memory Remap Feature (если она есть); это должно быть в конфигурации северного моста.
   1.300 +\item  Использовать AMD 
   1.301 +\end{enumerate}
   1.302 +
   1.303 +\textbf{Вопрос: На сервере 8Гб памяти, но больше 4 на гостевую систему в свободной версии xen не выделить(да и незачем особо). Поддержка PAE включена.}
   1.304 +
   1.305 +Насколько я понимаю, речь идёт о гостевом HVM-домене (потому что если это PV-домен и он не видит >4G, то это странно вдвойне).
   1.306 +Вероятно, вы имеете в виду баг \#971, из-за которого дейтвительно нельзя было увидеть больше 4G памяти в HVM домене.
   1.307 +Если так, то он уже давно пофикшен и этой проблемы быть не должно.
   1.308 +
   1.309 +Проверьте, что у вас:
   1.310 +\begin{enumerate}
   1.311 +\item  Если в HVM-домене запускается Linux, ядро под которым запускается HVM-домен, имеет поддержку PAE. (это HVM, поэтому может работать и ядро без PAE на хосте с PAE, но конечно видеть >4G оно при этом не будет)
   1.312 +\item  Если в HVM-домене запускается Windows, в конфигурации загрузчика (boot.ini) присутствует ключ /PAE
   1.313 +\end{enumerate}
   1.314 +
   1.315 +\subsection{Дополнительная информация}
   1.316 +\subsubsection{Описание процесса запуска Windows в домене XenU}
   1.317 +
   1.318 +\begin{itemize}
   1.319 +\item \htmladdnormallinkfoot{Windows XP в Xen}{http://xgu.ru/wiki/Windows\_XP\_в\_Xen} (рус.)
   1.320 +\item \htmladdnormallinkfoot{Xen w/ IntelVT->Windows Success Report}{http://lists.xensource.com/archives/html/xen-users/2006-06/msg00452.html} (англ.)
   1.321 +\item \htmladdnormallinkfoot{Запуск Windows XP в окружении Xen3}{http://dreamcatcher.ru/docs/xen3\_windows.html} (рус.)
   1.322 +\item \htmladdnormallinkfoot{How to Install Windows on Xen 3.0}{http://www.xensource.com/files/xen\_install\_windows.pdf} (англ.)
   1.323 +\item \htmladdnormallinkfoot{Building Xen from source on Ubuntu to run Windows}{http://linuxvirtualization.com/articles/2006/08/03/xen-on-ubuntu-for-windows} (англ.)
   1.324 +\end{itemize}
   1.325 +
   1.326 +\subsubsection{Проблемы производительности в виртуализированных машинах Windows}
   1.327 +\begin{itemize}
   1.328 +\item \htmladdnormallinkfoot{poor harddisk performance HVM domain}{http://lists.xensource.com/archives/html/xen-users/2006-05/msg00097.html} (англ.)
   1.329 +\item \htmladdnormallinkfoot{By 2009, there will be three competitive hypervisor architectures ...}{http://www.stanford.edu/class/ee380/Abstracts/060125-stanford0601.pdf} (англ.)
   1.330 +\item \htmladdnormallinkfoot{Intel® Virtualization Technology for Directed I/O}{http://www.intel.com/technology/itj/2006/v10i3/2-io/1-abstract.htm} (англ.)
   1.331 +\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.332 +\end{itemize}
   1.333 +