KVM (spuštění virtuálního stroje)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

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.

Poznámka 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
Upozornění 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:

Poznámka
… -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í:

Poznámka
… -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.

Poznámka
… -device qxl-vga,help …

To ovšem není nezbytně nutné, pokud se spokojíte s výchozími parametry virtualizovaných zařízení.

Poznámka
… -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 :

Poznámka
… -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 :

Poznámka
… -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:

Poznámka
… -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í:

Poznámka
root@guest~# lspci
support (KVM) :~# lspci
...
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
...
root@guest~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Cirrus Logic GD 5446 (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc Device 1100
        Flags: fast devsel
        Memory at fc000000 (32-bit, prefetchable) [size=32M]
        Memory at febf0000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at febc0000 [disabled] [size=64K]
        Kernel driver in use: cirrus

root@guest~# modinfo cirrus
filename:       /lib/modules/3.9.0/kernel/drivers/gpu/drm/cirrus/cirrus.ko
license:        GPL
description:    qemu Cirrus emulation
author:         Matthew Garrett
srcversion:     C812356C85A3684D94B67F8
alias:          pci:v00001013d000000B8sv00001AF4sd00001100bc*sc*i*
depends:        drm,drm_kms_helper,ttm,syscopyarea,sysfillrect,sysimgblt
intree:         Y
vermagic:       3.9.0 SMP mod_unload modversions 
parm:           modeset:Disable/Enable modesetting (int)

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..

  1. 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
  2. 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



  1. Více o bezdiskovém zavádění viz manuál pro Diskless
  2. Ovladač qxl se používá pro 2D akceleraci videa přes SPICE protokol.
  3. Výchozí grafická karta, která se nastavuje přes parametr -vga