Kategorien
Technisches

Upstart Session/dbus unter LXC

Das Puppet will schauen, welche Dienste auf dem Trusty im LXC laufen. Das Upstart vom Trusty funktioniert aber komischerweise nicht so wie es soll:

root@u4:/# status foo
status: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart-session/1000/5747: Connection refused
root@u4:/# echo $UPSTART_SESSION
unix:abstract=/com/ubuntu/upstart-session/1000/5747
root@u4:/# unset UPSTART_SESSION
root@u4:/# status foo
status: Unknown job: foo
root@u4:/# echo $UPSTART_SESSION

root@u4:/#

Warum?

Ich habe eigentlich gedacht ich könne mittels „Augen zu und durch“ einfach warten bis systemd in Ubuntu einzug gehalten hat. Grmpf.

Die Variable wurde vom lxc-attach gesetzt, weil sie im Wirtssystem gesetzt war. Über SSH passiert das nicht. Warum das aber im Wirtssystem gesetzt ist und ob das korrekt ist weiß ich nicht.

Kategorien
Technisches

MySQL auf Ubuntu Trusty (14.04) mittels Puppet

Gerade mal geschaut, wie gut sich meine hand-crafted Puppet-Konfiguration schlägt, wenn man ihr ein Ubuntu Trusty statt einem Precise vorsetzt. Bisher ganz gut :-)

Das MySQL hat sich allerdings etwas gewehrt, also habe ich mal ein Update von dem Modul gemacht, was auf den ersten Blick nicht wirklich viel brachte: Das Puppet konnte die Benutzer für die Datenbank nicht anlegen, weil es keinen Zugriff auf die Datenbank hatte: „Access denied for user root (using password: no)“

In der /root/.my.cnf war das Passwort allerdings drin und auf der shell konnte ich den mysql-client ohne Passwort starten. Puppet hat diese allerdings nicht gelesen, sondern „nur“ die /etc/my.cnf. Also habe ich (provisorisch) dort das Passwort reingemacht. Das ging auch nicht, weil Puppet diese Datei gleich wieder überschrieben hat :-)

Also habe ich eine neue Datei in /etc/mywsql/conf.d angelegt. Diese hat Puppet dann genutzt und die Benutzer alle angelegt. Danach konnte (und musste natürlich) die Datei gleich wieder löschen. Puppet geht seitdem auch mit der ~/.my.cnf.

Wahrscheinlich hatte das mit der Umstellung des Puppet-Moduls zu tun…

Kategorien
Technisches

URL-Design statt „Scheiß SEO immer“

Generell finde ich ja auch, das diesem SEO-Kram viel zu viel Aufmerksamkeit geschenkt wird. Ich weiß nix, kann nix und funktionieren tut meine Website auch nicht, aber in Google will ich ganz oben sein. Wenn manche Website-Betreiber auf die restlichen wichtigen Sachen so viel Wert legen würden wie auf das SEO, dann wäre das Web ein besserer Ort und alle wären glücklicher.

Spiegel Online hat sich auch Gedanken über SEO und URL-Design gemacht. Die Artikel haben dort Nummern. Unter

http://www.spiegel.de/politik/deutschland/a-864555.html

ist irgendein Artikel zu finden. Der Titel wird dann aber noch mal in die URL reingepackt, so dass die URL

http://www.spiegel.de/politik/deutschland/studie-der-swp-warnt-vor-deutscher-dschihad-propaganda-im-internet-a-864555.html

lautet.

Fefe setzt ja ab und zu Links auf SpOn. Zum Beispiel unter http://blog.fefe.de/?ts=ae6f0813 verlinkt er auf einen Artikel. Wenn mich interessiert, auf was er da verlinkt, dann schaue ich, auf was für eine URL er da verlinkt. Und was muss ich sehen?

http://www.spiegel.de/politik/deutschland/scheiss-seo-immmer-a-864555.html

Oh! Ein Rant über SEO bei SpOn! Das muss ich mir doch gleich mal angucken!

