Каким-то образом после обновления до 12.04 мои виртуальные машины всегда загружаются при первой попытке загрузки из сети. См. Это:
, в то время как у меня нет набора конфигурации PXE:
Я попытался:
emulator
на /usr/bin/kvm
с /usr/bin/kvm-spice
, отредактировав XML. virtio
по соображениям производительности. Однако e1000e
тоже не работает. Не большая проблема, но она увеличивает время загрузки здесь на 50-100% (загрузка с SSD), так что это относительно долго и раздражает меня.
Как я могу отключить это и загрузить напрямую с виртуального жесткого диска?
Мне удалось предотвратить это с помощью «-net none»:
# qemu-system-i386 -net none
Мои эксперименты по той же проблеме дали мне несколько советов:
Пакет 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.
Мне удалось обойти это в Ubuntu 12.04, передав следующие опции qemu-kvm в командной строке (установка пустого romfile - хитрость):
-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0
Из ваших снимков видно, что, скорее всего, это связано с BIOS BIOS. Конфигурация виртуальной машины не должна перезаписывать настройки SeaBIOS
, что должно вызывать первую загрузку виртуальной машины с PXE
.
Для первого возможного решения попробуйте посмотреть, можете ли вы войти в BIOS виртуальной машины и отредактировать имеющиеся там параметры.
ПРИМЕЧАНИЕ: Будет продолжать обновлять ответ, пока мое исследование раскрывает больше возможных решений или причин.
[EDIT # 1]: Информацию о том, как настроить порядок загрузки в SeaBIOS , можно найти здесь . Это должно решить проблему.
Обновление до 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 проваливаться между двумя стульями.
Другие обходные пути - удаление файлов дополнительного ПЗУ, как указано @ A.H. ' и изменение «файловой системы» SeaBIOS, как указано @NlightNFotis. Тем не менее, оба способа в основном полностью отключают iPXE, и он не настраивается (только при использовании virtio
сетевых устройств). Поскольку у меня смешанная настройка компьютеров iPXE и компьютеров, отличных от PXE, мне действительно нужно, чтобы это можно было настраивать.