xg-scale

annotate xen/linux.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children
rev   line source
igor@0 1 \section{Linux в Xen}
igor@0 2
igor@0 3 На этой странице описана процедура подготовки
igor@0 4 гостевой системы под управлением Linux
igor@0 5 для работы в качестве пользовательского домена Xen
igor@0 6 (domain U).
igor@0 7
igor@0 8 \subsection{Начальные требования}
igor@0 9 <graphviz>
igor@0 10 digraph G \{
igor@0 11 \begin{verbatim}
igor@0 12 node [shape=rectangle];
igor@0 13 a [label="Подготовка\nдомена 0"];
igor@0 14 b [label="Подготовка\nдомена U",bgcolor=cyan,style=filled];
igor@0 15 c [label="Запуск и эксплуатация\nсистемы"];
igor@0 16 a -> b;
igor@0 17 b -> c;
igor@0 18 \end{verbatim}
igor@0 19 \}
igor@0 20 </graphviz>
igor@0 21
igor@0 22 Для выполнение описанных ниже действий
igor@0 23 необходимо наличие проинсталлированной и настроенной
igor@0 24 хост-системы Xen (домена 0).
igor@0 25 Как это сделать описано на странице Инсталляция Xen.
igor@0 26
igor@0 27 Предполагается, что в домене 0 установлен Debian GNU/Linux.
igor@0 28 Для других дистрибутивов некоторые действия будут выполняться
igor@0 29 иначе.
igor@0 30
igor@0 31 \subsection{Подготовка образа гостевой системы}
igor@0 32 \subsubsection{Подготовка дисковых разделов для использования в качестве дисков виртуальной машины}
igor@0 33 Для того чтобы разделы виртуальной машины
igor@0 34 соответствовали дисковым разделам реальной машины,
igor@0 35 используйте следующие шаги:
igor@0 36
igor@0 37 \begin{verbatim}
igor@0 38 node [shape=rectangle];
igor@0 39 a [label="Подготовка\nдомена 0"];
igor@0 40 b [label="Подготовка\nдомена U",bgcolor=cyan,style=filled];
igor@0 41 c [label="Запуск и эксплуатация\nсистемы"];
igor@0 42 a -> b;
igor@0 43 b -> c;
igor@0 44 \end{verbatim}
igor@0 45
igor@0 46 В том случае, если в виртуальной машине должно быть
igor@0 47 несколько дисковых разделов,
igor@0 48 подготовьте их.
igor@0 49 Например, для /usr:
igor@0 50
igor@0 51 \begin{verbatim}
igor@0 52 node [shape=rectangle];
igor@0 53 a [label="Подготовка\nдомена 0"];
igor@0 54 b [label="Подготовка\nдомена U"];
igor@0 55 c [label="Запуск и эксплуатация\nсистемы",bgcolor=cyan,style=filled];
igor@0 56 a -> b;
igor@0 57 b -> c;
igor@0 58 \end{verbatim}
igor@0 59
igor@0 60 Если вам необходимо пространство подкачки (swap) в виртуальной машине,
igor@0 61 подготовьте его с помощью команды mkswap:
igor@0 62
igor@0 63 \begin{verbatim}
igor@0 64 # mkswap /dev/hdX
igor@0 65 \end{verbatim}
igor@0 66
igor@0 67 \subsubsection{Подготовка файлов для использования в качестве диска виртуальной машины}
igor@0 68 Создайте файл для использования в качестве основного
igor@0 69 диска виртуальной машины.
igor@0 70
igor@0 71 \begin{verbatim}
igor@0 72 # dd if=/dev/zero of=/xen/images/debian-host1.img bs=1M count=<size_in_MB>
igor@0 73 # mkfs.ext3 /xen/images/debian-host1.img
igor@0 74 # mount -o loop /srv/debian-host1.img /mnt
igor@0 75 \end{verbatim}
igor@0 76
igor@0 77 В том случае, если в виртуальной машине должно быть
igor@0 78 несколько дисковых разделов,
igor@0 79 подготовьте их.
igor@0 80 Например, для /usr:
igor@0 81
igor@0 82 \begin{verbatim}
igor@0 83 # dd if=/dev/zero of=/xen/images/debian-host1-usr.img bs=1M count=<size_in_MB>
igor@0 84 # mkfs.ext3 /xen/images/debian-host1-usr.img
igor@0 85 # mkdir /mnt/usr
igor@0 86 # mount -o loop /xen/images/debian-host1-usr.img /mnt/usr
igor@0 87 \end{verbatim}
igor@0 88
igor@0 89 Если вам необходимо пространство подкачки (swap) в виртуальной машине,
igor@0 90 подготовьте его с помощью команды mkswap:
igor@0 91
igor@0 92 \begin{verbatim}
igor@0 93 # mkswap /dev/hdX
igor@0 94 \end{verbatim}
igor@0 95
igor@0 96 \subsubsection{Подготовка виртуальной системы под управлением Debian GNU/Linux}
igor@0 97
igor@0 98 \paragraph{Инсталляция ОС Debian GNU/Linux}
igor@0 99 Этот этап может быть выполнен проще,
igor@0 100 если использовать xen-tools.
igor@0 101 Ниже показано, как провести инсталляцию
igor@0 102 системы вручную.
igor@0 103
igor@0 104 Смотрите таже \url{http://www.debuntu.org/2006/05/14/51-how-to-installing-debian-etch-from-a-running-debian-based-system/1/}.
igor@0 105
igor@0 106 Запустите \textbf{debootstrap} для инсталляция базы
igor@0 107 системы:
igor@0 108
igor@0 109 \begin{verbatim}
igor@0 110 # debootstrap sarge /mnt http://debian.org.ua/debian
igor@0 111 \end{verbatim}
igor@0 112
igor@0 113 Скопируйте пакет ядром для работы с Xen,
igor@0 114 который был подготовлен ранее,
igor@0 115 в новую виртуальную машину:
igor@0 116
igor@0 117 \begin{verbatim}
igor@0 118 # cp linux-xen0-2.6.16-xen_10.00.Custom_i386.deb /mnt/root
igor@0 119 \end{verbatim}
igor@0 120
igor@0 121 Сделайте новую файловую систему корневой (с помощью chroot):
igor@0 122
igor@0 123 \begin{verbatim}
igor@0 124 # chroot /mnt /bin/bash
igor@0 125 \end{verbatim}
igor@0 126
igor@0 127 Проинсталлируйте пакет с ранее подготовленным
igor@0 128 ядро Xen:
igor@0 129
igor@0 130 \begin{verbatim}
igor@0 131 # dpkg -i /root/linux-xen0-2.6.16-xen_10.00.Custom_i386.deb
igor@0 132 \end{verbatim}
igor@0 133
igor@0 134 Измените запись, соответствующую корневой системе в файле /etc/fstab:
igor@0 135
igor@0 136 \begin{verbatim}
igor@0 137 # vi /etc/fstab
igor@0 138 /dev/hda1 / ext3 defaults,errors=remount-ro 0 1
igor@0 139 \end{verbatim}
igor@0 140
igor@0 141 Если используется несколько дисковых разделов
igor@0 142 в виртуальной машине, перечислите их:
igor@0 143
igor@0 144 \begin{verbatim}
igor@0 145 /dev/hda2 /usr ext3 defaults 0 2
igor@0 146 /dev/hda3 /var ext3 defaults 0 2
igor@0 147 ...
igor@0 148 \end{verbatim}
igor@0 149
igor@0 150 Запустите программу \textbf{base-config} для установки базовой
igor@0 151 системы Debian.
igor@0 152
igor@0 153 \begin{verbatim}
igor@0 154 # base-config new
igor@0 155 \end{verbatim}
igor@0 156
igor@0 157 Измените конфигурацию сети в виртуальной машине:
igor@0 158
igor@0 159 \begin{verbatim}
igor@0 160 # vi /etc/network/interfaces
igor@0 161 # vi /etc/resolv.conf
igor@0 162 # vi /etc/hosts
igor@0 163 \end{verbatim}
igor@0 164
igor@0 165 Отключите использование TLS,
igor@0 166 в противном случае работа системы может сильно замедлиться.
igor@0 167
igor@0 168 \begin{verbatim}
igor@0 169 # mv /lib/tls /lib/tls.disabled
igor@0 170 \end{verbatim}
igor@0 171
igor@0 172 В том случае, если используется дистрибутив Etch,
igor@0 173 проинсталлируйте \texttt{libc6-xen}.
igor@0 174
igor@0 175 \begin{verbatim}
igor@0 176 # apt-get install libc6-xen
igor@0 177 \end{verbatim}
igor@0 178
igor@0 179 Отключите лишние терминалы getty,
igor@0 180 а первый терминал направьте на файл \texttt{/dev/console}
igor@0 181 вместо \texttt{/dev/tty1}:
igor@0 182
igor@0 183 \begin{verbatim}
igor@0 184 1:2345:respawn:/sbin/getty 38400 /dev/console
igor@0 185 #2:23:respawn:/sbin/getty 38400 tty2
igor@0 186 #3:23:respawn:/sbin/getty 38400 tty3
igor@0 187 #4:23:respawn:/sbin/getty 38400 tty4
igor@0 188 #5:23:respawn:/sbin/getty 38400 tty5
igor@0 189 #6:23:respawn:/sbin/getty 38400 tty6
igor@0 190 \end{verbatim}
igor@0 191
igor@0 192 Если в виртуальной машине будут загружаться модули ядра,
igor@0 193 установить пакет \texttt{module-init-tools}
igor@0 194 (обязательно для ядер 2.6 domU).
igor@0 195
igor@0 196 \begin{verbatim}
igor@0 197 # apt-get install module-init-tools
igor@0 198 \end{verbatim}
igor@0 199
igor@0 200 На этом инсталляция ОС в виртуальной машине завершена,
igor@0 201 и можно завершить работу оболочки с изменённой корневой системой (chrooted shell).
igor@0 202
igor@0 203 \begin{verbatim}
igor@0 204 # exit
igor@0 205 \end{verbatim}
igor@0 206
igor@0 207 Если вы создавали несколько разделов в виртуальной машине,
igor@0 208 размонтируйте их, начиная с самой глубокой.
igor@0 209
igor@0 210 \begin{verbatim}
igor@0 211 # umount /mnt/usr
igor@0 212 # umount /mnt/var
igor@0 213 \end{verbatim}
igor@0 214
igor@0 215 После чего размонтируйте корневую файловую систему
igor@0 216 виртуальной машины.
igor@0 217
igor@0 218 \begin{verbatim}
igor@0 219 # umount /mnt
igor@0 220 \end{verbatim}
igor@0 221
igor@0 222 \paragraph{Конфигурирование виртуальной машины}
igor@0 223 Необходимо создать конфигурационный файл виртуальной
igor@0 224 машины.
igor@0 225 Пусть виртуальная машина называется debian-vm0.
igor@0 226
igor@0 227 \begin{verbatim}
igor@0 228 # vi /etc/xen/debian-vm0
igor@0 229 # Kernel to use
igor@0 230 kernel = "/boot/xen0-linux-2.6.16-xen"
igor@0 231 # Memory in megabytes
igor@0 232 memory = 128
igor@0 233 # Your domain's name
igor@0 234 name = "debian-vm0"
igor@0 235 # Root device
igor@0 236 root = "/dev/hda1 ro"
igor@0 237 # Don't forget to specify your bridge correctly here
igor@0 238 vif = [ 'mac=aa:00:00:00:00:d2, bridge=br-xen' ]
igor@0 239 \end{verbatim}
igor@0 240
igor@0 241 В том случае, если использует физический дисковый раздел:
igor@0 242
igor@0 243 \begin{verbatim}
igor@0 244 disk = [ 'phy:/dev/hdX,hda1,w' ]
igor@0 245 \end{verbatim}
igor@0 246
igor@0 247 В том случае, если используется несколько разделов:
igor@0 248
igor@0 249 \begin{verbatim}
igor@0 250 disk = [ 'phy:/dev/hdX,hda1,w', 'phy:/dev/hdY,hda2,w' ]
igor@0 251 \end{verbatim}
igor@0 252
igor@0 253 Если вместо раздела используется файл,
igor@0 254 конфигурация дисковой подсистемы выглядит так:
igor@0 255
igor@0 256 \begin{verbatim}
igor@0 257 disk = [ 'file:/xen/images/debian-host1.img,hda1,w' ]
igor@0 258 \end{verbatim}
igor@0 259
igor@0 260 В том случае, если используется несколько файлов,
igor@0 261 строка должна выглядеть так:
igor@0 262
igor@0 263 \begin{verbatim}
igor@0 264 disk = [ 'file:/xen/images/debian-host1.img,hda1,w', 'file:/xen/images/debian-host1-usr.img,hda2,w' ]
igor@0 265 \end{verbatim}
igor@0 266
igor@0 267 Обратите внимание на то, чтобы записи о диска в конфигурации
igor@0 268 виртуальной машины соответствовали файлу \texttt{/etc/fstab}
igor@0 269 операционной системы этой машины.
igor@0 270
igor@0 271 \subsubsection{Инсталляция и настройка Fedora Core в domU}
igor@0 272
igor@0 273 При условии, что домен 0 работает под управлением Debian GNU/Linux,
igor@0 274 а образ гостевой системы подмонтирован в каталог /mnt,
igor@0 275 процедура инсталляции выглядит следующим образом:
igor@0 276
igor@0 277 \begin{verbatim}
igor@0 278 %# apt-get install yum
igor@0 279 %# yum -c /tmp/yum-xen.conf --installroot=/mnt -y groupinstall Base
igor@0 280 \end{verbatim}
igor@0 281
igor@0 282 Пример конфигурационного файла \texttt{yum-xen.conf} (вы можете использовать другой репозиторий и другой уровень отладки):
igor@0 283
igor@0 284 \begin{verbatim}
igor@0 285 [main]
igor@0 286 cachedir=/var/cache/yum
igor@0 287 debuglevel=2
igor@0 288 logfile=/var/log/yum.log
igor@0 289 exclude=*-debuginfo
igor@0 290 gpgcheck=0
igor@0 291 obsoletes=1
igor@0 292 reposdir=/dev/null
igor@0 293
igor@0 294 [base]
igor@0 295 name=Fedora Core 6 - i386 - Base
igor@0 296 #mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-6
igor@0 297 baseurl=http://redhat.download.fedoraproject.org/pub/fedora/linux/core/6/i386/os/
igor@0 298 enabled=1
igor@0 299
igor@0 300 [updates-released]
igor@0 301 name=Fedora Core 6 - i386 - Released Updates
igor@0 302 #mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc6
igor@0 303 baseurl=http://redhat.download.fedoraproject.org/pub/fedora/linux/core/updates/6/i386/
igor@0 304 enabled=1
igor@0 305 \end{verbatim}
igor@0 306
igor@0 307 Если при инсталляции вы получаете ошибку
igor@0 308
igor@0 309 \begin{verbatim}
igor@0 310 Failed to add groups file for repository: base
igor@0 311 Error: No Groups on which to run command
igor@0 312 \end{verbatim}
igor@0 313
igor@0 314 то модифицируйте код \textit{yum} следующим образом:
igor@0 315
igor@0 316 \begin{verbatim}
igor@0 317 # cp /usr/share/python-support/yum/yum/comps.py{,.ORIG}
igor@0 318 # vi /usr/share/python-support/yum/yum/comps.py
igor@0 319 # diff /usr/share/python-support/yum/yum/comps.py{.ORIG,}
igor@0 320 124c124
igor@0 321 < if type not in ('mandatory', 'default', 'optional'):
igor@0 322 ---
igor@0 323 > if type not in ('mandatory', 'default', 'optional', 'conditional'):
igor@0 324 143c143
igor@0 325 < if type not in ('mandatory', 'default', 'optional'):
igor@0 326 ---
igor@0 327 > if type not in ('mandatory', 'default', 'optional', 'conditional'):
igor@0 328 \end{verbatim}
igor@0 329
igor@0 330 Установленную систему можно доработать.
igor@0 331
igor@0 332 \textit{Создать некоторые каталоги и файлы устройств.}
igor@0 333
igor@0 334 \begin{verbatim}
igor@0 335 %# mkdir /mnt/{dev,proc,etc}
igor@0 336 %# for i in console null zero ; do /sbin/MAKEDEV -d /mnt/dev -x $i ; done
igor@0 337 \end{verbatim}
igor@0 338
igor@0 339 \textit{Отключить TLS}.
igor@0 340
igor@0 341 \begin{verbatim}
igor@0 342 %# mv /mnt/lib/tls /mnt/lib/tls-disabled
igor@0 343 \end{verbatim}
igor@0 344
igor@0 345 \textit{Создать /etc/fstab}
igor@0 346
igor@0 347 \begin{verbatim}
igor@0 348 %# cat <<EOL > /mnt/etc/fstab
igor@0 349 /dev/sda1 / ext3 defaults 1 1
igor@0 350 none /dev/pts devpts gid=5,mode=620 0 0
igor@0 351 none /dev/shm tmpfs defaults 0 0
igor@0 352 none /proc proc defaults 0 0
igor@0 353 none /sys sysfs defaults 0 0
igor@0 354 /dev/sda2 /mnt ext3 defaults 1 2
igor@0 355 /dev/sda3 swap swap defaults 0 0
igor@0 356 EOL
igor@0 357 \end{verbatim}
igor@0 358
igor@0 359 \textit{Настроить сетевые интерфейсы}.
igor@0 360
igor@0 361 \begin{verbatim}
igor@0 362 %# cat <<EOL > /mnt/etc/sysconfig/network
igor@0 363 NETWORKING=yes
igor@0 364 HOSTNAME=localhost.localdomain
igor@0 365 EOL
igor@0 366
igor@0 367 cat <<EOL > /mnt/etc/sysconfig/network-scripts/ifcfg-eth0
igor@0 368 ONBOOT=yes
igor@0 369 DEVICE=eth0
igor@0 370 BOOTPROTO=dhcp
igor@0 371 EOL
igor@0 372 \end{verbatim}
igor@0 373
igor@0 374 \textit{Скопировать модули ядра}
igor@0 375
igor@0 376 \begin{verbatim}
igor@0 377 %# cp -R /lib/modules/2.6.*xen* /mnt/lib/modules/
igor@0 378 \end{verbatim}
igor@0 379
igor@0 380 \textit{Установить пароль root\rq{}а}
igor@0 381
igor@0 382 \begin{verbatim}
igor@0 383 %$ sudo chroot /mnt
igor@0 384 bash-3.1# pwconv
igor@0 385 bash-3.1# passwd
igor@0 386 Changing password for user root.
igor@0 387 New UNIX password:
igor@0 388 Retype new UNIX password:
igor@0 389 passwd: all authentication tokens updated successfully.
igor@0 390 bash-3.1# exit
igor@0 391 \end{verbatim}
igor@0 392
igor@0 393 \textit{Отключить сообщения об ошибках ядра на консоль} (не обязательно)
igor@0 394
igor@0 395 \begin{verbatim}
igor@0 396
igor@0 397 \end{verbatim}
igor@0 398
igor@0 399 После того как инсталляция закончена,
igor@0 400 можно попробовать запустить домен.
igor@0 401
igor@0 402 \begin{verbatim}
igor@0 403 %# umount /mnt
igor@0 404 %# xm console -c fc
igor@0 405 \end{verbatim}
igor@0 406
igor@0 407 (здесь \textit{fc} это конфигурационный файл домена).
igor@0 408
igor@0 409 \begin{center} \resizebox{10cm}{!}{\includegraphics{/var/lib/mediawiki/images/9/90/Fc-in-xen.png}}\\ \textit{}\end{center}
igor@0 410
igor@0 411 \subsubsection{Инсталляция и настройка других дистрибутивов Linux в domU}
igor@0 412 \begin{itemize}
igor@0 413 \item Centos5 — описание процедуры подготовки domU для Centos5
igor@0 414 \end{itemize}
igor@0 415
igor@0 416 \subsubsection{Инсталляция Debian из-под других дистрибутивов Linux}
igor@0 417
igor@0 418 \begin{verbatim}
igor@0 419 %# wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_0.3.3_i386.udeb
igor@0 420 %# ar t debootstrap-udeb_0.3.3_i386.udeb
igor@0 421 %# mkdir debootstrap
igor@0 422 %# cd debootstrap
igor@0 423 %# tar xvzf ../data.tar.gz
igor@0 424 \end{verbatim}
igor@0 425
igor@0 426 После этого инсталляция с помощью \textit{./deboostrap} выполняется как обычно.
igor@0 427
igor@0 428 \subsection{Запуск виртуальной машины}
igor@0 429 <graphviz>
igor@0 430 digraph G \{
igor@0 431 \begin{verbatim}
igor@0 432 node [shape=rectangle];
igor@0 433 a [label="Подготовка\nдомена 0"];
igor@0 434 b [label="Подготовка\nдомена U"];
igor@0 435 c [label="Запуск и эксплуатация\nсистемы",bgcolor=cyan,style=filled];
igor@0 436 a -> b;
igor@0 437 b -> c;
igor@0 438 \end{verbatim}
igor@0 439 \}
igor@0 440 </graphviz>
igor@0 441
igor@0 442 \begin{verbatim}
igor@0 443 # xm create -c debian-vm0
igor@0 444 \end{verbatim}
igor@0 445
igor@0 446 Данная команда запустит новую виртуальную машину и создаст
igor@0 447 подключенную к ней консоль (ключ -c).
igor@0 448 Можно войти в систему от имени пользователя
igor@0 449 root и настроить сетевой интерфейс eth0.
igor@0 450
igor@0 451 Обратите внимание на то, что на консоли (\texttt{/dev/console})
igor@0 452 по умолчанию комбинация клавиш Ctrl-C не настроена
igor@0 453 для прерывания процессов.
igor@0 454
igor@0 455 Отключиться от консоли виртуальной машины вернуться в
igor@0 456 терминал, из которого выполнялось подключение/запуск,
igor@0 457 можно с помощью комбинации Ctrl-].
igor@0 458
igor@0 459 Вернуться на отключенную консоль
igor@0 460 можно с помощью команды:
igor@0 461
igor@0 462 \begin{verbatim}
igor@0 463 # xm console debian-vm0
igor@0 464 \end{verbatim}
igor@0 465
igor@0 466 Остановить домен можно командой:
igor@0 467
igor@0 468 \begin{verbatim}
igor@0 469 # xm shutdown -H debian-vm0
igor@0 470 \end{verbatim}
igor@0 471
igor@0 472 Выключить домен (как будто бы вырубить виртуальную машину
igor@0 473 по питанию), можно с помощью команды:
igor@0 474
igor@0 475 \begin{verbatim}
igor@0 476 # xm destroy debian-vm0
igor@0 477 \end{verbatim}
igor@0 478
igor@0 479 Для получения полного списка команд, таких как shutdown, destroy
igor@0 480 и т.д. введите:
igor@0 481
igor@0 482 \begin{verbatim}
igor@0 483 # xm help
igor@0 484 \end{verbatim}
igor@0 485
igor@0 486 Для того чтобы виртуальная машина (domU) загружалась автоматически,
igor@0 487 когда загружает основная система (dom0),
igor@0 488 необходимо сделать ссылку на
igor@0 489 конфигурационный файл виртуальной машины:
igor@0 490
igor@0 491 \begin{verbatim}
igor@0 492 # ln -s <configfile> /etc/xen/auto/
igor@0 493 \end{verbatim}
igor@0 494
igor@0 495 \subsection{Дополнительные вопросы}
igor@0 496 \subsubsection{Сборка ядра Linux под Xen в Debian}
igor@0 497 <dl><dd> \textit{Основная страница: \textbf{Сборка ядра Linux под Xen в Debian}}
igor@0 498 </dd></dl>
igor@0 499
igor@0 500 Ядро Linux, с поддержкой Xen, находящееся в репозитории Debian GNU/Linux
igor@0 501 собрано с поддержкой PAE.
igor@0 502 С другой стороны, большое количество систем (FreeBSD, NetBSD, Plan 9 и др.), работающих как гостевые системы в паравиртуальном домене Xen
igor@0 503 не поддерживают PAE.
igor@0 504 В этом случае потребуется пересобрать ядро домена 0
igor@0 505 без поддержки PAE.
igor@0 506 Пересборка ядра может потребоваться и в других случаях.
igor@0 507
igor@0 508 \subsection{Возможные проблемы при подготовке и запуске}
igor@0 509 Множество проблем, с которыми можно столкнуться
igor@0 510 при подготовке и запуске гостевой системы Xen,
igor@0 511 описано на странице Xen FAQ.
igor@0 512
igor@0 513 \subsubsection{Возможные проблемы с udev}
igor@0 514 При старте домена может возникнуть такая проблема:
igor@0 515 домен не стартует, на экран выдаётся сообщение
igor@0 516 об ошибке:
igor@0 517
igor@0 518 \begin{verbatim}
igor@0 519 Device 768 (vbd) could not be connected. Hotplug scripts not working.
igor@0 520 \end{verbatim}
igor@0 521
igor@0 522 \textit{Номер устройства (768) может отличаться.}
igor@0 523
igor@0 524 Если такая проблема возникла, причём она не пропадает
igor@0 525 ни при отключении сетевых интерфейсов в виртуальной машине;
igor@0 526 ни при изменении конфигурации дисков, проблема может быть связана с \textbf{udev}.
igor@0 527
igor@0 528 Убедитесь, что udev достаточно новый.
igor@0 529 Последние версии udev находятся здесь: http://kernel.org/pub/linux/utils/kernel/hotplug/
igor@0 530
igor@0 531 Проверьте, есть ли в конфигурации udev правила xen.
igor@0 532
igor@0 533 Если нет, нужно их добавить.
igor@0 534 Нужно создать файл \texttt{xen-backend.rules}
igor@0 535 в каталоге \texttt{/etc/udev/rules.d} следующего содержания:
igor@0 536
igor@0 537 \begin{verbatim}
igor@0 538 # cat /etc/udev/rules.d/xen-backend.rules
igor@0 539 SUBSYSTEM=="xen-backend", KERNEL=="tap*", RUN+="/etc/xen/scripts/blktap $env{ACTION}"
igor@0 540 SUBSYSTEM=="xen-backend", KERNEL=="vbd*", RUN+="/etc/xen/scripts/block $env{ACTION}"
igor@0 541 SUBSYSTEM=="xen-backend", KERNEL=="vtpm*", RUN+="/etc/xen/scripts/vtpm $env{ACTION}"
igor@0 542 SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="online", RUN+="$env{script} online"
igor@0 543 SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="offline", RUN+="$env{script} offline"
igor@0 544 SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/etc/xen/scripts/xen-hotplug-cleanup"
igor@0 545 KERNEL=="evtchn", NAME="xen/%k"
igor@0 546 \end{verbatim}
igor@0 547
igor@0 548 Если такой файл \texttt{xen-backend.rules} уже есть,
igor@0 549 можно переименовать его или создать символическую ссылку,
igor@0 550 содержащую номер в названии. Правило должно грузиться предпоследним.
igor@0 551
igor@0 552 \begin{verbatim}
igor@0 553 # cd /etc/udev/rules.d
igor@0 554 # mv xen-backend.rules 92-xen-backend.rules
igor@0 555 \end{verbatim}
igor@0 556
igor@0 557 После этого нужно перезапустить udev и попробовать
igor@0 558 стартануть домен снова.
igor@0 559
igor@0 560 \begin{verbatim}
igor@0 561 # ps aux | grep udev
igor@0 562 root 3321 0.0 0.2 1768 516 ? S<s 22:51 0:00 udevd --daemon
igor@0 563 root 9349 0.0 0.2 1860 640 pts/2 S+ 23:27 0:00 grep udev
igor@0 564 # udevd --daemon
igor@0 565 # ps aux | grep udev
igor@0 566 root 9352 0.0 0.2 1768 516 ? S<s 23:28 0:00 udevd --daemon
igor@0 567 root 9356 0.0 0.2 1860 640 pts/2 S+ 23:29 0:00 grep udev
igor@0 568 \end{verbatim}
igor@0 569
igor@0 570 Дополнительные сведения о проблеме: \url{http://marc.theaimsgroup.com/?l=xen-users\&m=114319459529175\&w=2}
igor@0 571