KVM (debug)

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

Nejjednodušší způsob pro získávání informací z prostředí virtualizovaného linuxového stroje je využití přesměrovaného virtuálního sériového portu. Hodí se to především v situaci kdy jádro virtuálního stroje z neznámých příčin panikaří, ale lze toho také využít k monitoringu stroje atp.

Přesměrování sériového portu

V prostředí standardní grafické konzole QEMU je standardně výstup sériového portu přesměrován na třetí grafickou konzoli, na kterou se lze přepnout kombinací CTRL+ALT 3 (viz předchozí kapitola).

Přistupujeme-li však ke stroji bez grafické konzole, přes SPICE, nebo VNC, je přesměrování sériového portu vypnuto. Musí být tedy explicitně zapnuto při spouštění na příkazovém řádku pomocí volby -serial.

-serial file:/root/x64bit.log

Port nemusí být nutně přesměrován do soubor na disku. Cílem může být i soket, TCP port či jiná konzole hostitele. Podobně jako když se přesměrovává monitorovací konzole QEMU.

V prostředí linuxového virtuálu je pak sériový port dostupný jako zařízení /dev/ttyS0. Jelikož jde o jednoduché znakové zařízení, je nejsnazší formou testu poslat přes příkaz echo nějaký řetězec. V případě že přesměrování funguje, se řetězec objeví v cílovém souboru.

Je-li volba -serial uvedena vícekrát, jsou postupně přesměrovány i další sériové porty /dev/ttyS1, /dev/ttyS2...

Přetočení konzolového výpisu na sériový port

Když nastane kernel panic, vypíše jádro obvykle chybu na aktuální konzoli. Aby byly informace z jádra vypisovány na sériový port, je třeba před zavedením jádra předat prostřednictvím parametru console v zavaděči jméno zařízení sériové konzole.

console=ttyS0

Jednoduchým testem si pak můžeme ověřit, jestli k zápisu na konzoli skutečně dojde

echo 1 > /proc/sys/kernel/sysrq

echo c > /proc/sysrq-trigger

Jak pak dále zachycenou chybu zpracovat viz http://www.dedoimedo.com/computers/kdump.html