KVM Virtual Machines made easy

Linux-KVM

Basis-Konfiguration von KVM-VMs (ohne Netzwerk):

Festplatte erstellen:
qemu-img create -f qcow2 vmhdd.qcow2 8G

System installieren:
qemu-system-x86_64 –enable-kvm -cdrom Downloads/SLES-11-SP2-DVD-x86_64-GM-DVD1.iso -vga vmware -m 3000 -smp 2 -boot d vmhdd.qcow2

System mit Netzwerk installieren:
qemu-system-x86_64 –enable-kvm -cdrom ~/Downloads/de_windows_7_professional_x64_dvd_X15-65813.iso -vga vmware -m 3000 -smp 2 -net nic,macaddr=`printf ‘DE:AD:BE:EF:%02X:%02X\n’ $((RANDOM%256)) $((RANDOM%256))` -net bridge,br=br1 -boot c /data/VMs/testvm.qcow2

VM starten:
qemu-system-x86_64 -enable-kvm -vga vmware -m 3000 -smp 2 LMDE.qcow2

[xen] Ubuntu 10.04 DomU auf openSuSE dom0 erstellen

Hallo,

wenn ihr euch bereits mit Xen beschäftigt habt (opensource-xen, nicht citrix) werdet ihr vielleicht festgestellt haben, dass es garnicht so einfach ist, eine VM mit Ubuntu paravirtualisiert zum laufen zu bekommen.

Vollvirtualisiert ist das kein Problem, allerdings fehlen einem dann die Treiber und die VM kann noch nichtmal über den Hypervisor heruntergefahren werden, also muss eine Lösung zum paravirtualsierten Betrieb her.

Im folgenden möchte ich meine erfolgreiche Vorgehensweise zum Erreichen dieses Ziels darlegen.

Debootstrap rpm besorgen

 Festplatten anlegen

Da ich die Festplatten per lvm erstellen beschreibe ich auch diesen Weg:

  • lvcreate -n ubuntu -L10G /dev/lvmxen
  • lvcreate -n ubuntu-swap -L256M /dev/lvmxen
  • mke2fs -j /dev/lvmxen/ubuntu
  • mkswap /dev/lvmxen/ubuntu-swap
  • mkdir /mnt/xen
  • dann die Platte mit mount /dev/lvmxen/ubuntu /mnt/xen mounten

Ubuntu debootstrappen

  • debootstrap –arch=amd64 –include=linux-image-generic,linux-image-2.6.32-21-generic,linux-image-2.6.32-305-ec2,linux-image-ec2,grub –components=main,universe,multiverse lucid /mnt/xen http://archive.ubuntu.com/ubuntu/
  • Hinweis dazu: Ich benutze hier den ec2-Kernel, weil der Xen-Kernel seit Hardy nicht mehr existent ist!

Einstellungen vornehmen

  • Nachdem Debootstrap das System erstellt hat, muss es noch angepasst werden.
  • dazu in die Chroot wechseln: chroot /mnt/xen
  • export LANG=DE

Fstab erstellen

  • touch /etc/fstab
  • vi /etc/fstab

/dev/xvda1 / ext3 defaults 0 1
/dev/xvdb1 none swap defaults 0 0
proc /proc proc defaults 0 0

Grub-Config erstellen

  • update-grub -> Menu.lst erstellen lassen

Netzwerk

  • vi /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

/etc/hosts erstellen
# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hardy

/etc/hostname erstellen
# cat /etc/hostname
lucid

Finetuning

Referenz auf die Hardware-Clock entfernen. Diese sind dafür verantwortlich, dass die VM hängt.
# update-rc.d -f hwclockfirst remove
# update-rc.d -f hwclock remove
# rm /etc/udev/rules.d/85-hwclock.rules

  • Chroot mit exit verlassen
  • /mnt/xen unmounten

DomU Konfiguration erstellen

# cat /etc/xen/ubuntu

bootloader = ‘/usr/bin/pygrub’

