KVM (debug)
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