Was ist passiert? SpOn hat sich über URL-Design Gedanken gemacht. Das URL-Design ist für die Benutzer (mich) gut – und für Suchmaschinen auch. Fefe macht sich über viele Dinge Gedanken, aber über URL-Design offenbar nicht. Das hindert ihn aber nicht daran, die Bemühungen von SpOn als „Scheiß SEO immer“ und „asoziales Schmarotzertum“ zu verurteilen und dabei den Benutzer völlig außer Acht zu lassen.

  • Er hat es offensichtlich nicht verstanden
  • ist aber trotzdem dagegen
  • beschimpft Andere
  • …und ich muss drunter leiden

Ich klicke auf den Link und lande bei einem Artikel, den ich gar nicht erwartet habe und der mich gar nicht interessiert. Diese „Scheiß Seo“-URLs sind ein Pamphlet gegen die verlinkten Inhalte, welches auf meine Kosten geht. Wer ist da der asoziale Schmarotzer?

</rant>

Kategorien
Technisches

Oxid eSales Update von 4.5 auf 4.6: Module

Mit den Paketen, die man sich unter http://wiki.oxidforge.org/Cumulative_Packages herunterladen kann lässt sich ein Oxid-Shop recht einfach updaten. Beim Update von 4.5 auf 4.6 hat sich allerdings bei den Modulen etwas geändert, so dass es zu kleineren Problemen kommen kann.

Module bringen jetzt eine Metadaten-Datei mit. Über ein neues GUI werden diese Module anders als bisher eingebunden. Ich musste bei Updates die Reihenfolge der Module wiederherstellen, da diese in meinem Fall in einer bestimmten Reihenfolge eingebunden werden müssen und diese Reihenfolge nach dem Update nicht mehr war wie vorher.

Kategorien
Technisches

Fotos von Linux/Ubuntu auf iPad kopieren

Das iPad ist ein tolles Werkzeug, aber noch schöner ist es, es ohne diese unsägliche „iTunes“-Software zu verwenden. Ich muss es jetzt sogar ohne diese Software verwenden, denn mir gehen die Windows-Rechner aus.

Ich habe einen Schwung Fotos Fotos auf meinem Ubuntu Precise 12.4-Rechner. Ich schließe das iPad per USB an und es erscheint ein Fenster, welches mir den Inhalt des iPads als Verzeichnis anzeigt.

Wohin mit den Fotos?

Um die Fotos auf das iPad zu bekommen habe ich folgendes gemacht:

  • Foto-App per Task-Manager beendet
  • Die Fotos in den Ordner DCIM/100APPLE kopiert.
  • aus dem Ordner PhotoData/Thumbnails alle Dateien außer thumbnailConfiguration gelöscht.

Das ging viel schneller als mit der Apple-Software. In der Zeit in der ich die Fotos kopiert habe hätte die Apple-Software nicht einmal gestartet.

Warnung: Ich habe keinen Schimmer, was ich da getan habe und ich kann lediglich von einem einmaligen Erfolg berichten. Nachmachen auf eigene Gefahr!

Kategorien
Technisches

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Ich habe in meinem Netz des öfteren für kurze Zeit irgendwelche Server, die ich einrichte. Diese bekommen ihre IP-Adresse per DHCP und ich arbeite per SSH auf ihnen. Natürlich beschwert sich SSH dann des öfteren, dass der Rechner hinter der IP-Adresse sich geändert hat:


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
1d:7b:30:b5:74:bb:17:f6:d7:02:45:51:d5:e2:55:e8.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:73
RSA host key for 10.11.4.24 has changed and you have requested strict checking.
Host key verification failed.

Was „im wirklichen Leben“ ja eine sinnvolle Warnung ist ist in meinem Fall unsinnig und ich will den Key aus der known_hosts löschen. Also Editor an, Zeile suchen, löschen, speichern, etc. Aber das ist mir zu umständlich. Deshalb habe ich ein kleines Script geschrieben :-) Sein Name ist „Offending“, weil dann kann man einfach die Zeile


Offending key in /root/.ssh/known_hosts:73

Absetzen und bekommt den entsprechenden Key aus der entsprechenden Datei gelöscht. Da ich leider nur PHP kann ist das Script in PHP, aber egal. Hier isses:


