Назад | Перейти на главную страницу

настройка Ubuntu 10.10 как паравиртуализированного гостя в Xen на хосте RHEL5 - какое ядро?

Я обнаружил инструмент ubuntu-vm-builder, который я установил, а затем вызвал на рабочей станции Ubuntu как:

sudo vmbuilder xen ubuntu --suite maverick --flavour virtual --arch amd64 --mem=512 --rootsize 8192

Однако эта рабочая станция не является предполагаемым целевым хостом виртуальной машины; Я хотел бы разместить гостя на машине Red Hat Enterprise Linux 5, на которой работает Xen 3.0.3.

Результатом этой команды является папка с именем ubuntu-xen содержащий три файла:

Я скопировал xen.conf файл на сервер RHEL /etc/xen каталог под новым именем newvm, корректируя пути tempXXXXXX и tempYYYYYYв файле после их копирования с моей локальной рабочей станции на сервер RHEL. Когда я запускаю диспетчер виртуальных машин virt-manager, Я вижу newvm виртуальная машина, указанная под машиной Dom0.

Когда я пытаюсь начать newvm, Я получаю сообщение об ошибке:

Error starting domain: virDomainCreate() failed POST operation failed: (xend.err 'Error creating domain: Kernel image does not exist: None')

Действительно, существует запись kernel = 'None' в xen.conf файл. Как узнать, каким должен быть путь к ядру? Этот путь должен быть к ядру, хранящемуся в локальной файловой системе хоста RHEL5, или это должен быть путь внутри гостевого образа?

Я вижу что vmbuilder команда предусматривает --xen-kernel вариант вместе с --xen-ramdisk вариант, но я не уверен, что использовать.

Я думаю, я смогу заставить это работать, поскольку Ubuntu говорят, что его поддерживают в качестве гостя Xen, хотя Состояние документации Xen 4.0.1 поддержка только ограниченного набора дистрибутивов, за исключением Ubuntu.


Обновление 1

При беге vmbuilder на моей локальной рабочей станции я заметил строку вывода:

Calling hook: install_kernel

а затем выходные строки, говорящие:

update-initramfs: Generating /boot/initrd.img-2.6.35-23-virtual
[...]
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.35-23-virtual /boot/vmlinuz-2.6.35-23-virtual

Так что в xen.conf файл, я попытался установить строки:

kernel = '/boot/vmlinuz-2.6.35-23-virtual'
ramdisk = '/boot/initrd.img-2.6.35-23-virtual'

При попытке запустить виртуальную машину я получил ошибку, аналогичную прошлой:

Error starting domain: virDomainCreate() failed POST operation failed: (xend.err 'Error creating domain: Kernel image does not exist: /boot/vmlinuz-2.6.35-23-virtual')

Это заставляет меня думать, что машина RHEL5 ищет локальные файлы, а не файл в двоичном образе гостевого диска.

После запуска sudo updatedb на моей рабочей станции ни один из этих файлов не был найден. Если vmbuilder инструмент пытался установить их, должно быть, это не удалось.


Обновление 2

Мне удалось извлечь образы ядра и initrd из двоичного файла гостевого диска, установив его:

mkdir mnt_tmp
sudo mount ubuntu-xen/tmpXXXXXX mnt_tmp/ -o loop
cp mnt_tmp/boot/vmlinuz-2.6.35-23-virtual virtual_kernel_ubuntu
cp mnt_tmp/boot/initrd.img-2.6.35-23-virtual virtual_initrd_ubuntu

Эти два файла я скопировал на сервер RHEL5 и отредактировал xen.conf файл, чтобы указать на них как kernel и ramdisk.

Сделав это, я мог "запустить" newvm виртуальная машина изнутри virt-manager, но был встречен с сообщением

Console Not Configured For Guest

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

vfb = [ 'type=vnc' ]

в файл конфигурации, воссоздал виртуальную машину (процесс ~ 10 минут) и на этот раз получил сообщение:

Connecting to console for guest

Это оставалось на неопределенный срок; после выбора View -> Serial Console я обнаружил панику ядра:

[5442621.272173] Kernel panic - not syncing: Attempted to kill the idle task!
[5442621.272179] Pid: 0, comm: swapper Tainted: G      D     2.6.35-23-virtual #41-Ubuntu
[5442621.272184] Call Trace:
[5442621.272191]  [<ffffffff815a1b81>] panic+0x90/0x111
[5442621.272199]  [<ffffffff810652ee>] do_exit+0x3be/0x3f0
[5442621.272204]  [<ffffffff815a5e20>] oops_end+0xb0/0xf0
[5442621.272211]  [<ffffffff8100ddeb>] die+0x5b/0x90
[5442621.272216]  [<ffffffff815a56c4>] do_trap+0xc4/0x170
[5442621.272221]  [<ffffffff8100ba35>] do_invalid_op+0x95/0xb0
[5442621.272227]  [<ffffffff8130851c>] ? intel_idle+0xac/0x180
[5442621.272232]  [<ffffffff810072bf>] ? xen_restore_fl_direct_end+0x0/0x1
[5442621.272239]  [<ffffffff815a48fe>] ? _raw_spin_unlock_irqrestore+0x1e/0x30
[5442621.272247]  [<ffffffff8108dfb7>] ? tick_broadcast_oneshot_control+0xc7/0x120
[5442621.272253]  [<ffffffff8100ad5b>] invalid_op+0x1b/0x20
[5442621.272259]  [<ffffffff8130851c>] ? intel_idle+0xac/0x180
[5442621.272264]  [<ffffffff813084e0>] ? intel_idle+0x70/0x180
[5442621.272269]  [<ffffffff810072bf>] ? xen_restore_fl_direct_end+0x0/0x1
[5442621.272275]  [<ffffffff8148a147>] cpuidle_idle_call+0xa7/0x140
[5442621.272281]  [<ffffffff81008d93>] cpu_idle+0xb3/0x110
[5442621.272286]  [<ffffffff815873aa>] rest_init+0x8a/0x90
[5442621.272291]  [<ffffffff81b04c9d>] start_kernel+0x387/0x390
[5442621.272297]  [<ffffffff81b04341>] x86_64_start_reservations+0x12c/0x130
[5442621.272303]  [<ffffffff81b08002>] xen_start_kernel+0x55d/0x561

Обновление 3

Я попробовал i386 архитектура вместо amd64, но возникла такая же паника ядра.

Кроме того, похоже, что диспетчер виртуальных машин обращает внимание на формат имени файла ядра; для того же двоичного файла ядра я попытался просто назвать его vmlinuz-virtual, который выкинул окно с ошибкой о недопустимом ядре. Когда я назвал это vmlinuz-2.6.35-23-virtual, это не привело к возникновению ошибки, но вскоре после этого все же вызвало панику ядра.

Возможно, вы захотите рассмотреть возможность обновления инфраструктуры xen, xen 3.x имеет ограничения в отношении поддерживаемых гостей. Взгляните на следующее, http://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support

Вы пробовали старую версию Ubuntu?

Возможно, вы захотите заглянуть в ксен-инструменты пакет, который, если вы укажете --pygrub на xen-create-image Команда встроит ядро ​​/ initrd в образ гостевого диска, что может упростить вам перенос гостевых образов между системами.

Вам следует использовать (использовали?) Виртуальные ядра linux-image-virtual, предоставляемые Ubuntu, и более новый гипервизор Xen (возможно, с pygrub или аналогичным).

Но ваш вопрос старый, в настоящее время вы бы не использовали Ubuntu-10.10, а на более новых вы используете одно и то же ядро ​​под Xen (как hvm, так и паравирт) и на голом железе.