Як вимкнути небажану спробу завантаження iPXE в Libvirt / qemu-kvm?


12

Якось після оновлення до 12.04 мої віртуальні машини завжди завантажуються із спробою завантаження спочатку з мережі. Дивіться це:

скріншот virt-manager

поки у мене не встановлено жодної конфігурації PXE:

Конфігурація завантаження PXE

Я спробував:

  • щоб вимкнути SPICE, змінивши emulatorна /usr/bin/kvmз /usr/bin/kvm-spice, відредагувавши XML.
  • Ctrl+ Bдля налаштування iPXE, але це не дозволяє відключити це як варіант завантаження.
  • встановлення іншого типу NIC - не варіант, мені потрібно virtioз міркувань продуктивності. Однак і e1000eце не працює.
  • видалення NIC: працює. Однак мені потрібна мережа.
  • Гугнути навколо. Важкий. Багато результатів стосується невдало налаштованих PXE-черевиків.

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

Як я можу відключити це та завантажуватися безпосередньо з віртуального жорсткого диска?

Відповіді:


6

Коротка відповідь

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

Довга відповідь

Тепер, коли я фактично використовую опцію завантаження iPXE, я бачу, що затримка на екрані SeaBIOS не є реальною спробою завантаження. Це лише завантаження опції ROM в мережі Virtio, і це займає кілька прикрих секунд, тобто вона ще не робить спробу завантаження iPXE . Це змусило мене знову прочитати документацію на лібвірт, і я зробив цікаве відкриття.

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


Де є визначення XML машини?
Брайс Гінта

1
@BryceGuinta Створіть спочатку VM, потім відредагуйте його визначення XML (розширене) за допомогою командиvirsh edit <domain>
gertvdijk

5

Мої експерименти з того ж питання дали мені підказки:

У пакеті kvm-ipxeвстановлено декілька ПЗУ з опцією PXE в /usr/share/qemu/:

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

Так чи інакше вони автоматично знаходять і використовуються морськими при завантаженні одного з цих НІК. Коли я виконую chmod a= pxe*.romці файли і запускаю віртуальну машину, я отримую повідомлення про помилку

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

але він завантажується чисто і без PXE.


Дякую. Це дає мені трохи вирішення: використання virtioдля загальних мережевих пристроїв та e1000eдля віртуальних машин, яким потрібен PXE. Однак я все ще думаю, що це помилка. Як-то Libvirt не успішно передає правильні параметри завантаження SeaBIOS.
gertvdijk

Що робить chmod a=?
Брайс Гінта

5

Мені вдалося обійти це в Ubuntu 12.04, передавши наступні параметри qemu-kvm у командному рядку (хитрість встановити romfile до порожнього - хитрість):

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

Класно, але чи можу я вказати це у моєму визначенні машини Libvirt XML?
gertvdijk

Якщо ви робите спеціальні повторні перезавантаження з командного рядка, це шлях. Це додає трохи шуму, але миттєво вбиває iPXE, не вимагаючи від вас редагувати XML-файли, зароджувати всі мережі чи подібні.
i336_

0

З ваших фотографій я бачу, що, швидше за все, це стосується BIOS VM. Конфігурація VM не повинна перезаписувати SeaBIOS'параметри, що повинно викликати завантаження VM PXEспочатку.

Для першого можливого рішення спробуйте дізнатися, чи можете ви ввійти в BIOS віртуальної машини та відредагувати параметри, які є там поширеними.

ПРИМІТКА. Відповідь продовжуватимуть оновлюватись, поки мої дослідження розкриють більше можливих рішень чи причин.

[EDIT # 1]: Інформацію про налаштування порядку завантаження в SeaBIOS ви можете знайти тут . Це повинно вирішити проблему.


Як я можу увійти в BIOS VM? Вікіпедія про SeaBIOS говорить мені, що я повинен спробувати F12 під час завантаження, але це викликає лише один раз пропуск спроби iPXE.
gertvdijk

@gertvdijk Я зараз переглядаю це. Я повернуся до вас, як тільки дізнаюся.
NlightNFotis

@gertvdijk Це здається якось пов’язаним: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis

Дякуємо, сьогодні дізналися нові речі. Однак це, мабуть, стосується всієї системи та щодо створення нової CBFS (основної завантажувальної файлової системи). Наскільки я бачу, він також взагалі відключає завантаження PXE. Мені не подобається такий підхід, і я думаю, що слід запобігти виконанню спроб завантаження iPXE, як це можливо в інтерфейсі Virt-Manager.
gertvdijk

@gertvdijk Як ти знаєш, він це відключає? Все, що я бачу, це налаштувати порядок завантаження, тобто щось завантажиться перед чимось іншим .
NlightNFotis

-1

Мені вдалося запобігти це за допомогою "-net none":

# qemu-system-i386 -net none

Але тоді у вас взагалі немає мереж! Я вважаю, що це насправді не відповідь.
gertvdijk

Вибачте, я пропустив той факт, що ОП все ще потребує мереж. У моєму випадку робота з мережею не була прийнятною.
Каталін П
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.