#!/usr/bin/php5
< ?php // Offending key in /root/.ssh/known_hosts:76 function usage($str=""){ if($str){ echo "Error: ".$str."\n\n"; } echo "Delete Offending keys from a known_hosts-file\n"; echo "\n"; echo "Usage:\n"; echo "Simply copy the warning e.g.\n"; echo "Offending key in /root/.ssh/known_hosts:76\n"; echo "first parameter must be 'key'\n"; echo "second parameter must be 'in'\n"; echo "third parameter is filename:linenumer\n"; die(); } if($argc!=4) usage("argument-count is not 3"); if($argv[1]!="key") usage("argument 1 is not 'key'"); if($argv[2]!="in") usage("argument 2 is not 'in'"); $parts = explode(":",$argv[3]); $filename = trim($parts[0]); $linenumber = trim($parts[1])-1; if(!strstr($filename,"known_hosts")) usage("filename doesn't contain 'known_hosts'"); if(!file_exists($filename)) usage("file $filename does not exist"); $cont = file($filename); unset ($cont[$linenumber]); if(!$fp=fopen($filename,"w"))die("cannot open file"); foreach ($cont as $line) fwrite($fp,$line); fclose($fp);

Ich habe das unter /usr/local/bin gespeichert, damit man das einfach ohne Pfad aufrufen kann...

Kategorien
Technisches

Windows Backup auf Linux mittels rsnapshot

Windows Backup auf Linux mittels rsnapshot

(dieser Artikel ist noch nicht fertig)
Backups wird zu wenig Wichtigkeit beigemessen. Und wenn, dann werden die Backups sehr oft blind gemacht. D.h. Es werden teure Bänder benutzt weil man das halt so macht und weil das gut (enterprisy) ist. Es wird aber nie kontrolliert, ob da auch wirklich was drauf ist.

Im SOHO/KMU-Bereich geht das sowieso oft an den Anforderungen vorbei. Mit den Bändern und der Software kennt sich niemand aus und es ist schneller etwas neu eingegeben als der teure Spezialist geholt, der zurücksichern kann. Außerdem lagern die Bänder zusammen mit dem Server direkt unter der Stromverteiltung – insofern hat man bei einem Feuerchen eh das Problem nicht, etwas zurücksichern zu müssen.

Risiken und die richtige Stategie

Man muss bedenken, gegen welche Risiken man sich wie absichern will. Dazu muss man für die Risiken Lösungsstrategien bereit haben. Mann muss also nicht nur kaufen und installieren, sondern vor allen Dingen denken:

  • Was passiert, wenn jemand den Server klaut?
  • Was passiert wenn ein Virus/Grieche die Daten vernichtet?
  • Was passiert wenn ein Hochwasser den Server wegschwemmt?
  • Was passiert bei einem Feuerchen?
  • Was passiert bei einem Festplatten/Hardware-Schaden?
  • Jemand hat aus versehen was gelöscht – was nun?

Mann kann die Szenarien durchgehen und schauen:

  • Hat jemand anderes (Konkurrenz?) meine Daten?
  • Habe ich noch meine Daten von Heute/Gestern/Letztes Jahr?
  • Welche Daten sind mir verloren gegangen?
  • Wann bin ich EDV-technisch wieder einsatzbereit und wann habe ich die verlorenen Daten neu eingegeben?
  • Was kostet mich das alles im Falle eines Falles – incl. Rücksicherung, neuer Server, Ausfallzeit und z.B. einen Tag Daten neu eingeben?

Mit ein bisschen Mathematik kommt man schnell auf die richtige Backup-Strategie. Oft lautet diese, ein Festplatten-Backup auf einen Backup-Server an einen „entfernten“ Standort zu machen. Das geht billig, schnell und man kann ohnen viel Aufwand auf die Backups zurückgreifen (Im Gegensatz zum Lager der Daten auf antiquiten Bandformaten für die sich im Falle eines Falles nicht so schnell ein Laufwerk findet).

Hardlinks

