KVM (spuštění virtuálního stroje)
Zavaděč
O zavádění systému z blokových zařízení se stará SeaBIOS. Je to opensource implementace 16 bitového x86 BIOSu, která má všechny vlastnosti proprietárních x86 BIOSů. U Debianu se instaluje jako samostatný balíček s názvem seabios
.
QEMU používá při zavádění variantu s podporou VGA - SeaVGABIOS - jsou to soubory s názvem vgabios-… . To jaký soubor QEMU použije, záleží na typu virtualizované grafické karty
|
Je-li spuštěno QEMU bez jakéhokoliv nastavení, tj. bez předaného blokového zařízení, tak QEMU automaticky předpokládá, že se bude systém zavádět po síti a použije ipxe, na kterém ovšem zůstane viset, pokud mu DHCP server neodpoví[1]. V reálném použití to signalizuje, že SeaBIOS nenašel na žádném z předaných blokových zařízení zavaděč. |
Debianí instalační balíček ipxe-qemu
obsahuje celou sadu PXE firmwarů pro všechna emulovaná virtuální síťová zařízení. Pokud chceme QEMU zabránit zavádění systému po síti, je třeba implicitně říct, že síťové zařízení není k dispozici:
… -net none …
|
Grafická karta
Na příkazové řádce QEMU lze konfigurovat virtuální zařízení, se kterými pracuje systém virtuálního stroje, přes parametr -device
. Pokud se místo názvu zařízení předá parametru klíčové slovo help
, vypíše QEMU na konzoli seznam všech dostupných zařízení:
… -device help …
|
Kombinací jména zařízení a klíčového slova help
, lze vypsat další parametry, které lze v případě potřeby nastavit.
… -device qxl-vga,help …
|
To ovšem není nezbytně nutné, pokud se spokojíte s výchozími parametry virtualizovaných zařízení.
… -vga qxl …
|
Výše uvedený parametr zajistí, že virtualizovaný stroj bude mít k dispozici jednu VGA virtuální grafickou kartu typu qxl[2]. Pokud pro použití v rámci virtualizovaného stroje postačí výchozích 64MB paměti grafické karty, nemusíte nic dalšího řešit. Pokud byste chtěli používat u virtualizovaného stroje grafický desktop s vyšším rozlišením, je třeba rozhodně navýšit dostupné množství paměti alespoň na dvojnásobek. To lze udělat buď globálně přes parametr -global
:
… -vga qxl -global qxl-vga.ram_size_mb=256 -global qxl-vga.vram_size_mb=256 -global qxl-vga.vram64_size_mb=512 …
|
A nebo nastavením zařízení qxl-vga
[3] přes -device
:
… -device qxl-vga,ram_size_mb=256,vram_size_mb=256,vram64_size_mb=512 …
|
Ovladač virtuální grafické karty qxl má podporu pro více monitorů, takže kromě výchozího zařízení qxl-vga lze přidat i další grafické karty typu qxl. Pro každou z nich lze nastavit dostupné množství paměti samostatně, nebo lze pro jejich hromadnou konfiguraci využít parametru -global
:
… -vga qxl -device qxl -device qxl …
|
Každá grafická karta se zobrazí na PCI sběrnici virtuálního stroje jako samostatné zařízení. Chcete-li zjistit, kolik má která z nich dostupné množství paměti, můžete k tomu využít konzolový příkaz lspci. Viz následující příklad jeho použití:
Blokové zařízení
VPS s Linux OS
Ve výchozím nastavení má linuxové jádro aktivovaný tzv. elevator - scheduler, který optimalizuje řazení I/O operací HDD s ohledem na optimální pokrytí plochy ploten disku klasické konstrukce při jejich rotaci. Funkci lze elevatoru lze potlačit parametrem jádra:
elevator=noop
VPS s MS Windows
Na co si dát pozor
Pokud se používá image disku tak je třeba mít na paměti..
- Má-li být zavaděč součástí image, musí obraz odpovídat celému disku, včetně diskových oddílů, aby pro něj bylo ze začátku virtuálního disku vyhrazeno místo
- Je také třeba mít na paměti, že pokud není virtuál bezdiskový, tak jeho operační systém musí obsahovat nástroje pro kontrolu a opravu souborového systému, a také tento souborový systém musí podporovat aktuální jádro virtuálního stroje.
Chyby při spuštění
- qemu-system-x86_64: Invalid parameter 'to'
- Qemu nemá uveden grafický výstup. Je ho třeba nastavit.
- SDL support is disabled
- Qemu je zkompilované bez podpory SDL výstupu