xen/pygrub

Материал из Xgu.ru

Перейти к: навигация, поиск


На этой странице рассматриваются загрузчики ядра Linux для пользовательского домена Xen: pygrub и pypxeboot.

Обе программы работают в домене 0, они используются для получения и загрузки ядра, под управлением которого будет работать домен U, только pygrub берёт ядро изнутри образа домена, а pypxeboot получает его по сети при помощи PXE.


Содержание

[править] pygrub

Программа pygrub используется для того, чтобы запускать систему под управлением ядра, находящегося в домене U, а не в домене 0, как происходит традиционно.

Это может пригодиться, например, при использовании систем с множественной загрузкой, когда одна из систем на диске может запускаться как обычная Linux-система монопольно владеющая железом, так и как домен Xen.

При использовании pygrub необходимо чтобы:

  1. pygrub присутствовал в домене 0;
  2. Конфигурационный файл домена U (расположенный в домене 0), отражал то, что будет использоваться pygrub';
  3. В домене U был установлен загрузчик GRUB;
  4. В домене U был создан конфигурационный файл загрузчика GRUB.

Конфигурационный файл домена U:

bootloader='/usr/lib/xen-3.2-1/bin/pygrub'
memory = 128
name = "dhcp"

vif=[ '' ]
disk=[ 'file:/xen/production/dhcp.img,xvda1,w' ] 

on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Конфигурационный файл GRUB внутри домена U (/boot/grub/menu.lst):

default     0
timeout     5

title       Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.18-4-xen
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.25-2-xen-686 root=/dev/xvda1 ro console=hvc0
initrd      /boot/initrd.img-2.6.25-2-xen-686

теперь все параметры ядру передаются традиционно из конфигурационного файла GRUB в домене U, а не из конфигурационного файла Xen в домене 0.

Такой способ удобно использовать для загрузки системы, экспортированной из другой машины внутрь домена Xen.

[править] Возможные проблемы при запуске

Если возникают какие-то проблемы при запуске, вы можете начать с того, что проверить, выполняется ли загрузчик без Xen?

Например, для описанного выше случая строка проверки будет такой:

%# /usr/lib/xen-3.2-1/bin/pygrub /xen/production/dhcp.img

На экране должно появится приглашение GRUB.

Дальше, если выбрать какой-то из пунктов меню, загрузка не пойдёт, а завершится с сообщение об ошибке. Это нормально.

Если загрузчик отрабатывает нормально, но домен потом не грузится, нужно смотреть какое сообщение об ошибке он выдаёт. Некоторые сообщения могут быть слишком общими, чтобы понять в чём причина.

Например:

xen01-tdm:~# xm create domU-01.cfg
Using config file "/etc/xen/domU-01.cfg".
Error: [Errno 2] No such file or directory

В этой ситуации можно попробовать воспользоваться командой strace и сделать так:

%# strace xm create -c domain

Программа покажет список оттрассированных системных вызовов. Нужно обратить внимание на сообщения об ошибках.

Скорее всего, в данном примере не хватает какого-то каталога, в котором система пытается создать файл, но не может. Потом она открывает этот файл, а его, натурально, нет. Например, возможно нет каталога /var/lib/xen.

[править] pypxeboot

pypxeboot — это программа, получающая при помощи PXE ядро операционной системы, и передающая его Xen для загрузки домена. Она использует модифицированную версию udhcp в своей работе. Модификация отличается тем, что позволяет задавать MAC-адрес в командной строке.

Патч для udhcp входит в архив исходных текстов pypxeboot:

Параметры, которые нужно использовать в конфигурационном файле Xen, ядро которого загружается при помощи pypxeboot:

bootloader="/usr/bin/pypxeboot"
vif=['mac=AA:00:86:e2:35:72']
bootargs=vif[0]

Пример загрузки домена с помощью pypxeboot:

%# xm create  cagnode50-slc308
Using config file "/etc/xen/cagnode50-slc308".
pypxeboot: requesting info for MAC address AA:00:86:e2:35:72
pypxeboot: getting cfg for IP 134.226.53.114 (86E23572) from server 192.168.12.1
pypxeboot: downloading initrd using cmd: tftp -c get 192.168.12.1:slc308_i386_xen/initrd.img
pypxeboot: downloading kernel using cmd: tftp -c get 192.168.12.1:slc308_i386_xen/vmlinuz
Started domain cagnode50

[править] Дополнительная информация

Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure
Источник — «http://xgu.ru/wiki/xen/pygrub»