memory = 256

name = “ubuntu”

vif = [ ‘mac=00:01:2E:5E:F1:D2,bridge=br0 ‘ ]

disk = [ ‘phy:/dev/lvmxen/ubuntu,xvda1,w’, ‘phy:/dev/lvmxen/ubuntu-swap,xvdb1,w’ ]

Xen-Server domU Clone-Skript

Hallo,

hier ein Skript zum Klonen von virtuellen Maschinen. Vorraussetzung ist hierbei das von Novell entwickelte Skript xmclone.sh. Bei einer Xen-Installation auf openSUSE/SLES ist das Skript bereits vorhanden.

#!/bin/bash
# Datei vm-clone.sh

echo “Cloning A VM made easy!”

## Parameter eingeben

read -p “Bitte den Namen der zu klonenenden VM angeben: ” sourcedomU

read -p “Bitte den Namen des Klons angeben: ” newdomU

read -p “Bitte den neuen Hostname des Klons angeben: ” hostname

read -p “Bitte die IP-Adresse des Klons angeben[xxx.xxx.xxx.xxx]: ” ip

echo “Start Cloning the VM!”

## der geklonten VM eine zufällige MAC-Adresse generieren und zuweisen

MAC=`perl -e ‘printf “00:01:2E:%02X:%02X:%02X\n”, rand 0xFF, rand 0xFF, rand 0xFF’`

/etc/xen/scripts/xmclone.sh -n $hostname -i $ip -m $MAC $sourcedomU $newdomU

echo “Cloning complete!”

## Virtuelle Maschine aus der erzeugten Konfiguration erstellen

xm new /etc/xen/vm/$newdomU

Xen-server domU Install-Skript

Hallo,

hier ein Skript, welches nach Eingabe der Parameter eine VM erstellt:

#!/bin/bash
#Datei vm-install.sh

##Parameter eingeben

read -p “Bitte Name der VM eingeben: ” name

read -p “Bitte gewünschtes Betriebssystem eingeben: ” bs

read -p “Bitte Größe der Festplatte eingeben [G]: ” hdsize

read -p “Bitte Minimum RAM eingeben [MB]: ” minram

read -p “Bitte Maximum RAM eingeben [MB]: ” maxram

read -p “Bitte Anzahl der CPUs angeben: ” cpu

read -p “Bitte ISO-Image angeben [/mnt/iso]: ” iso

read -p “Paravirtualisiert oder vollvirtualisiert? [-v/-V]: ” virt

##Zufällige Mac-Adresse generieren

MAC=`perl -e ‘printf “00:01:2E:%02X:%02X:%02X\n”, rand 0xFF, rand 0xFF, rand 0xFF’`

## Festplatte per LVM erstellen

lvcreate -n $name -L $hdsize /dev/lvxen

##VM generieren (im Hintergrund)

vm-install -o $bs -n $name –vcpus=$cpu –nic bridge=br0,mac=$MAC –disk phy:/dev/lvmxen/$name –disk /mnt/iso/$iso,hdc,cdrom,r -m $minram -M $maxram $virt –background

[Xen-Server 5.6] VM-Management per Console

Zugriff auf Xen-Server: ssh als Root oder über XenCenter
Serverconsole:

  • xsconsole

 

VM-Erstellen:

  • xe vm-install new-name-label=XenCenter template=”Windows 7 (32-bit)”
  • Template ist die Vorlage für die Hardware der VM. Diese Vorlagen kann man sich auflisten lassen: xe template-list

 

ISO-Images anzeigen:

  • xe cd-list

 

ISO-Image an die VM anhängen:

  • xe vm-cd-add vm=<vm_name> cd-name=<iso_name> device=3

 

VM starten/stoppen:

  • xe vm-start vm=<vm_name>
  • xe vm-shutdown vm=<vm_name>

 

Konsole der VM per vncviewer starten (für Linux-Client):

  • vncviewer -via root@xen-host-ip localhost:1

 

