QEMU: Netzwerkanbindung
Nachdem ich kürzlich beschrieben habe, wie man Qemu mit Hardwarevirtualisierung unter Gentoo zum Laufen bringt, geht's dieses Mal um die Netzwerkanbindung von Qemu. Grundsätzlich ist das für eine Qemu-Instanz kein Problem. Man startet die VM einfach mit der Option -net nic -net user (was aber sowieso Default ist). Der Nachteil an der ganzen Sache hier ist allerdings, das nur TCP/IP-Verbindungen funktionieren. Ein ping z.B. funktioniert nicht. Wenn man allerdings eine vollständige Netzanbindung haben möchte, muss man etwas mehr tun. Grundsätzlich gibt es mehrere Möglichkeiten. Ich beschreibe hier die Möglichkeit über TAP und VDE (Virtual Distributed Ethernet). Diese erscheint mir recht sinnvoll und relativ schnell einzurichten. VDE stellt eine Art virtuellen Switch zur Verfügung, an dem mal einfach eine oder mehrere virtuelle Maschinen an
Zunächst brauchen wir TUN/TAP-Unterstützung im Kernel. Ich schätze, das dürfte so ziemlich jeder schon haben. Wenn man's nicht im Kernel einkompiliert hat (dann weiss man sicherlich, das man das gemacht hat ;-) ), kann man einfach mal
modprobe tun
eingeben. Wenn keine Fehlermeldung kommt, ist das Modul geladen (prüfen mit lsmod). Wenn das nicht klappt, muss man in die Kernelsources guggen und das TUN/TAP-Modul aktivieren. Dazu wechselt man nach /usr/src/linux und tippt make menuconfig ein. Unter
Device Drivers -> Network device support
aktiviert man Universal TUN/TAP device driver support als Kernelmodul. Als nächstes installieren wir VDE:
emerge -av vde
Dann erzeugen wir uns ein TAP-Device:
cd /etc/init.d/
ln -s net.lo net.tap0
Unter /etc/conf.d/net fügen wir Folgendes ein (eventl. passt man noch die IP-Adresse an):
config_tap0=( "10.0.2.1 netmask 255.255.255.0 " )
Um das Interface zu starten, gibt man Folgendes ein:
/etc/init.d/vde start
/etc/init.d/net.tap0 start
Damit VDE beim Start des Rechners automatisch startet, aktivieren wir das Start-Skript entsprechend:
rc-update add vde default
Mit ifconfig müsste man jetzt das tap0 Device sehen. Nun können wir die verschiedenen Qemu-Instanzen starten. Wichtig ist, das man jeder Qemu-VM eine eigene MAC-Adresse zuteilt. Qemu vergibt per Default immer die gleiche MAC-Adresse. So können sich die verschiedenen Qemu-Instanzen aber nicht über den virtuellen Switch unterhalten.
Nun kann man eine Qemu-Instanz starten. Ich habe Qemu unter /opt/kvm installiert. Das sieht dann so aus:
vdeq /opt/kvm/bin/qemu-system-x86_64 -net vde,vlan=0,sock=/var/run/vde.ctl -net nic,vlan=0,macaddr 52:54:00:00:AA:02 -hda disk.img -m 128 -localtime
vdeq ist ein Wrapper der Qemu startet und das Qemu-Gastsystem mit dem VDE Switch verbindet. Wenn man keine grafische Ausgabe möchte, weil das System z.B. auf einem Server läuft, gibt man einfach noch zusätzlich z.B. noch -vnc :2 an. Dann kann man sich mit dem vncclient mit dem Qemu-Gast verbinden. Was man nicht tun sollte, so logisch es klingen mag, -nographic anzugeben. Da geht bei mir die CPU Last ganz mächtig nach oben. Wieso ist mir allerdings etwas schleierhaft und das ist vielleicht auch nicht überall so.
Noch ein Tipp: Wenn ihr meint, ihr habt alles richtig gemacht, startet Qemu und setzt dann einen einfachen ping ab und es kommt die Meldung bad file descriptor, dann stoppt die VM, beendet VDE, stoppt das TAP-Device, löscht alles was irgendwie nach vde klinkt unter /var/run raus, startet das TAP-Device wieder, konfiguriert es (IP, Netmask, usw.), startet VDE wieder und anschließend Qemu. Bei mir hat's geholfen ;-) Hat mich auch blos 10 Jahre meines Lebens gekostet...
Ein paar Links:
Qemu - How to use Network
VDE Basic Networking
Using VDE with QEMU HOWTO
Gentoo HowTo: Qemu
Qemu / KVM - Ein grosses HowTo
Gentoo Wiki - KVM
OS on QEMU
Ubuntu - The Kernel Virtual Machine
QEMU Notes
QEMU - Debian - Linux - TUN/TAP - network bridge
QEMU, VDE and Dnsmasq
VDE, Dnsmasq SystemV Init-Skript
QEMU host <-> guest network bridging
Technorati Tags: gentoo, network, qemu, tap, tun, vde, dnsmasq, howto, debian, bridge
Posted at 01:59vorm. Juli 30, 2007 by cetixx in Tipps | Kommentare [0]
GENTOO: 32bit Firefox Flash Plugin unter AMD64
Update 20090416: Wie schon in einem anderen Post von mir erwähnt, gibt es jetzt 64Bit-Versionen des Flash- und Java-Plugins.
Es ist schon faszinierend, das Adobe es immer noch nicht geschafft hat, einen 64Bit Flashplayer auf die Beine zu stellen... Nun das soll uns unter Gentoo aber nicht daran hindern, unseren tollen mit
emerge -av firefox
gebauten 64bit Firefox 2 nicht mit einem 32bit Flash-Plugin ans Laufen zu bekommen :-) Zunächst lädt man sich mal von der Adobe Webseite das 32bit Flash-Plugin (64bit gibt's eh nicht...) runter. Das entpackt man dann z.B. nach /opt/flash/9. Dann brauchen wir einen kleinen Wrapper:
emerge -av nspluginwrapper
Den nspluginwrapper kann man sich auch von der Homepage runterladen. Funkt auch mit anderen AMD64/EMT64 Linuxversionen wie etwa Debian. Dann übergibt man einfach den vollen Pfad an diesen Wrapper:
nspluginwrapper -i /opt/flash/9/libflashplayer.so
Den Rest erledigt der Wrapper für uns. Wenn wir Firefox nun durchstarten, sollten wir auf youtube.com schon mal die Videos anguggen können - und wenn man Glück hat, auch mit Sound. Das hat bei mir nicht funktioniert. Ich sah das erste Mal die Videos ohne Sound. Aber auch hier gibt es Abhilfe:
emerge -av esound
/etc/init.d/esound start
rc-update add esound default
Ich hab sicherheitshalber dann den Rechner durchgestartet. Und dann liefen die Flash-Videos auch mit Sound :-))
Technorati Tags: firefox, plugin, flash, gentooPosted at 03:00vorm. Juli 28, 2007 by cetixx in Tipps | Kommentare [0]
COMPIZ-FUSION: Ein paar Tipps unter Gentoo
Ein bisschen hat's jetzt schon gedauert, aber nun läuft Compiz-Fusion endlich unter KDE. Vielleicht helfen die Tipps hier dem Einen oder Anderen weiter.
Als erstes Problem hatte ich Schwierigkeiten beim emerge -av compiz-fusion der mit folgendem Fehler abbrach:
MF .deps/scalefilter.Tpo -c scalefilter.c -fPIC -DPIC -o .libs/scalefilter.o
scalefilter.c:39:18: error: text.h: No such file or directory
scalefilter.c: In function 'scalefilterRenderFilterText':
scalefilter.c:120: error: 'CompTextAttrib' undeclared (first use in this function)
scalefilter.c:120: error: (Each undeclared identifier is reported only once
scalefilter.c:120: error: for each function it appears in.)
scalefilter.c:120: error: expected ';' before 'tA'
scalefilter.c:160: error: 'tA' undeclared (first use in this function)
scalefilter.c:169: error: 'TEXT_STYLE_BOLD' undeclared (first use in this function)
scalefilter.c:169: error: 'TEXT_STYLE_NORMAL' undeclared (first use in this function)
scalefilter.c:174: error: 'TextRenderNormal' undeclared (first use in this function)
scalefilter.c:177: error: 'TEXT_ID' undeclared (first use in this function)
scalefilter.c: At top level:
scalefilter.c:323: warning: no previous prototype for 'scalefilterUpdateFilter'
make[3]: *** [scalefilter.lo] Error 1
make[3]: Leaving directory `/var/tmp/portage/x11-plugins/compiz-fusion-plugins-extra-9999/work/plugins-extra/src/scalefilter'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/x11-plugins/compiz-fusion-plugins-extra-9999/work/plugins-extra/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/x11-plugins/compiz-fusion-plugins-extra-9999/work/plugins-extra'
make: *** [all] Error 2
!!! ERROR: x11-plugins/compiz-fusion-plugins-extra-9999 failed.
Call stack:
ebuild.sh, line 1621: Called dyn_compile
ebuild.sh, line 973: Called qa_call 'src_compile'
ebuild.sh, line 44: Called src_compile
compiz-fusion-plugins-extra-9999.ebuild, line 48: Called die
!!! make failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/x11-plugins/compiz-fusion-plugins-extra-9999/temp/build.log'.
!!! This ebuild is from an overlay: '/opt/layman/xeffects'
Nachdem ich eine Weile rumgebastelt habe, habe ich mich vertrauensvoll an das Gentoo Forum gewendet. Die Lösung:
emerge compiz-fusion --skipfirst
emerge -1 compiz-fusion-plugins-extra
D.h. wir überspringen soz. den ersten Fehler und damit das compiz-fusion-plugins-extra Paket und installieren es hinterher erst. Das sorgt dann dafür, das die fehlende Datei dann zum Schluss vorhanden ist.
Meinen ersten Test hab ich dann gemacht, in dem ich compiz-start eingegeben habe. Das ist mir dann um die Ohren geflogen mit:
Xlib: extension "GLX" missing on display ":0.0"
Dabei hab ich dann festgestellt, das die GLX Extension nicht geladen werden konnte. Das sieht man in der /var/log/Xorg.0.log. Lösung war, den Nvidia Grafiktreiber neu zu installieren.
Als Nächstes ging dann der CompizConfig Settings Manager nicht. Beim Start von ccsm brach das Ganze mit
Traceback (most recent call last):
File "/usr/bin/ccsm", line 23, in ?
import compizconfig
ImportError: /usr/lib/python2.4/site-packages/compizconfig.so: undefined symbol: ccsLoadPlugin
ab. Lösung von dem Ganzen:
emerge -av libcompizconfig
Ansonsten lief die Installation wie unter Gentoo Xeffects beschrieben ganz gut.
Technorati Tags: gentoo, compiz, kde, xeffects, ccsm, nvidia, fusion
Posted at 03:00vorm. Juli 21, 2007 by cetixx in Tipps | Kommentare [0]