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

пока у меня нет установленной конфигурации 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 здесь. Это должно решить проблему.