Bei geändertem SSH-Port hat man die Möglichkeit die Umgebungsvariable fürs VNC-Tunneling anzupassen oder sich den Port lokal zu mappen.

 

Möglichkeit 1: Umgebungsvariable ändern:

  • export VNC_VIA_CMD=’/usr/bin/ssh -x -p <custom_ssh_port> -f -L %L:%H:%R %G sleep 2′

 

schon geht der Tunneling-Befehl ohne Angabe des Ports:

  • vncviewer -via root@xen-host-ip localhost:1

 

Anmerkung: Diese Änderung ist nur temporär. Um dauerhaft darauf zurückgreifen zu können einfach den export in die Datei .profile im Homeverzeichnis eintragen!

 

Möglichkeit 2: Port lokal mappen

  • ssh -L PORT:localhost:PORT -p ssh_port nutzer@HOSTNAME
    PORT ist hierbei der VNC Port, auf dem die VM-Konsole läuft.
  • vncviewer localhost:PORT

 

der VM ein Netzwerkinterface zuweisen:

  • xe networks-list

 

Zutreffendes Interface heraussuchen und uuid kopieren.

  • xe vif-create network-uuid=<network-uuid> vm-uuid=<vm-uuid> device=3

 

VM Klonen:

  • xe vm-clone vm=<name_vm1> new-name-label=<name_vm2>

Terminalserver auf Ubuntu 10.04

Hi,

ist lange her, dass ich mich mit sowas wie einem Terminalserver beschäftigt habe. Wenn ich mich recht entsinne ungefähr 4 Jahre. Damals habe ich mal unter großem Zeitdruck einen Windows Terminalserver auf Server 2003 installiert und eingerichtet und war relativ beeindruckt, welche Möglichkeiten sich einem boten.

Beispielsweise wünscht man sich als Administrator oft, auf Lan Partys einen Gastzugang für Leute, die keinen PC dabeihaben einzurichten, auf denen man im Internet surfen kann.

Mit einem Terminalserver kein Problem, einfach einen Rechner auf PXE-Boot umstellen und fertig.

Oft werden beim Einsatz von Terminalservern als Clients so genannte “Thin-Clients” eingesetzt. Thin-Clients sind im Prinzip kleine Rechner, die außer einem Mainboard, Grafikkarte, Soundkarte und Netzwerkkarte (und oft einen kleinen Flash-Speicher, auf dem die Konfiguration des Clients abgelegt ist) nichts besitzen. Sie verbinden sich über das lokale Netzwerk mit dem Terminalserver und übertragen nur das Bild an den Monitor, alle Eingaben die über Tastatur und Maus getätigt werden, werden auf dem Server aktiv.

Es müssen aber nicht unbedingt Thin-Clients sein, man kann auch einen normalen Rechner dafür einsetzen. Die einzige Vorraussetzung dabei ist, dass das Bios und die Netzwerkkarte PXE-Boot unterstützen.

Es muss aber kein teurer Windows-Terminalserver sein, nein für Linux gibt es sowas auch, und natürlich kostenlos.

Wo beim Windows-Terminalserver für die Anzahl der Clients Lizenzen gekauft werden müssen, limitiert bei Linux einzig die Rechenleistung die Anzahl der Clients.

Realisiert wird der Terminalserver über das so genannte Linux Terminal Server Project (LTSP).

Terminalumgebung konfigurieren

Nun aber zu Linux:

  1. Dem Server eine statische IP-Adresse zuweisen, falls noch nicht geschehen.
  2. Das Standardpaket von LTSP ist schon installiert, allerdings müssen noch folgende Pakete besorgt werden: sudo apt-get install ltsp-server-standalone openssh-server sudo apt-get install dhcp3-server
  3. Wenn dies installiert ist, richtet man die Terminalumgebung ein, dazu wird einfach ein Abbild des Systems erstellt und in den entsprechenden Ordner geschoben. Der Befehl dazu: sudo ltsp-build-client
  4. Danach muss der Desktop geupdatet werden. sudo apt-get update sudo apt-get upgrade

