Я установил xen на сервере ubuntu 12.04 LTS. Я попытался установить гостя на созданный мной lvm под названием xen-lvm
Скрипт virt-install:
sudo virt-install \
--name client2-ubuntu-server \
--ram 512 \
--location http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu/dists/precise/main/installer-i386/ \
--accelerate \
--disk path=/dev/dev-server/xen-lvm \
--boot kernel=/boot/vmlinuz-3.2.0-35-virtual,initrd=/boot/initrd.img-3.2.0-35-virtual \
--force
Сначала я попытался установить без параметра --boot, у которого была такая же ошибка, когда я пытался запустить vm (xm create client1-ubuntu-server
):
Error: (2, 'Invalid kernel', 'elf_xen_note_check: ERROR: Will only load images built for the generic loader or Linux images')
Кто-нибудь знает, что мне нужно делать? О запуске 32-битной и аппаратной виртуализации не может быть и речи (требуется паравиртуализация).
Возможно, я не должен устанавливать главный загрузчик grub в гостевой системе, а менять его для своей ОС?
Обновить
Мне удалось использовать xm create
вместо того virt-install
чтобы добраться до точки, когда я запускаю с загрузчиком до ошибки, как показано здесь: Я думаю, проблема в том, что у меня нет опции pygrub для выбора «виртуального» ядра. Мне не удалось узнать, как добавить виртуальное ядро в domU (желательно на этапе установки). Я бы подумал, что образ сетевой загрузки xen будет установлен вместе с этим, но я думаю, что нет.
Мой сценарий создания xm выглядит так:
name = 'client1-ubuntu-32'
memory = 512
disk = ['phy:/dev/ubu-32/xen-lvm,xvda,w']
vif = [' ']
# Comment this out if uncommenting the next section (installing)
#bootloader="/usr/bin/pygrub"
# This section is for installing ubuntu
kernel = "/var/lib/xen/images/ubuntu-netboot/vmlinuz"
ramdisk = "/var/lib/xen/images/ubuntu-netboot/initrd.gz"
extra = "debian-installer/exit/always_halt=true -- console=hvc0"
Оказывается, вы можете установить grub в гостевую PV с помощью pygrub.
В конце концов, хитрость заключалась в том, чтобы использовать «ручной выбор пакета» в меню apt / task, чтобы удалить общие ядра и вместо этого установить виртуальное. (Вы должны использовать shift- +, чтобы добавить пакет, и shift-minus, чтобы удалить их, когда они выделены). Я тестировал это только с помощью команды xm create с pygrub в качестве одного из параметров. Поскольку виртуальное ядро было выбрано по умолчанию, я предполагаю, что это исправление также может работать с использованием virt-install (но не проверено)
Вы также должны убедиться, что вы изменили разделение по умолчанию с использования ext4 на использование ext3, чтобы это работало. Я не знаю, связана ли это с конкретной проблемой pygrub или нет.
Этот ручной выбор пакета - боль. Стоит изучить способ использования упомянутой минимальной виртуальной установки Вот:
Я не знаю libvirt. Тем не мение:
Я установил xen
должен быть паравиртуализирован
но
--accelerate \
человек virt-install
-p, --paravirt Этот гость должен быть паравиртуализированным гостем. Если хост поддерживает как пара-, так и полную виртуализацию, и не указан ни этот параметр, ни "--hvm", это будет принято. --accelerate Предпочитать KVM или KQEMU (в указанном порядке) при установке гостевой системы QEMU. Теперь это поведение по умолчанию, и этот параметр устарел. Чтобы установить простой гостевой QEMU, используйте '--virt-type qemu'
Так что похоже, что вы пропустили неправильный вариант. Кажется, создается конфигурационный файл Xen.
Также,
Возможно, я не должен устанавливать главный загрузчик grub в гостевой системе, а изменять его для своей ОС?
Вы не можете использовать grub с гостем PV. Вы можете использовать pygrub или pvgrub для хранения ядра в дереве (в виртуальной машине). Однако ваша командная строка предполагает, что вы используете ядро вне дерева (хранящееся в файловой системе dom0), поэтому вам не нужен загрузчик.
Ваш domU - i386. Ядро PAE включено? Поддержка 32-битных битов без PAE в Xen была прекращена довольно давно.