I.d.R. unterscheidet man zwischen Vollbackups, inkrementellen Backups und differentiellen Backups. Bei Backups auf Festplatten kann diese Unterscheidung entfallen. Durch Hardlinks können Scripte die Vorteile aller Backup-Sorten miteinander vereinen. Das bedeutet, dass wenn mehrmals das gleiche gesichert wird (an aufeinanderfolgenden Tagen), dass dann die Dateien physisch nur einmal auf der Backup-Platte enthalten sind, jedoch so tun, als seinen sie mehrmals da. Unter Linux gibt es viele solcher Scripte, die genauso simpel wie leitungsfähig sind:

  • rsnapshot
  • faubackup
  • dirvish

Im folgenden beschreibe ich, wie man einen Windows-Rechner automatisch auf einen Linux-Rechner sichert.

Rsnapshot

Rsnapshot ist ein einfaches Tool, welches die Veränderten Daten mittels rsync über Netzwerk zieht und auf der Serverplatte Vollbackups bereitstellt, die in konfigurierbaren Tages- Wochen- und Monats-Intervallen rotieren. Der Speicherverbrauch wird dadurch mittels Hardlinks minimiert. Die Konfiguration ist Pippifax.
Das Tool läuft unter Linux. Auf dem Windows-Client braucht es sshd und rsync, welches man mittels cygwin bekommt.

Installation des Client unter Windows

Nach der Installation von cygwin (SSH und Rsync nicht vergessen):

ssh-cost-config 

konfiguriert den Dienst

cygrunsrv -I sshd -p /usr/sbin/sshd 

installiert den Dienst als Windows-Dienst

mkpasswd -cl > /etc/passwd
mkgroup --local > /etc/group

Kopiert einem die Windows-Benutzer in das cygwin, weil der sshd nicht auf die Windwos-benutzer, sondern auf /etc/passwd zugreift.
Dann kann man den Windows Dienstemanager starten und sshd starten. Wenn was nicht funktioniert, dann kann man im Windows Ereignisprotokoll nachschauen und unter /var/log/sshd.log

Installation des Server unter Linux

Kategorien
Technisches

reread partition table nach fdisk

Nach einem fdisk kommt es immer wieder vor, dass die Partitionstabelle zwar geschrieben wird, aber….

re-read of partition table failed

…man solle mal rebooten. Jetzt will man aber nicht rebooten, also muss man die Partitionatabelle im laufenden Betrieb einlesen. Das geht auf verschiedene Arten und weisen:

partprobe /dev/ice

Partprobe ist bei parted dabei.
oder:

sfdisk -R /dev/ice

sfdisk sollte ja jeder haben :-)
oder:

/sbin/blockdev --rereadpt /dev/ice

kannte ich bisher noch nicht, aber man lernt ja nie aus :-)

Quellen:

www.linuxquestions.org/questions/linux-general-1/re-read-partition-table-16586/
www.cyberciti.biz/tips/re-read-the-partition-table-without-rebooting-linux-system.html

Parted:

www.gnu.org/software/parted/index.shtml
de.wikipedia.org/wiki/GNU_Parted

Kategorien
Technisches

Schnitzelmitkartoffelsalat

Dies ist/war eine kleine Testseite bezüglich Suchmaschinenoptimierung. Sie ist ziemlich alt, aber ich möchte sie erhalten – also:

Bei Google möchte ich gerne unter dem Suchwort

schnitzelmitkartoffelsalat

auf Platz 1.

Ich war bei gugel auf Platz 1. Wie ich vermute geschah das, weil ich Links auf andere
Seiten zum Thema schnitzelmitkartoffelsalat auf meiner Seite hatte. Jetzt bin ich es nicht mehr (auf Platz 1).

In der Zwischenzeit hat:

  1. Roger auch Links (auf themenfremde Seiten, aber mit schnitzelmitkartoffelsalat-Linktext)
  2. Matthias Gutfeldt einen Link auf Roger gemacht.

Jetzt kann man natürlich leider nicht sehen, was davon mehr wirkte. Also habe ich die Links mal weggemacht und schaue, ob ich dadurch „abstürze“


Schnitzelmitkartoffelsalat 2003-03-10:

Mittlerweile bin ich nur noch auf dem 7. Platz. Es ist davon auszugehen, dass
durch das Löschen der externen Links meine Seite unbedeutender wurde.