Die Terminalumgebung ist jetzt im Prinzip fertiggestellt, jetzt muss der DHCP-Server konfiguriert werden.

DHCP-Server konfigurieren

Bei dem LTSP-Paket ist schon eine Beispielkonfiguration enthalten. Sie befindet sich in /etc/ltsp/dhcpd.conf .

die erste Zeile versichert, dass Clients diesen DHCP-Server nutzen.

authoritative;

Hiermit wird das gewünschte Subnetz mit Maske eintragen:

subnet 192.168.7.0 netmask 255.255.255.0 {

Die nächste Zeile gibt an, welche Ip-Adressrange der DHCP-Server bedienen soll:

range 192.168.7.125 192.168.7.246;

Hier kann man den Clients einen DNS-Server mitgeben:

option domain-name-servers 12.32.34.32;

Hiermit wird die Broadcast-Adresse festgelegt.

option broadcast-address 192.168.7.255;

Hiermit gibt man den Router für das Netz an (Ist auch gleichzeitig Gateway in andere Netze)

option routers 192.168.7.2;

Nun die eigentliche Konfiguration für die Clients

Hiermit erstellt man die Konfiguration für den Host ws205

host ws205 {

[… damit der Server die Hostnamen den Ip-Adressen zuordnen kann, müssen die Hosts in die Datei /etc/hosts mit folgendem Syntax eingetragen werden:

 192.168.7.202 ws202
192.168.7.203 ws203
 192.168.7.205 ws205
192.168.7.206 ws206 ...]

Anschließend muss man dem Server die MAC-Adresse der Netzwerkkarte des angelegten Clients mitgeben:

hardware ethernet 00:13:90:00:D7:8F;

Nun kann man dem Rechner eine feste Ip-Adresse zuordnen:

Fixed-address 192.168.7.205;

Zu guter Letzt gibt man den Pfad des Pxe-Bootloaders an:

filename "/ltsp/i386/pxelinux.0";

Eine vollständige Konfiguration würden dann beispielsweise so aussehen:

subnet 192.168.7.0 netmask 255.255.255.0 {
authoritative;
range 192.168.7.125 192.168.7.246;
option domain-name-servers 12.32.34.32;
option broadcast-address 192.168.7.255;
option routers 192.168.7.2;
host ws205 {
hardware ethernet 00:13:90:00:D7:8F;
fixed-address 192.168.7.205;
filename "/ltsp/i386/pxelinux.0";
}
host ws247 {
hardware ethernet 00:13:90:00:67:AF;
fixed-address 192.168.7.247;
filename "/ltsp/i386/pxelinux.0";
}

Nun muss man die Datei /etc/ltsp/dhcpd.conf nach /etc/dhcp3-server kopieren und die vorhandene Datei dhcpd.conf ersetzen.

Zum Schluss startet man den DHCP-Server und die LTSP-Dienste neu.

Dazu folgende Befehle ausführen:

sudo /etc/init.d/dhcp3-server restart
sudo ltsp-update-sshkeys
sudo  ltsp-update-image

Man sollte dann noch Benutzer mit eingeschränkten Rechten anlegen, ist aber optional und kann auch noch später erledigt werden, die Clients können sich ab jetzt mit dem Server verbinden.

Teamspeak 3 Server auf Eisfair

Hi,

hier eine Step-by-Step Anleitung um einen Teamspeak Server auf Eisfair aufzusetzen.

Basisinstallation

  1. Virtuelle Maschine einrichten (2GB Festplatte,256MB RAM, 1 NIC) und Eisfair installieren. Prozedere sollte klar sein.
  2. Basiseinstellungen vornehmen (IP-Adresse, usw),  Benuter TS erstellen und einmal mit TS einloggen.
  3. Inet Services über Pack-Eis installieren (Alle Pakete mitinstallieren, kann auf jedenfall nicht schaden) und Rechner neustarten.
  4. C++ Librarys über Pack-Eis installieren. "lib" in die Suche eingeben und "Library:Standard C V6" auswählen.
  5. Nach dem Neustart des Servers navigiert man sich wieder in die Pack-Eis Suche und sucht nach Teamspeak. Dort wählt man "Teamspeak 3 Server" aus und folgt den Installationsanweisungen.
  6. Anschließend kommt man automatisch ins Configurationsmenü des TS-Servers. Dort setzt man die Variable Start_Teamspeak3 auf yes und die Variable Teamspeak3_use_Mysql auf yes. Abspeichern, fertig.
  7. Konfiguration aktivieren? ja. Mysql installieren? ja. Dies kann eine Weile dauern.
  8. In der Konfiguration Mysql_Network auf yes setzen, bestätigen und aktivieren.
  9. Nun muss man nur noch über Services -> Teamspeak3 den TS Server starten und er ist theoretisch fertig

Konfiguration

Jetzt muss man sich noch auf dem Server als Serveradmin registrieren, und dafür braucht man einen sog. Token. Dieser muss auf dem Server erstellt werden.

Man kann sich aber ab diesem Moment schonmal auf dem Server mit einem beliebigen Nick anmelden (über StandardPort 9987).

Here we go:

  1. Services->Teamspeak3->Advanced Configuration->Show/create Tokens
  2. Nun haben wir unseren Token.
  3. Im Teamspeak Client klicken wir nun auf das Register Rechte und geben unseren Token ein.
  4. Hat man diesen eingeben wurde man der Gruppe Server-Admins hinzugefügt.

Für erweitere Konfiguration sind die Videos von Teamspeak recht interessant: http://www.youtube.com/teamspeak#p/u/1/qa8T6KM9_go

In dieser Form hat man nun 32 max. Clients zur Verfügung. Man hat allerdings die Möglichkeit sich bei Triton zu registrieren unter http://npl.tritoncia.com/ und eine sogenannte Non-Profit-License zu erhalten, die es einem erlaubt 512 Clients zu verwalten.

Esxi 4.0: Ssh Zugriff für Root und andere User

Hiho,

bei Vmware Esxi ist der Ssh Zugriff standardmäßig deaktiviert, er muss also zunächst aktiviert werden.

  1. an Esxi Server im laufenden Betrieb ALT + F1 drücken
  2. blind “unsupported” eintippen und root Kennwort eingeben
  3. Als nächstes muss die Konfigurationsdatei des Inet-Services editiert werden, dazu “vi /etc/inetd.conf” eingeben.
  4. Nun scrollt man bis zur Zeile die mit “#ssh” beginnt.
  5. Die Auskommentierung einfach entfernen und fertig “Taste x, ESC, wq!”

Anm für Vi-Gimps: ->Taste x, ESC, :wq!

Damit wäre nun schonmal der Ssh Zugriff aktiviert, allerdings kann man sich in diesem Zustand nur mit root anmelden, was nicht unbedingt empfehlenswert ist.

Nun fragt man sich warum andere User sich eigentlich nicht einloggen können. Der Grund dafür liegt am Home-Verzeichnis der jeweiligen User. Esxi löscht nach jedem Neustart den Ordner /home (Anmerkung: Root ist in sofern davon nicht betroffen weil sein homeverzeichnis “/” ist). Die User haben in der /etc/passwd ihr Homeverzeichnis aber in /home/<<user>> Da gibts dann also ein Problem, dass /home einfach nicht da ist.

Lösung:

  1. als root mit vi die Datei /etc/passwd öffnen
  2. zum entsprechenden User scrollen
  3. Bsp: –> luke:x:502:100:Lukas Skywalker:/home/luke:/bin/bash
  4. die rot markierte Stelle bezeichnet das Homeverzeichnis des Users, diese einfach durch “/” ersetzen.
  5. Speichern (ESC, :wq!) und fertig ist die Suppe.