xen/pygrub
Материал из Xgu.ru
На этой странице рассматриваются загрузчики ядра Linux для пользовательского домена Xen: pygrub и pypxeboot.
Обе программы работают в домене 0, они используются для получения и загрузки ядра, под управлением которого будет работать домен U, только pygrub берёт ядро изнутри образа домена, а pypxeboot получает его по сети при помощи PXE.
Содержание |
[править] pygrub
Программа pygrub используется для того, чтобы запускать систему под управлением ядра, находящегося в домене U, а не в домене 0, как происходит традиционно.
Это может пригодиться, например, при использовании систем с множественной загрузкой, когда одна из систем на диске может запускаться как обычная Linux-система монопольно владеющая железом, так и как домен Xen.
При использовании pygrub необходимо чтобы:
- pygrub присутствовал в домене 0;
- Конфигурационный файл домена U (расположенный в домене 0), отражал то, что будет использоваться pygrub';
- В домене U был установлен загрузчик GRUB;
- В домене 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-users) Using pygrub (англ.)
- pypxeboot (англ.)
- xen:pxe_booting (англ.) — загрузка HVM-домена по PXE
|
---|