Momentan ist Rainer auf Platz 1 – und das mit dem relativ schlechten PageRank von 3.
Die meisten hinter Ihm haben 4. Mal schauen, was er anders macht:

  • Er hat relativ viel Text auf der Seite
  • Viele Links von der Seite weg – allerdings ohne Themenbezug
  • Das Wort „schnitzelmitkartoffelsalat“ kommt in der URL vor.

So. Jetzt habe ich das Wort auch in der URL. Mal sehen was passiert.


Dadurch, dass sich die URL verändert hat ist alles durcheinander gekommen.
Google war sehr nachtragend und die „alte“ URL, die viele einkommende Links hatte, die
war noch lange unter dem Suchwort im Index. Mittlerweile hat sich die neue URL
durchgesetzt, aber nicht mehr so dolle wie die alte.


2004-05-31: Platz 20

Es wird Zeit, dass ich was mache, denn

  1. Google hat sich verändert
  2. Ich bin nur noch auf Platz 20
  3. Andere behaupten Quatsch über ausgehende Links (die wären schlecht) und ich will das widerlegen

Hier also Links auf themenverwandte Seiten:


2004-06-08: Platz 19 für schnitzelmitkartoffelsalat

OK, ein Platz ist nicht die Welt, aber es ist (nur durch ausgehende Links) besser geworden und nicht
schlechter, so wie manche behaupten. Neue Schnitzelmitkartoffelsalat-Veränderungen:

  • Das wort schnitzelmitkartoffelsalat hie und da in strong-Elemente verpackt
  • Es oben noch mal in ein h1 rein verpackt

Mal sehen, was passiert…


2004-07-20: Platz 17 für schnitzelmitkartoffelsalat

Es steigert sich :-) Ich werde mal den Titel der Seite verändern. Titel ist wichtig, aber nach berichten
in der Newsgroup wohl doch nicht soooo wichtig. Mal sehen was passiert. Der neue Titel hat mal nichts mit Schnitzelmitkartoffelsalat zu tun.


2005-01-21: Platz 20(.com) bzw. 16(.de) für schnitzelmitkartoffelsalat

Ich bin der erste von denen, die das Wort weder im Titel noch im Domainnamen haben. Für meinen interims-Titel „SMKS“ bin ich auf Platz 2 oder 3. Ich mach’s mal wieder in den Titel :-)


2005-01-27: Platz 21 (hatte mich im Titel verschrieben)

So, jetzt aber…. :-)


2005-02-14: Verschiedene Statuscodes auf verschiedene Parameter

Momentan sind sich alle etwas unschlüssig, ob man auf verschiedene Parameter (bei einer ansonsten
gleichen URL) mit verschiedenen Statuscodes reagieren kann. Während die Diskussion gerade hin und her
geht zwischen verschiedenen RFCs, deren Auslegungen, Interpretationen und Errata versuche ich einfach
mal, was Google dazu sagt :-).

Google sagt, dass verschiedene Parameter verschiedene Resourcen sind und demzufolge unterschiedlich behandelt werden


2011-07-29: Nachtrag

Wahnsinn. Gerade wollte ich die Seite weglöschen und da sehe ich, dass mittlerweile nicht nur in der deutschen Wikipedia ein Artikel über SChnitzelmitkartoffelsalat ist, sondern dass es Schnitzelmitkartoffelsalat sogar schon in die englische Wikipedia geschafft hat. Es war wohl der weltweit erste SEO-Contest bei dem ich da direkt am Anfang auf Platz 1 war. Krass. Da schreibt man quasi Geschichte und bekommt’s gar nicht mit :-)

Kategorien
Technisches

Windows auf/unter Xen

Windows auf XEN / Howto

(dieser Artikel ist unvollständig und mittlerweile veraltet)

Ich will auf einem Computer mehrere Betriebssysteme laufen lassen. Virtualisierung bietet einige Vorteile und angeblich ist das jetzt so einfach und preiswert zu machen, dass sich das ja auch für SOHO-Server anbietet. Wichtig dabei ist, dass auch Windows als Gast läuft.

Ziele der Virtualisierung

