KVM Host aufsetzen und einrichten

Virtualisierung an sich ist eine feine Sache, man nehme einen Rechner und simuliere auf diesem mehrere Rechner. Dank KVM ist die ganze Sache auch ziemlich einfach. Dazu installiert man auf einem Rechner ein Ubuntu Server 12.10 (mit dem OpenSSH Paket, und einem Nutzer (in diesem Fall „seeseekey“)). Dabei sollte man darauf achten, das der Nutzer kein verschlüsseltes „home“-Verzeichnis hat, sonst könnte es später Probleme mit der Verwendung von SSH Schlüsseln geben. Anschließend überprüft man auf der Konsole mittels:

cat /proc/cpuinfo

ob die CPU über die entsprechende Virtualisierungsfunktionen verfügt. Die erkennt man in der Sektion „flags“ der Ausgabe. Dort muss für Intel CPUs das Flag „vmx“ und für AMD CPUs das Flag „svn“ vorhanden sein. Ist dies der Fall so kann KVM mittels:

sudo apt-get install qemu-kvm libvirt-bin virtinst

installiert werden. Ein anschließendes:

kvm-ok

überprüft dann nochmal ob die CPU wirklich für KVM geeignet ist. Dabei ist zu beachten das es „kvm-ok“ nur unter Ubuntu gibt, andere Distribution enthalten es aller Wahrscheinlichkeit nach nicht. Nun muss der Nutzer noch der Gruppe „libvirtd“ hinzugefügt werden. Auf der Konsole ist dazu ein:

sudo adduser seeseekey libvirtd

nötig. Danach sollte der KVM Host neugestartet werden, bzw. sich an- und abgemeldet werden. Zur Verwaltung der Maschinen wird der „Virtual Machine Manager“ benutzt. Dieser wird auf der entsprechenden Zielmaschine (welche nicht identisch mit dem KVM Host sein muss) mittels:

sudo apt-get install virt-manager

installiert. Auf der entsprechenden Maschine, welche die Verwaltung übernimmt sollte ein SSH Schlüssel erzeugt werden. Dies geschieht auf der Konsole:

ssh-keygen -t rsa -C ""

Nun übertragen wir den Schlüssel auf den KVM Host, damit wir uns mit diesem verbinden können, was dann so aussehen könnte:

ssh-copy-id -i ~/.ssh/id_rsa.pub seeseekey@kvmhost

Danach sollte der „Virtual Machine Manager“ gestartet werden. Über „Datei“ -> „Verbindung hinzufügen“ wird im darauf folgenden Dialog der KVM Host hinzugefügt.

Eine Verbindung wird hinzugefügt

Nun wird noch eine Netzwerkbrücke eingerichtet. Diese dient dazu, das man die virtuellen Maschinen auch von außen ansprechen kann. Ohne diese Brücke befinden sich die Maschinen hinter einem NAT und können nur mit dem KVM Host kommunizieren.

Um die Bridge zu erstellen wird die Datei „/etc/network/interfaces“ geändert. Auf einem normalen System sollte diese wie folgt aussehen:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Nun wird „auto eth0“ in „auto br0“ und „iface eth0 inet dhcp“ in „iface br0 inet dhcp“ geändert. Anschließend fehlt nur noch die Zeile:

bridge_ports eth0

welche am Ende hinzugefügt wird. Damit sieht die neue „/etc/network/interfaces“ dann wie folgt aus:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0

Danach geben wir im Terminal:

/etc/init.d/networking restart

mit root-Rechten ein und schon ist die entsprechende Konfiguration wirksam.

Die Storage Pools des KVM Host

Nachdem dies geschehen ist kann man eine neue virtuelle Maschine anlegen. Wenn man ein Windowssystem installiert, sollte man darauf achten, das man die entsprechenden Treiber anschließend installiert. Diese findet man unter http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/.

Bei den Storage Pools, in welchem die Daten für die virtuellen Maschinen liegen, empfiehlt es sich den „default“ Pool außen vor zu lassen. Stattdessen legt man sich einen Pool „images“ und einen Pool „machines“ an. Im „images“ Pool lagert man dann alle Betriebsystemimages für die Installation neuer Maschinen. Im „machines“ Pool hingegen, sollten sich die installierten Maschinen befinden.

Das Quellgerät muss auf die Netzwerkbrücke eingestellt werden

In jeder virtuellen Maschine muss dabei das Quellgerät in der Netzwerkkonfiguration auf die Netzwerkbrücke (br0) eingestellt werden. Damit ist die Maschine ein Teil des Netzwerkes in welchem sich auch der KVM Host befindet. Bei den virtuellen Maschinen, empfiehlt es sich bei grafischen Systemen in der entsprechenden Konfiguration unter „Video“ das Modell „vmvga“ auszuwählen.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/SSH
http://wiki.ubuntuusers.de/KVM
http://wiki.ubuntuusers.de/virt-manager
http://wiki.ubuntuusers.de/Virtualisierung
http://de.wikipedia.org/wiki/Kernel-based_Virtual_Machine

Androidgerät mittels adb löschen

Falls man mal in die Verlegenheit kommt ein Androidgerät löschen zu müssen, aber das Gerät keinen funktionierenden Bildschirm mehr besitzt, so hilft „adb“ aus dem Android SDK welches unter http://developer.android.com/sdk/index.html bezogen werden kann.

Nach dem Download wird man feststellen das „adb“ nicht mehr im „tools“ Ordner des SDKs liegt. Stattdessen erwartet uns dort eine Datei mit dem Namen „adb_has_moved.txt“. Dort wird man darüber informiert das „adb“ nun in dem Ordner „plattform tools“ zu finden ist. Um diesen Ordner zu bekommen führt man unter Linux die Applikation „android“ aus dem „tools“ Ordner aus und installiert das entsprechende Paket.

