Как отключить нежелательную попытку загрузки iPXE в Libvirt/qemu-kvm?

Каким-то образом после обновления до 12.04 мои виртуальные машины всегда загружаются при первой попытке загрузки из сети. Видеть это:

скриншот вирт-менеджера

пока у меня нет установленной конфигурации PXE:

Конфигурация загрузки PXE

Я пробовал:

  • отключить SPICE, изменив emulator в /usr/bin/kvm от /usr/bin/kvm-spice редактируя XML.
  • Ctrl+B, чтобы настроить iPXE, но это не позволяет отключить это как вариант загрузки.
  • настройка другого типа NIC - не вариант, мне нужно virtio по причинам производительности. Тем не мение, e1000e тоже не работает.
  • снятие NIC: работает. Однако мне нужна сеть.
  • Погуглив вокруг. Жесткий. Много результатов о сбое настроенной загрузки PXE.

Не большая проблема, но это увеличивает время загрузки здесь на 50-100% (загрузка с SSD), так что это относительно долго и раздражает меня.

Как я могу отключить это и загружаться с виртуального жесткого диска напрямую?

5 ответов

Решение

Короткий ответ

Обновите до libvirt 0.9.10+ (доступно в Quantal) и добавьте <rom bar='off'/> опция для конфигурации интерфейса определения XML машины.

Длинный ответ

Теперь, когда я на самом деле использую опцию загрузки iPXE, я вижу, что задержка, возникающая на экране SeaBIOS, не является реальной попыткой загрузки. Он просто загружает дополнительное сетевое ПЗУ Virtio, и на это уходит несколько раздражающих секунд, то есть он еще не пытается загрузить iPXE. Это заставило меня снова прочитать документацию по libvirt, и я сделал интересное открытие.

Насколько я мог найти, начиная с libvirt 0.9.7, поведение изменилось для загрузки дополнительных ПЗУ интерфейса по умолчанию. Ubuntu 11.10 поставляется с 0.9.2, Ubuntu 12.04 поставляется с 0.9.8. Это определенно имеет смысл относительно того, почему я вижу это после обновления до 12.04.

Более того, это стало настраиваемым в libvirt версии 0.9.10 с <rom bar='off'/> вариант в XML! (см. здесь) Однако эта версия libvirt недоступна в Ubuntu 12.04, и мне придется обновить ее до 12.10 или сделать бэкпорт. Это заставляет Ubuntu 12.04 проваливаться между двумя стульями.

Другие обходные пути - удаление файлов дополнительного ПЗУ, как указано @AH ', и изменение "файловой системы" SeaBIOS, как указано @NlightNFotis. Однако оба способа в основном полностью отключают iPXE, и он не настраивается (если придерживаться virtio только сетевые устройства). Поскольку у меня смешанная установка компьютеров iPXE и ​​компьютеров, не поддерживающих PXE, мне действительно нужно, чтобы это можно было настраивать.

Я смог обойти это в Ubuntu 12.04, передав следующие опции в qemu-kvm из командной строки (установка трюка в romfile пустая):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0

Мои эксперименты по той же проблеме дали мне несколько советов:

Посылка kvm-ipxe устанавливает несколько дополнительных дисков PXE в /usr/share/qemu/:

pxe-e1000.rom
pxe-ne2k_isa.rom
pxe-pcnet32.rom
pxe-rtl8139.rom
pxe-virtio.rom

Каким-то образом они автоматически обнаруживаются и используются seabios при загрузке с одного из этих сетевых адаптеров. Когда я делаю chmod a= pxe*.rom на этих файлах и запуска виртуальной машины я получаю сообщение об ошибке

kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.rom"

но он загружается чисто и без PXE.

Я смог предотвратить это с помощью "-net none":

# qemu-system-i386 -net none

Из ваших картинок видно, что скорее всего это связано с BIOS BIOS. Конфигурация виртуальной машины не должна перезаписываться SeaBIOS"Настройки, которые должны вызывать загрузку виртуальной машины с PXE первый.

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

ПРИМЕЧАНИЕ. Будет продолжать обновлять ответ, пока мое исследование раскрывает больше возможных решений или причин.

[EDIT # 1]: Вы можете найти информацию о том, как настроить порядок загрузки в SeaBIOS здесь. Это должно решить проблему.

Другие вопросы по тегам