Die Zielsetzung ist dabei vielleicht etwas anders als bei den enterprisy Installationen:

  • Wir wollen weniger Kisten rumstehen habe
  • Wir wollen weniger Geld für Hardware ausgeben
  • Wir wollen weniger Lüfterlärm und weniger Stromverbrauch
  • Wir wollen unabhängiger von der Hardware sein

Es geht also nicht so sehr darum, zu verteilen, mehr darum, lediglich zusammenzufassen.

Hardware

Als Hardware bietet sich ein Server an, der Vanderpool (Intel) oder Pacifica (AMD) unterstützt. Nur mit einer dieser Techniken lässt sich Windows als Gast auf XEN betreiben. Auch wenn diese Techniken dem Prozessor eigen sind, so sollten wohl auch Chipsatz, Mainboard und BIOS sie unterstützen. Zumindest war bei mir das Vanderpool zuerst ausgeschaltet und ich musste es im BIOS anschalten:

Unter „Advanced“ gab es „Advanced Processor Options“ und dort gab es einen Eintrag „Intel (R) Virtualization Technology“ – den habe ich von „Disabled“ auf „Enabled“ gestellt. Die Standard-Prozedur von wegen Speichern und Exit und weiter reichte aber nicht: man musste den Computer ganz ausschalten, nachdem man VT aktiviert hatte.

Software

Als Debian-affiner habe ich einen Edgy Eft Server installiert. Das ist das erste Ubuntu, welches XEN von Haus aus mitliefert. Wenn einem die Distri Egal ist, dann sollte man vielleicht was andere nehmen – SuSE oder so. Auf jeden Fall werde ich irgendwann auf Feisty Fawn umsteigen müssen, denn dafür wird es dann wohl wieder etwas länger Support und Updates geben als für Edgy.

Installation von XEN

Installation von XEN ist einfach. Wenn man mit einem „apt-cache search xen“ sucht, dann kommt nicht viel dabei heraus, denn XEN liegt in universe, und das ist standardmäßig erst mal nicht aktiviert. Man muss also in der /etc/apt/menu.lst universe „entkommentieren“. Dann mit einem apt-get update aktualisieren, dann geht’s.

Man schaut mit apt-get search xen nach, was es so gibt und installiert alles, was sich gut anhört. Ich habe folgendes installiert:

apt-get install xen-ioemu-3.0 xen-hypervisor-3.0-i386-pae xen-image-xen0-2.6.17-6-server-xen0 bridge-utils

xen-ioemu-3.0 – XEN administrative tools

Das ioemu scheint irgendwie etwas zu sein, dass den Gästen hilft, auf die Hardware zuzugreifen. Folgende Infos habe ich gefunden:

The userspace tools to manage a system virtualized through the XEN virtual machine monitor. This package includes the utilities required to support HVM domains, which allows full virtualization of unmodified operating systems, such as Microsoft’s Windows product line, and standard Linux kernels. For this to work, you will need a CPU with hardware virtualization support, such as Intel’s CPUs with VT, or AMD’s CPUs with Pacifica.

xen-hypervisor-3.0-i386-pae The XEN Hypervisor for i386 (pae enabled version)

Das ist das eigentliche XEN Hypervisor. Ich installiere das mit PAE, weil das zu dem Dom0-Kernel passen muss, und der hat bei mir auch PAE. PAE ist irgendwas von wegen braucht man mit viel RAM oder so :-) de.wikipedia.org/wiki/Physical_Address_Extension

xen-image-xen0-2.6.17-6-server-xen0 – Linux xen kernel binary image for version 2.6.17

Das ist mein Kernel für Dom0. Dom0 ist quasi das „Wirtsbetriebssystem“. Da bringt der mir schon eine Meldung:

Please manually create an initrd image 

Mist. Wie ging das noch mal?

bridge-utils

Das Zeug brauchen wir später um eine Netzwerkverbindung zwischen den Domains auf die reihe zu bekommen. Aber zuerst mal zum initramfs

Zuerst bearbeite ich mir mal die /boot/grub/menu.lst um XEN booten zu können:

### END DEBIAN AUTOMAGIC KERNELS LIST
title           xen
root            (hd0,0)
kernel          /boot/xen-3.0-i386-pae.gz noreboot
module          /boot/xen0-linux-2.6.17-6-server-xen0 root=/dev/sda1 ro quiet splash
module          /boot/initrd.img-2.6.17-6-server-xen0