Sollte anschließend beim Start von „adb“ die Meldung:

./adb Datei oder Verzeichnis nicht gefunden

erscheinen so hilft hier ein:

sudo apt-get install ia32-libs

Nun schließt man das aktive Gerät an und gibt im Terminal folgendes ein:

./adb remount
./adb shell

In der Shell geben wir dann die entscheidenden Befehle ein:

wipe all
exit

Damit ist das Telefon von privaten Nutzdaten befreit.

Git Repository umziehen

Manchmal möchte man ein Git Repository von Server A auf Server B umziehen (in diesem Fall von Google Code zu Github). Das ganze ist dabei relativ unproblematisch. Zuerst wird das bestehende Repository geklont:

git clone https://code.google.com/p/cscl/

In der GitHub Oberfläche erstellen wir nun ein neues Repository (in diesem Fall mit dem Namen „CSCL“). Danach entfernen wir den alten Remote und weisen einen neuen hinzu:

git remote rm origin
git remote add origin :seeseekey/CSCL.git

Mittels „git remote -v“ kann man sich die bestehenden „Remotes“ anschauen. Nachdem der neue Remote gesetzt wurden laden wir das Repository (mittels „push“) bei GitHub hoch:

git push -u origin master

Damit ist der Umzug abgeschlossen.

Weitere Informationen gibt es unter:
https://help.github.com/articles/removing-a-remote

Ubuntu 12.04 + Time Machine

Die Funktion „Time Machine“ welche unter Mac OS X zu finden ist funktioniert mittels einer USB Festplatte oder einer Time Capsule. Wer aber nun schon einen Linux Server (in diesem Fall ein Ubuntu 12.04) rumzustehen hat, der möchte diesen eventuell für die Sicherung mittels Time Machine benutzen. Dazu gibt man im der Konsole folgendes ein:

sudo apt-get install netatalk avahi-daemon libnss-mdns

Nachdem die entsprechenden Pakete installiert worden sind, konfigurieren wir den Avahi Service mittels „sudo nano /etc/avahi/services/afpd.services“. In die sich öffnende Datei tragen wir folgendes ein:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>

Danach legen wir die entsprechende Freigabe an, in dem wir die Datei „/etc/netatalk/AppleVolumes.default“ mittels:

sudo nano /etc/netatalk/AppleVolumes.default

bearbeiten. Der Inhalt dieser Datei sieht dabei so aus:

/home/seeseekey/Backup TimeMachine allow:seeseekey cnidscheme:dbd options:usedots,upriv,tm

Nun muss noch einmal der Server neugestartet werden und schon kann die Freigabe mittels Time Machine benutzt werden. Sollte beim Start des ersten Backups folgende Fehlermeldung:

Fehler 30 beim ersten Backup mittels Time Machine

erhalten so muss man das Terminal öffnen und dort folgendes eingeben:

hdiutil create -size $500g -fs HFS+J -type SPARSEBUNDLE -volname “BACKUP” Amy_133713371337.sparsebundle

Damit erzeugen wir eine Sparsebundle-Datei. Der Parameter Size gibt dabei die maximale Größe an. Der Dateiname entspricht dem Schema „COMPUTERNAME_MACADRESSE.sparsebundle“. Die erzeugte Datei kopieren wir nun in das Wurzelverzeichnis der entsprechenden Freigabe. Danach sollte das Backup dann ohne Probleme funktionieren.

Weitere Informationen gibt es unter:
http://meetinx.de/tutorial-time-machine-auf-nas-netzwerk-laufwerk/
http://www.kvibes.net/2011/08/mac-os-x-lion-timemachine-und-linux/
http://meetinx.de/tutorial-time-machine-backup-sparsebundle-in-groesse-begrenzen/
http://blog.rotzoll.net/2010/07/linux-als-apple-afp-share-mit-timemachine-support-backups-uber-das-netzwerk/

CraftBukkit Server unter Ubuntu aufsetzen

Für Minecraft gibt es ja zwei Server, den offiziellen und den CraftBukkit Server welcher unter http://bukkit.org/ heruntergeladen werden kann. Der CraftBukkit Server hat dabei den Vorteil das er mit Plugins ausgestattet werden kann, welche die Funktionalität des Spieles erhöhen.

Um den Server auf einem Ubuntusystem aufzusetzen muss im ersten Schritt Java installiert werden:

apt-get install openjdk-6-jre-headless

Danach legt man sich den passenden Nutzer für Minecraft an und wechselt in dessen Kontext:

adduser minecraft
su minecraft
cd /home/minecraft/

Dort lädt man nun mittels „wget“ die neuste CraftBukkit Version herunter:

wget "http://dl.bukkit.org/downloads/craftbukkit/get/01119_1.2.5-R3.0/craftbukkit.jar" -O "craftbukkit.jar"

Das Bashskript „start-server.sh“ soll den Server dann starten:

#!/bin/sh
screen java -Xmx2048M -Xms2048M -jar craftbukkit.jar

Nachdem der Server mittels „screen“ gestartet wurde, drückt man „Strg + A“ und anschließend „Strg + D“ um ihn in den Hintergrund zu legen. Beim ersten Start sollte der Server einen Ordner „plugins“ anlegen. In diesen kann man dann eigene Plugins legen. Für den Anfang sollte man es mit folgenden Plugins versuchen:

Diese können auch ohne Rechteplugin genutzt werden, da die Befehle nur den Serveroperatoren zu Verfügung stehen.

Weitere Informationen gibt es unter:
https://seeseekey.net/archive/4276