Jak wyłączyć niechcianą próbę rozruchu iPXE w Libvirt / qemu-kvm?

12

Jakoś po aktualizacji do 12.04, moje maszyny wirtualne zawsze uruchamiają się, próbując najpierw uruchomić z sieci. Zobacz:

zrzut ekranu virt-manager

podczas gdy nie mam zestawu konfiguracji PXE:

Konfiguracja rozruchu PXE

Próbowałem:

  • Aby wyłączyć przyprawa, zmieniając emulatorsię /usr/bin/kvmz /usr/bin/kvm-spiceedytując XML.
  • Ctrl+, Baby skonfigurować iPXE, ale nie pozwala wyłączyć tej opcji jako opcji rozruchu.
  • ustawienie innego rodzaju karty sieciowej - nie jest to opcja, potrzebuję virtioze względu na wydajność. Jednak e1000eto też nie działa.
  • usunięcie karty sieciowej: działa. Potrzebuję jednak sieci.
  • Googling po okolicy. Ciężko. Wiele rezultatów dotyczy niepowodzenia konfiguracji PXE.

Nie jest to duży problem, ale tutaj wydłuża czas rozruchu o 50-100% (bootowanie z SSD), więc jest stosunkowo długi i denerwuje mnie.

Jak mogę to wyłączyć i uruchomić bezpośrednio z wirtualnego dysku twardego?

gertvdijk
źródło

Odpowiedzi:

6

Krótka odpowiedź

Zaktualizuj do libvirt 0.9.10+ (dostępny w wersji Quantal) i dodaj <rom bar='off'/>opcję do konfiguracji interfejsu definicji XML maszyny.

Długa odpowiedź

Teraz, kiedy faktycznie używam opcji rozruchu iPXE, widzę, że opóźnienie występujące na ekranie SeaBIOS nie jest faktyczną próbą rozruchu. Po prostu ładuje ROM opcji sieci Virtio i zajmuje to kilka irytujących sekund, tzn . Nie wykonuje jeszcze próby rozruchu iPXE . To skłoniło mnie do ponownego przeczytania dokumentacji libvirt i dokonałem interesującego odkrycia.

O ile mogłem znaleźć, od libvirt 0.9.7 zachowanie zmieniło się, aby domyślnie ładować ROM opcji interfejsu. Ubuntu 11.10 dostarczany z wersją 0.9.2, Ubuntu 12.04 jest dostarczany z wersją 0.9.8. To zdecydowanie ma sens, dlaczego widzę, że tak się dzieje od czasu aktualizacji do 12.04.

Co więcej, stało się to konfigurowalne w wersji libvirt 0.9.10 z <rom bar='off'/>opcją w XML! (patrz tutaj ) Jednak ta wersja libvirt nie jest dostępna w Ubuntu 12.04 i będę musiał ją zaktualizować do wersji 12.10 lub ją backportować. To powoduje, że Ubuntu 12.04 spada między dwa taborety.

Inne obejścia polegają na usuwaniu opcji plików ROM, jak wskazał @AH 'i zmianie' systemu plików 'SeaBIOS, jak wskazał @NlightNFotis. Jednak oba sposoby w zasadzie całkowicie wyłączają iPXE i nie można go konfigurować (jeśli przykleja się virtiotylko do urządzeń sieciowych). Ponieważ mam mieszaną konfigurację maszyn iPXE i maszyn innych niż PXE, naprawdę potrzebuję tego, aby można je było konfigurować.

gertvdijk
źródło
Gdzie jest definicja XML maszyny?
Bryce Guinta
1
@BryceGuinta Najpierw utwórz maszynę wirtualną, a następnie edytuj jej definicję XML (zaawansowaną) za pomocą poleceniavirsh edit <domain>
gertvdijk
5

Moje eksperymenty w tej samej sprawie dały mi pewne wskazówki:

Pakiet kvm-ipxeinstaluje kilka ROM opcji PXE w /usr/share/qemu/:

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

Jakoś są one automatycznie wyszukiwane i wykorzystywane przez seabios podczas uruchamiania z jedną z tych kart sieciowych. Kiedy robię a chmod a= pxe*.romna tych plikach i uruchamiam maszynę wirtualną, pojawia się komunikat „błąd”

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

ale uruchamia się czysto i bez PXE.

AH
źródło
Dzięki. To daje mi trochę obejścia: używanie virtiodo ogólnych urządzeń sieciowych i e1000emaszyn wirtualnych wymagających PXE. Jednak nadal uważam, że to błąd. Jakoś Libvirt nie przekazuje poprawnie parametrów rozruchu do SeaBIOS.
gertvdijk
Co ma chmod a=zrobić?
Bryce Guinta
5

Byłem w stanie obejść ten problem w Ubuntu 12.04, przekazując następujące opcje do qemu-kvm w wierszu poleceń (sztuczka polega na ustawieniu pustego pliku rom):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0
RolKau
źródło
Fajnie, ale czy mogę to określić w mojej definicji maszyny Libvirt XML?
gertvdijk
Jeśli wykonujesz ponowne doraźne ponowne uruchamianie z wiersza poleceń, jest to odpowiedni sposób. Dodaje trochę hałasu, ale natychmiast zabija iPXE bez konieczności edytowania plików XML, nuke całego sieci lub podobnych.
i336_
0

Z twoich zdjęć widzę, że najprawdopodobniej ma to związek z BIOS-em VM. Konfiguracja maszyny wirtualnej nie może nadpisywać SeaBIOSustawień, co musi być przyczyną pierwszego uruchomienia maszyny wirtualnej PXE.

Aby uzyskać pierwsze możliwe rozwiązanie, spróbuj sprawdzić, czy możesz wejść do systemu BIOS maszyny wirtualnej i edytować opcje tam dostępne.

UWAGA: Będę nadal aktualizować odpowiedź, podczas gdy moje badania ujawnią więcej możliwych rozwiązań lub przyczyn.

[EDIT # 1]: Można znaleźć informacje o tym, jak ustawić kolejność rozruchu w SeaBIOS tutaj . To powinno rozwiązać problem.

NlightNFotis
źródło
Jak mogę wprowadzić BIOS maszyny wirtualnej? Wikipedia na temat SeaBIOS mówi mi, że powinienem wypróbować F12 podczas uruchamiania, ale to tylko raz pomija próbę iPXE.
gertvdijk
@gertvdijk Aktualnie patrzę na to. Odpowiem tak szybko, jak się dowiem.
NlightNFotis,
@gertvdijk To wydaje się w jakiś sposób powiązane: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis
Dzięki, nauczyłem się dzisiaj nowych rzeczy. Wydaje się jednak, że dotyczy to całego systemu i budowy nowego systemu plików CBFS (core boot system). O ile widzę, to całkowicie wyłącza uruchamianie PXE. Nie podoba mi się to podejście i myślę, że powinno być możliwe zapobieganie uruchomieniom iPXE podczas uruchamiania, tak jak jest to możliwe w GUI virt-manager.
gertvdijk
@gertvdijk Skąd wiesz, że to wyłącza? Widzę tylko konfigurację kolejności rozruchu, co oznacza , że coś jest uruchamiane przed czymś innym .
NlightNFotis
-1

Udało mi się temu zapobiec za pomocą opcji „-net none”:

# qemu-system-i386 -net none
Catalin P.
źródło
Ale wtedy w ogóle nie masz sieci! Uważam, że to nie jest odpowiedź.
gertvdijk
Przepraszam, przegapiłem fakt, że OP nadal potrzebuje sieci. W moim przypadku dopuszczalne było działanie bez sieci.
Catalin P