und weil 3 Sekunden für arme Sysadmins viel zu schnell sind (sprich: 3 Sekunden reichen nicht, um das Stück Pizza zur Seite zu legen), ändern wir noch (ganz oben in der Datei):

timeout         10

Dann mache ich mir die initrd:

update-initramfs -c -k 2.6.17-6-server-xen0 

c steht für create, k sagt: „jetzt kommt die Versionsangabe“.

Wenn alles geklappt hat, dann bootet man nach einem „init 6“ keinen „normalen“ Kernel mehr, sondern den XEN-Kernel. Beim Booten muss man dazu aber innerhalb der 10 Sekunden die ESC-Taste drücken. Nur so kommt man in das Grub-Menü, in dem man den Kernel auswählen kann. Ansonsten landet man wieder im „Normalen“ OS.

Das ursprüngliche Betriebssystem ist dann „Dom0“. Man merkt schon an den Nachrichten, die beim Booten auf dem Bildschirm erscheinen, dass jetzt etwas anders ist.

Wenn alles geklappt hat, dann kann man mit einem „/etc/init.d/xend start“ den XEN-Daemon starten und dann mit „xm list“ nach den aktuell laufenden Domains schauen:

Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1895     2 r-----     14.5

Wie erwartet läuft nur eine Domain: unser „Wirtssystem“ „Dom0“. Aber das können wir ja Ändern.

Installation von Gastbetriebssystemen

Tutorials für Spezial-Linuxe als Gast gibt es en masse, Anleitungen für HVM (Windows) eine ganze Ecke weniger. Wenn man nach Anleitungen sucht, dann ist es wichtig, das immer auf HVM einzugrenzen.

Haken: XEN sind keine gescheiten Fehlermeldungen zu entlocken. Das führte bei mir zu einem ganzen vollen Tag Zeitverlust nur Aufgrund eines Tippfejlers.

Oft war weder einem „xm dmesg“ noch /var/log/xen etwas gescheites zu entlocken.

Was ich empfehlen kann: Windows Boot-CD auf Festplatte kopieren. Das ist viel schneller als von der CD zu installieren:

dd if=/dev/cdrom of=/haumichblau/wincd.iso

dauert nicht lange, weil die cd in einem Rutsch gelesen werden kann. Auf das ISO kann dann in der Konfigurationsdatei der VM zugegriffen werden. Also erstelle ich mir eine Konfigurationsdatei für die VM unter /etc/xen/auto/win.xm

# Kernel ist der HVM-Loader. 265MB RAM sollten zum testen reichen
kernel  = '/usr/lib/xen-ioemu-3.0/boot/hvmloader'
builder = 'hvm'
memory  = '256'
device_model='/usr/lib/xen-ioemu-3.0/bin/qemu-dm'
# Laufwerke
disk    = [ 'file:/haumichblau/windisk.img,ioemu:hda,w','file:/haumichblau/wincd.iso,ioemu:hdc:cdrom,r' ]
#disk    = [ 'phy:/dev/hda,hda,r' ]
# Hostname
name    = 'annika'
#  Networking
#dhcp = dhcp
vif = ['type=ioemu, bridge=xenbr0']
# Behaviour
boot='d'
vnc=0
vncviewer=0
sdl=1

Damit Sollte die VM vom CD-Rom-ISO booten. Die letzten 3 Zeilen sind vielleicht interessant: Man hat quasi die Auswahl zwischen sdl und vnc. Wenn man eh ein Klickibunti auf seinem Server hat, dann kann man mit sdl die VM in einem Fenster sehen. Wenn man auf seinem Server aber kein Klickibunti hat, dann kann man mittels vnc sich die ganze Chose von einem anderen Rechner aus anschauen. Dazu sollte man aber in der /etc/xen/xend-config.sxp noch die Zeile

(vnc-listen '0.0.0.0')

am Ende so editieren, sonst geht das (in der Standardeinstellung) nur von localhost aus und damit kämen wir vom regen in die Traufe.

Zu den Festplatten/CD-Roms:

Wir haben da zwei definiert: ‚file:/haumichblau/windisk.img,ioemu:hda,w‘ und ‚file:/haumichblau/wincd.iso,ioemu:hdc:cdrom,r‘. Nehmen wir das ausseinander: file:/haumichblau/windisk.img ist eine noch nicht existierende Datei. Alternativ könnten wir auch eine Partition angeben. ioemu:hda bedeutet, dass man der VM ein hda (erste Festplatte) vorgaukelt und das w steht dafür, dass man darauf auch schreiben darf. file:/haumichblau/wincd.iso ist unser ISO-Image, dass wir gemacht haben, mit ioemu:hdc hängen wir das quasi „als Master an an den zweiten IDE-Port“ und das r steht für nur lesenden Zugriff.

Fehlt eigenlich nur noch die Datei für die Festplatte:

dd if=/dev/zero of=/haumichblau/windisk.img bs=1024k seek=4096 count=0 

Netzwerk fehlt uns noch. Wir greifen zwar in der VM schon drauf zu, aber wir sollten das in der /etc/xen/xend-config.sxp auch noch aktivieren. Dazu habe ich geschaut, dass das (network-script network-dummy) auskommentiert war und stattdessen das (network-script network-bridge) entkommentiert. (vif-script vif-bridge) war glaube ich schon aktiv.

Nach der Veränderung sollte man den xend neu starten.

Dann sollten wir die VM mittels „xm create /etc/xen/auto/win.xm“ starten können. Von einem anderen Computer können wir uns dann mit VNC auf Port -äh- 5900(?) verbinden. Nach dem ersten Teil der Installation bittet uns unser Windows darum, die CD aus dem Laufwerk zu nehmen. Wir machen das, indem wir in der Konfigurationsdatei der VM den Eintrag „boot“ auf c ändern. Dann können wir mit einem beherzten „xm destroy annika“ unsere VM ausschalten (annika ist der Name, den wir in der Konfigurationsdatei festgelegt haben) und mit einem „xm create /etc/xen/auto/win.xm“ wieder starten.

Zeit

> 5. Unser Uhrzeit-Problem 
[...]
>> Note that the wall-clock time exported
>> by Xen is UTC --- all domains must have appropriate timezone handling
>> (i.e. a correct /etc/localtime file).
Was die 2 Stunden erklärt. Man könnte dem Windows vielleicht einfach sagen, dass es in [ Greendings steht?
>> A:If you want each
>> domain to keep its own time, there are two ways to cause a domain to
>> run its wallclock independently from Xen: 1. Specify
>> 'independent_wallclock' on the command line. 2. 'echo 1
>> >/proc/sys/xeno/independent_wallclock'
>>
>> To reenable tracking of Xen wallclock: 1. 'echo 0
>> >/proc/sys/xeno/independent_wallclock'
...oder so.

Disk-Images

Die festplatten werden in Dateien oder Partitionen emuliert. Diese kann man aus dem Hostbestriebssystem nicht so einfach mounten. Wenn man die Gastfestplatte z.B. unter /dev/sda1 hat, dann zeigt einem ein fdisk /dev/sda1 auch schön die Partitionen an, die darin sind, aber /dev/sda1p1 etc. lassen sich nicht einfach mounten: mount meldet

mount: /dev/sda1p1 is not a valid block device

Dazu braucht man dann lomount oder kpartx, aber wo bekommt man das her? Nirgendwo zu finden, bei Edgy ist es nicht dabei. Irgendwann habe ich dann das Binary www.minimix.ch/debian-live/files/lomount vom Bojovic Dragan genommen. Nicht das ich den kennen würde oder so, aber das ist einfach das einzige, was ich gefunden habe.

Hilfreiche Links

XEN Manual:
www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html
HVM Beispiel für unter SuSe:
en.opensuse.org/Xen_Full_Virtualization_Example
In Deutsch!
www.iku-ag.de/opensource/xen-auf-sles.jsp
Beispiel für Edgy:
help.ubuntu.com/community/XenVirtualMachine/XenOnUbuntuEdgy
Schlechte IO-Performance unter Windows?
lists.xensource.com/archives/html/xen-users/2007-01/msg01101.html ff