Samstag Juli 07, 2007

KVM - Kernel based Virtual Machine - unter Gentoo installieren

Nachdem ich mich gegen XEN und für die Kombination KVM/Qemu entschieden habe, habe ich in letzter Zeit damit etwas beschäftigt. Aufgrund meiner aktueller Hardware musste auch ein relativ aktueller Kernel her, der mindestens 2.6.20 sein musste. Das hatten vor ein paar Wochen noch nicht viele Distributionen. Ausserdem war es für mich wichtig, das ich jederzeit meinen eigenen Kernel kompilieren kann. Und damit sieht's dann mit XEN ganz schlecht aus. Man braucht eigentlich immer einen Kernel, der bei der Distribution dabei ist. Wenn man auf die Sourcen von der xensource.com Seite angewiesen ist, ist man eh verloren. Mich würd das einfach aufregen, immer darauf angewiesen zu sein, wann eine Distribution mal wieder einen Kernel mit XEN rausbringt oder XEN selbst mal wieder eine Anpassung an irgendeinen Kernel macht. Also was liegt näher, gleich die KVM zu verwenden, die seit 2.6.20 sowieso in jedem Kernel ist? Soweit ich das bis jetzt beurteilen kann, läuft das wirklich gut. Nur einen Nachteil gegenüber XEN habe ich bisher gefunden (ok man braucht noch einen Prozessor, der Hardwarevirtualisierung unterstützt, den XEN auch nicht braucht...), der schon etwas schade ist: Man kann keine PCI Geräte in die KVM einblenden. Bei XEN kann man z.B. eine TV-Karte aus der Dom0 ausblenden und in eine DomU einblenden. Bei der KVM ist man auf die Geräte beschränkt, die der Emulator mitliefert. Auf jeden Fall bin ich mit der Geschwindigkeit der KVM bisher sehr zufrieden.

Zunächst guggt man, ob man einen Prozessor mit Hardwarevirtualisierung (HVM) hat:

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Bei mir sieht das dann so aus: 

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

Kommt keine Ausgabe, dann kann man die KVM nicht nutzen. vmx erscheint bei Intelprozessoren und svm bei AMD. Inzwischen ist der Kernel 2.6.20 für die AMD64/EMT64 Plattform nicht mehr masked, so das bei der Installation des Kernels mit

emerge -av gentoo-sources

bei mir momentan 2.6.20-r8 installiert ist. Als nächstes sollte man im Kernelsource guggen, ob das KVM Kernelmodul auch einkompiliert ist. Dazu verwendet man entweder genkernel oder man wechselt nach /usr/src/linux und gibt make menuconfig ein. Ob das KVM Modul aktiviert ist, sieht man unter

Device Drivers
 -> Virtualization
 -> Kernel-based Virtual Machine (KVM) support

Hier schaltet man dann die KVM für Intel oder eben AMD ein, falls nicht schon passiert. Wenn man den Kernel neu erzeugen muss, dann sollte man das aber mit genkernel machen mit

genkernel --menuconfig

Wenn man dann einen fertigen Kernel hat und der Rechner eventl. restartet wurde, kann man das Kernelmodul laden für Intel

modprobe kvm-intel

und für AMD

modprobe kvm-amd

Nun ist es so, das das KVM Modul höchstwahrscheinlich mit dem GCC 4 kompiliert worden ist. Bei gcc -v kommt bei mir z.B. die Version 4.1.1 zu Tage. Der Emulator Qemu läßt sich aber momentan aber nur mit GCC 3 übersetzen. Also müssen wir den nachinstallieren:

emerge =sys-devel/gcc-3.4.6

Nun brauchen wir die Programme für den Userspace und damit u.a. den Emulator Qemu, der hier in einer angepassten Version für die KVM vorliegt. Die KVM Userspace-Programme kann man bei Sourceforge downloaden:

Kernel virtual machine

Für den Kernel 2.6.20 brauchen wir die Version 12 und für Kernel 2.6.22 KVM-36. Die Installation sieht dann z.B. wie folgt aus:

tar xvfz kvm-12.tar.gz
cd kvm-12
./configure --prefix=/opt/kvm --qemu-cc="/usr/bin/gcc32"
make
make install

U.U. muss man noch die Alsa-Sources nachinstallieren (die musste ich unter Debian Etch nachinstallieren). Bei mir waren alle nötigen Sourcen schon vorhanden. Wenn das dann durchgelaufen ist, findet man in /opt/kvm/bin qemu-img zum Erzeugen der VM-Images und qemu-system-x86_64 mit dem man die VM dann startet.

So... Dann sind also mal die Grundvoraussetzungen für die KVM geschaffen. Wie man Images erzeugt und wie man mehrere VMs mit Hilfe des VDE (Virtual Distributed Ethernet) ans Netz bringt, zeig ich dann später. Mehr zu dem Thema auch im KVM Gentoo Wiki.

Technorati Tags: , ,

C64 - Arkanoid 2

Oweia... Das hab ich Stunden lang gespielt ;-)

Und von den 100 hier wahrscheinlich auch 3/4 ;-)

Ich schätze, das gilt auch für die hier ;-)



