web-dev-qa-db-ja.com

Libvirt / qemu-kvmで不要なiPXEブート試行を無効にするにはどうすればよいですか?

どういうわけか、12.04にアップグレードした後、仮想マシンは常に最初にネットワークからの起動を試みて起動します。こちらをご覧ください:

virt-manager screenshot

pXE構成が設定されていない場合:

PXE boot configuration

私はもう試した:

  • xMLを編集してemulator/usr/bin/kvmから/usr/bin/kvm-spiceに変更してSPICEを無効にします。
  • Ctrl+B iPXEを構成しますが、ブートオプションとしてこれを無効にすることはできません。
  • 別のタイプのNICを設定します-オプションではなく、パフォーマンス上の理由からvirtioが必要です。ただし、e1000eも機能しません。
  • nICの削除:動作します。ただし、ネットワークが必要です。
  • ぐるぐる回る。ハード。多くの結果は、構成されたPXEブートの失敗に関するものです。

大きな問題ではありませんが、ここではブート時間が50〜100%増加します(SSDからのブート)ので、比較的長く、イライラさせられます。

これを無効にして仮想ハードディスクから直接起動するにはどうすればよいですか?

12
gertvdijk

簡潔な答え

Libvirt 0.9.10+(Quantalで利用可能)にアップグレードし、<rom bar='off'/>オプションをマシンのXML定義のインターフェース構成に追加します。

長い答え

IPXEブートオプションを実際に使用しているので、SeaBIOS画面で発生する遅延は実際のブート試行ではないことがわかります。 VirtioネットワークオプションROMを読み込んでいるだけで、数秒の時間を要します。つまり、iPXEブート試行はまだ行われていません。これによりlibvirtのドキュメントを再度読むことになり、興味深い発見をしました。

私の知る限り、libvirt 0.9.7以降、デフォルトでインターフェースのオプションROMをロードするように動作が変更されました。 Ubuntu 11.10には0.9.2が付属し、Ubuntu 12.04には0.9.8が付属しています。これは、12.04へのアップグレード以降、なぜこのようなことが起こるのかについて、間違いなく理にかなっています。

さらに、これはlibvirtバージョン0.9.10でXMLの<rom bar='off'/>オプションで設定可能になりました! ( here を参照)ただし、そのバージョンのlibvirtはUbuntu 12.04では使用できないため、12.10にアップグレードするか、バックポートする必要があります。これにより、Ubuntu 12.04は2つのスツールの間になります。

他の回避策は、@ A.Hによって指摘されたオプションROMファイルを削除することです。 @NlightNFotisが指摘したSeaBIOS 'filesystem'を変更します。ただし、どちらの方法でも基本的にiPXEは完全に無効になり、構成できません(virtioネットワークデバイスのみに固執する場合)。 iPXEマシンと非PXEマシンのセットアップが混在しているため、これを設定する必要があります。

6
gertvdijk

同じ問題に関する私の実験は、いくつかのヒントを与えてくれました。

パッケージkvm-ipxeは、いくつかのPXEオプションROMを/usr/share/qemu/にインストールします。

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

これらのNICの1つで起動すると、どういうわけかこれらは自動的に検出され、seabiosによって使用されます。これらのファイルでchmod a= pxe*.romを実行して仮想マシンを起動すると、「エラー」メッセージが表示されます

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

ただし、PXEなしで正常に起動します。

5
A.H.

コマンドラインでqemu-kvmに次のオプションを渡すことで、Ubuntu 12.04でこれを回避できました(romfileを空白に設定するのがコツです):

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

あなたの写真から、VM BIOSに関係している可能性が高いことがわかります。 VM構成はSeaBIOS '設定を上書きしてはなりません。これは、VMが最初にPXEから起動するようにする必要があります。

最初の可能な解決策として、仮想マシンのBIOSを入力してそこにあるオプションを編集できるかどうかを確認してください。

注:私の研究がより多くの可能な解決策または原因を明らかにする間、答えを更新し続けます。

[EDIT#1]:SeaBIOS here で起動順序を設定する方法に関する情報を見つけることができます。 それで問題が解決するはずです。

0
NlightNFotis