Freitag Juli 06, 2007

Kommentare

Kleiner Fehler, große Wirkung... Die Kommentare auf meiner Seite funktionieren jetzt wieder. Dank an alle die mir gemailt haben!

Mittwoch Juli 04, 2007

Nvidia GTS 8600, Gentoo und KDE

Also ich muss sagen, ich bin einigermaßen begeistert :-) Wer hätte das gedacht, das die 8600 GTS so schnell auf Gentoo mit den Nvidia-Treibern, Twinview und Kernel 2.6.20 laufen würde. Nachdem mein neuer Rechner eine ganze Weile nur als Server lief und inzwischen alle Server-Dienste in einer eigenen Qemu-VM (mit KVM) laufen, wollte ich auch endlich mal meinen alten Pentium IV einmotten und den neuen Geschwindigkeitsrausch genießen ;-)

Für die KDE-Installation passt man erst mal /etc/make.conf an:

LINGUAS="de en_GB"

Hier rein schreibt man die Sprachen für die Internationalisierung. Dabei bietet sich de für deutsch an, aber bei mir steht da immer en_GB drin, da ich immer mit den englischen Versionen arbeite. Dann installiert man das kde, dbus und hal Paket. Die enthalten alles, was man für KDE braucht und installieren mal einen Grundstock an KDE-Programmen:

emerge -av kde
emerge -av dbus
emerge -av hal
rc-update add dbus default
rc-update add hald default
echo "exec startkde" > ~/.xinitrc

Damit hat man dann alles, was man für KDE braucht. Also auf meinem T6700 dauerte das Kompilieren gute 3 Std. wenn mich nicht alles täuscht. Hatte das über Nacht durchlaufen lassen. Also es dauert auf jeden Fall etwas ;-) Dann müssen wir noch den Displaymanager anpassen in /etc/conf.d/xdm:

DISPLAYMANAGER="kdm"

Als nächstes holt man sich dann von der Nvidia-Seite den Treiber für die 8600 GTS. In meinem Fall war das die Version 100.14.11 für Linux AMD64/EM64T. Das hatte ich dann einfach per wget runtergeladen und mit sh NVIDIA-Linux-x86_64-100.14.11-pkg2.run gestartet. Dann folgt man einfach den Anweisungen des Programms. Dann konnte ich schon mal mit startx KDE starten. Das funktionierte auch gleich auf Anhieb und mein Eizo T965 zeigte auch gleich einen 1600x1200 großen Desktop mit 85 Hz an :-) Aber da hängt ja noch mein Eizo F730 dran. Da das NVIDIA X Server Settings Programm mal wieder nicht im Stande war (wie bei ATI auch), den zweiten Bildschirm einzurichten, musste ich also wieder Hand anlegen um Twinview ans Laufen zu bekommen. Das war aber nicht weiter schwierig. Xinerama wäre auch eine Option gewesen, aber bisher hat Twinview noch fast immer jeden Benchmark gewonnen. Und so sieht dann hierfür die /etc/X11/xorg.conf aus:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
    RgbPath         "/usr/lib64/X11/rgb"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Eizo"
    ModelName      "CRT-0"
    HorizSync       30.0 - 110.0
    VertRefresh     50.0 - 150.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Device"
    Identifier     "Videocard0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8600 GTS"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "CoolBits" "1"
    Option         "TwinViewOrientation" "RightOf"
    Option         "UseEdidFreqs" "True"
    Option         "SecondMonitorHorizSync" "30.0 - 110.0"
    Option         "SecondMonitorVertRefresh" "50.0 - 150.0"
    Option         "TwinView" "1"
    Option         "metamodes" "CRT-0: 1600x1200 +0+0, CRT-1: 1600x1200 +1600+0"
    SubSection     "Display"
        Depth       24
        Modes      "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Mehr zum Thema auch hier:
HOWTO KDE Desktop for the end-user

Technorati Tags: , , ,

Sonntag Juli 01, 2007

Die Bahner streiken...

Ich frag mich blos, mit was das gerechtfertigt sein soll? Verspätungen ohne Ende, unfreundliche Mitarbeiter, mieser Service, Streckenstilllegungen, usw. sind doch an der Tagesordnung. Dafür mehr Lohn? Eine Unverschämtheit ist das! Und egal wo und mit wen man bei der Bahn redet, es kümmert sich kein Mensch um irgendwas und es interessiert auch keinen. Die sollen das Streckennetz von der Bahn loslösen und endlich echten Wettbewerb auf der Schiene ermöglichen.

X: X Error of failed request

Wenn man z.B. eine Linux-Distribution unter qemu remote auf einen anderen Rechner installieren möchte, muss man i.d.R. dafür sorgen, das die X-Ausgabe auf den lokalen Client ladet. Das läßt sich z.B. über ssh realisieren:

ssh -X rechnername 

Wenn man nun versucht, z.B. Debian unter qemu zu installieren, kam bei mir folgende Meldung: 

X Error of failed request

Die Lösung des Problem ist, das man anstatt -X den Switch -Y verwendet:

ssh -Y rechnername

Das schaltet das trusted X11 forwarding ein.

Technorati Tags: , , qemu