Schlagwort-Archive: Linux

Ungeplante Migration

Uff, Was für ein Marathon. Eigentlich hatte ich am Freitag ja noch gute Laune, als der Postbote – passend zum freien Tag – meinen neuen Server durch die Tür schleppte. 2 Sockel mit je einem soliden Xeon 3.06GHz, 4GB RAM und netten Spielereien wie z.B. IPMI (aka mein BIOS kann TCP/IP) sollten wieder für einige Zeit Beschäftigung bieten. Außerdem ist er deutlich leiser und dank Speedstep & Co dürften auch die Stromkosten etwas sinken. Da allerdings mit der neuen Hardware einige Anschlüsse wegfallen wollte ich eigentlich langsam umsteigen. Erst mal in Ruhe ein aktuelles Gentoo drauf, dann meine Steuerung passend umstellen und schlussendlich dann den alten Server abschalten.
Nunja, das war der Plan, die Praxis kam etwas überraschender. Gerade hatte ich das frische Gentoo auf der neuen Kiste gebootet und eine ellenlange Liste an Portage übergeben gab es als Quittung nur eine Fehlermeldung: Der Portage-Tree wäre ungültig. Huh? Der Tree liegt auf meinem Server und ist per NSF an alle Rechner verteilt – was soll da jetzt auf einmal ungültig sein. Die Antwort war nicht sehr erfreulich: Mein alter Server hatte den Dienst quittiert. Offenbar waren die frostigen Temperaturen zu viel für eine LAN-Karte, die nun den ganzen PCI-Bus lahmlegte. Naja, also die große Auswahl: Weiter arbeiten ohne Internet und mit „lediglich“ 100MBit/s im LAN oder direkt den neuen Server fertig aufsetzen. Naja, dir Grundfunktionen sollte der Neuling packen – Routing steckt in einer VM und zur Steuerung reicht PHP. PHP ist schon drauf, also Platten und Karten umgebaut und gestartet. Schnell noch VMware installieren – ach halt. Kein Internet. Auf den alten Platten lagen natürlich auch die Distfiles und somit eine passende Version des VMware Servers. Installiert, Konfiguriert, Gestartet, Connected, … nichts. Keine Reaktion. Hier macht sich der große Nachteil von Closed Source bemerkbar: Debuggen Fehlanzeige. „Es ist ein Fehler aufgetreten – der Fehler lautet:“ – nunja, kein Fehler ist auch ein Fehler.

OK, also den VMware-Server auf meinem Laptop installiert und notdürftig den Router zum Booten verholfen. Im Netz auch nichts Neues. Viele kennen den Fehler, nur eine Antwort sucht man vergebens. Mein erster Gedanke war nun direkt auf KVM zu setzen, da dies inzwischen sogar PCI-Karten an VMs weitergeben kann lässt sich damit viel Zeit vertreiben. Dummerweise unterstützen die CPUs keine Hardwarevirtualisierung, womit nur QEmu übrig bliebe. QEmu ist die Lösung, die mir schon öfter Offline-Tage beschert hatte, weil der Netzwerkstack nicht immer so will wie ich. Dann kam mir wieder VMware in den Sinn – die Version 2 des Servers ist seit kurzem stable, im entsprechenden VMware-Overlay fand sich auch schon ein passendes Ebuild und siehe da: Nach etwas gebastel startet sogar das neue Webinterface. OK, ich musste zwar den halben Laptop neu kompilieren, weil das Plugin nur mit USE=“accessibility“ funktioniert, aber immerhin konnte ich danach meine zwischenzeitlich neu geladene Version von Endian in eine serverseitige VM bannen.

Nächste Baustelle war meine Steuerung. Die Relaiskarte mit serieller Schnittstelle lässt sich ja noch recht einfach zur Zusammenarbeit überreden, bei meinen Schaltergebastel am Parallelport ist das schon schwerer: Zwar ist das Ganze prinzipiell auch mit dem neuen Server möglich, aber der Parallelport ist hier nur intern auf einem Pfostenstecker ausgeführt. Dumm, wenn man seinerzeit neben den Drähten auch die nötigen Widerstände direkt auf den Sub-D-Stecker gepflastert hat. Als Lösung muss wie immer der Holzhammer her: Jetzt pollt ein kleiner Atmega8 die Schalter und gibt die Daten seriell an den Server weiter. Als kleiner Bonus fragt der in der Leerlaufzeit noch meine 1wire-Thermometer ab, sodass ich trotz der Blockade beider COM-Ports nicht auf die Temperaturen verzichten muss. Auf Dauer auch keine Lösung, dafür habe ich wie schon erwähnt andere Pläne: Nachdem ich während dem Kompilieren etwas mit meinem AVR-Zeugs gebastelt habe konnte ich die ersten beiden MCP2515, trotz der von mir gehasstem SMD-Bauweise, zum reden bringen. Das ganze war so stabil, dass jetzt direkt ein kleines Paket mit MCP2515s zu mir unterwegs ist (diesmal in DIP). Dabei sind auch ein paar weitere Atmega’s – u.A. passend für einen iSysBus Devnode.

Inzwischen geht also sogar das Licht an, wenn ich den Schalter betätige und „mein“ Internet ist wie auch die Datenfreigaben zurück auf dem Schirm. Einzige dringende Problemstelle ist das Soundsystem: Meine alte Soundkarte lässt sich nicht in den neuen Slot prügeln – die Karte besteht auf ihre 5V Versorgungsspannung, mein Server hält nur Slots für 3,3V bereit. Schlecht, wenn der Server normal als Wecker dient: Zwar sollte mein Handy hier temporär ausreichen, aber irgendwie ist das nicht immer laut genug :/. Naja, ich mach mich dann auf die Suche nach einer passenden Soundkarte, aber erst mal begebe ich mich jetzt wieder an meinen Terminkalender: Die ersten Konzerttermine für 2009 zeichnen sich ab um zwischen Weihnachten und Neujahr war ja auch noch Etwas.

Unbekannte USB-Geräte unter VMWare automatisch nutzen

Vor einiger Zeit hatte ich mal in meiner schlauen Kategorie einen kleinen Hinweis versteckt: Möchte man auf neueren Linux-Systeme ein Gerät ohne Linux-Treiber an eine VMWare anhängen quittiert diese mit einer Fehlermeldung – das USB-Gerät könnte nicht genutzt werden. Abhilfe schafft der erwähnte Befehl “ echo 1 > /sys/bus/usb/devices/*USB-ID*/bConfigurationValue“ – allerdings hilft dies immer nur kurzzeitig – wird das USB-Gerät entfernt oder der PC neu gestartet muss die Konfiguration beim nächsten mal neu gesetzt werden. Abhilfe schafft eine udev-Rule, welche unter Gentoo z.B. „/etc/udev/rules.d/06-VmwareUsbFix.rules“ heißen kann:

BUS="usb",
SYSFS{idProduct}=="bbbb",
SYSFS{idVendor}=="aaaa",
RUN+="/bin/sh -c 'echo 1 > /sys/$devpath/device/bConfigurationValue'"

Die Werte für Vendor und Product lassen sich per lsusb ermitteln. Das ganze kann auch um Seriennummern o.Ä. erweitert werden, wenn die Zuordnung über die o.g. IDs nicht genau genug ist. btw: Mit entsprechenden Named Pipes & co kann man hiermit auch ein automatisches attachen an eine QEMU/KVM einrichten.

Cryptsetup im Benchmark

Mit Cryptsetup lässt sich unter Linux so einiges Verschlüsseln – Festplatten, Container, etc – transparent und angeblich sicher. Leider ist Sicherheit nicht billig – im Falle einer solchen Festplattenverschlüsselung zahlt man mit der sinkenden Geschwindigkeit des Speichersystems. Da ich mir eben ohnehin eine Partition zerschossen habe durfte die nun für einen kleinen Test herhalten. Die verwendete Hardware ist zwar nicht gerade auf dem aktuellstem Stand, aber ältere Rechner werden ja gerne mal als NAS o.Ä. zweckentfremdet.

Verwendete Systeme & Software:

  • Pentium III 4x550MHz (MMX,SSE), 4GB RAM
  • Kernel 2.6.22
  • Cryptsetup (LUKS) 1.0.5
  • 4xSATA 150 (250GB, 7200rpm)

Hier meine Werte:

/dev/md0: (RAID5, direkt)
 Timing buffered disk reads:  108 MB in  3.07 seconds =  35.16 MB/sec

/dev/mapper/storage-test: (LVM auf o.g. RAID)
 Timing buffered disk reads:  100 MB in  3.02 seconds =  33.16 MB/sec

AES-256
/dev/mapper/test:
 Timing buffered disk reads:   54 MB in  3.12 seconds =  17.31 MB/sec

AES-128
/dev/mapper/test:
 Timing buffered disk reads:   48 MB in  3.06 seconds =  15.69 MB/sec

TWOFISH-128
/dev/mapper/test:
 Timing buffered disk reads:   50 MB in  3.25 seconds =  15.39 MB/sec

TWOFISH-256
/dev/mapper/test:
 Timing buffered disk reads:   52 MB in  3.07 seconds =  16.93 MB/sec

AES-256 & MD5
/dev/mapper/test:
 Timing buffered disk reads:   56 MB in  3.10 seconds =  18.09 MB/sec

Compiz-Fusion-Cube mit Gnome-Arbeitsflächen

Nicht ist unmöglich – endlich läuft Compiz-Fusion auch auf meiner fglrx-„verseuchten“ Kiste. Ein Problem brachte mir jedoch einige Kopfschmerzen: Der Compiz-Würfel und die Gnome-Arbeitsflächen wollten nichts voneinander wissen – beide funktionierten unabhängig. Die Lösung ist simpler als es auf den ersten Blick aussieht: Man muss ohne Compiz in den Einstellungen des Arbeitsflächenumschalters die Anzahl der Arbeitsflächen auf 1 Reduzieren. Startet man nun Compiz greift der Arbeitsflächenumschalter des Gnome-Panel auf die „Cube-Seiten“ zurück.

Distributed Multihead X (Xdmx) Howto

Hinweis: Der Artikel ist schon etwas älter, ich habe das Vorhaben bisher nicht fertig gestell, aber eventuell helfen die Angaben ja dem Ein oder Anderem

Bild: http://adlersa.yotaweb.de/gallery2/gallery2/d/6477-3/Bigdesktop.jpg?g2_GALLERYSID=33658476444b24a4cf10b9eac3d4ead9Ja, ich geb ja zu, ich bin Monitorsüchtig. Normal arbeiten hier zwei 19″er an einer NVidia-Karte per TwinView, für noch mehr Übersicht muss von Zeit zu Zeit mein Laptop herhalten. Hierbei wird auf dem Hauptrechner ein virtueller Monitor emuliert und dessen Inhalt per Ethernet auf den zweiten Rechner verfrachtet. Ein ähnliches Setup hatte ich bereits zu meinen Windows-Zeiten mit MaxiVista. Unter Linux muss ich mich natürlich etwas Neues suchen – das Zauberwort heißt Xdmx. Dieser X-Server kann mehrer andere X-Server zusammenfassen. Oder wie es die Wiki schimpft: „It acts as a proxy X Window server for multiple back-end X servers.

Gentoo-User haben es hier einfach – Xorg (x11-base/xorg-server) hat dmx als USE-Flag – einmal setzen und schon werden alle Tools und Libs emerged. Unter Debian müsste das passende Paket xdmx-tools heißen. Zusätzlich ist Xnest zum Testen ein praktischer helfer – Gentoo-XOrg hats dabei, Debian-User sollten ein gleichnamiges Paket finden. Hiermit lassen sich virtuelle X-Server in einer laufenden Sitzung starten – ähnlich wie VNC.

Für den ersten Test werden auf dem Master zwei Xnester gestartet:

XSESSION="xterm" startx -- /usr/bin/Xnest :1 -geometry 640x480+0+0 -name Test1
XSESSION="xterm" startx -- /usr/bin/Xnest :2 -geometry 640x480+0+0 -name Test2

Ich nutze hier startx, da ich so in den Testservern ein Terminal erhalte und die Zugriffsrechte korrekt gesetzt werden. Danach kann der Xdmx gestartet werden:

Xdmx :9 -display :1 -display :2 -query localhost

Die beiden display-Angaben verweisen auf die virtuellen X-Server. Das Query stellt eine Anfrage an den Loginmanager – ist dieser auf Remoteverbindungen eingerichtet zeigt sich auf den ersten Testfenster die Loginmaske. Ich hatte in dem virtuellen X einige Tastaturprobleme, da aber auf #2 das Terminal verschwand und im Xdmx beide Screens aufgeführt waren lasse ich den Test mal als erfolgreich durchgehen.

Weiter zu den echten Screens: Zuerst benötigt der Hauptrechner Zugriff auf meinen Laptop – dazu wird auf dem Zweitgerät per "xhost +192.168.x.y die entsprechende IP freigeschaltet. Zum test kann man mit DISPLAY="laptop:0" xterm (laptop=IP oder DNS) ein Fenster auf dem Slave starten. Funktioniert das kann Xdmx den Dienst antreten:

Xdmx :9 -display :0 -display laptop:0 +xinerama -query localhost

Das ganze lässt sich dann noch in entsprechende Startscripte verpacken. Beendet werden kann Xdmx mit Strg+Alt+Backspace

Info am Rande: Es soll auch eine zweite Software geben, welche als OpenGL-Proxy dient, damit könnte eine einfache 3D-Beschleunigung möglich sein.

Noch ein paar Infos:

TwinView (NVidia) wird als ein großer Bildschirm erkannt

Statt TwinView 2 separate X-Screens einstellen. Geht z.B. über das NVidia-GUI

Gnome startet nicht/Macht Probleme/etc

Gnome kann pro Rechner und User nur 1x gestartet werden. Am besten mit einem anderen User oder einem anderen Windowmanager Xdmx starten

Tastaturlayout

-param XkbModel pc104 -param XkbLayout de -param XkbVariant nodeadkeys

Im Falle von Gnome unter System->Einstellungen->Tastatur entsprechend anpassen.

Probleme mit Schriftarten

Mittels -fontpath kann man die entsprechenden Pfade angeben. Fuer mein Gentoo z.B.

-fontpath /usr/share/fonts/local -fontpath /usr/share/fonts/misc -fontpath /usr/share/fonts/Type1 -fontpath /usr/share/fonts/TTF -fontpath /usr/share/fonts/75dpi -fontpath /usr/share/fonts/100dpi

Darstellungsprobleme

Folgende Optionen schalten einige Optimierungen ab – am besten selbst probieren was hilft. In meinem Fall reichte der noglxproxy um die meisten Programmfehler zu beheben und Videoplayer ans laufen zu bekommen:

-ignorebadfontpaths -noglxproxy -norender -nosubdivprims -nowindowopt -nooffscreenopt

Weitere Infos:

Multiseat X

Ein Rechner, ein User – so oder so ähnlich dürften die meisten PC-Setups aussehen. Während in Firmennetzen mit Terminalservern wieder eine Rückbesinnung auf die Mainframe/Terminal-Architektur Einzug gefunden hat sind solche Ansätze bei einzelnen PCs eher weniger verbreitet. Keine Verbreitung heißt aber nicht, dass so etwas unmöglich ist. Vor einigen Jahren berichtete bereits die c’t über diese Möglichkeiten, aus Mangel an Interesse überflog ich die Seiten aber nur grob.

Zwischenzeitlich hat sich dann doch eine Idee ergeben, mein Server sollte dran glauben – mit Onboard Cirrus-Karte und einer Radeon PCI ging es in den Test. TFT+Touchscreen starten eine X-Sitzung mit meinem Frontend, die Cirrus-Karte darf unterdessen mit Tastatur und Maus die zweite Bedieneinheit bilden und sich mit xterm & co rumschlagen.

Erster Blick auf die Dokus: Kernel über 2.4.irgendwas sollte passen, mehrere Grafikkarten ebenfalls und ein X.org über 6.9 sollte ebenfalls keine Hürde darstellen. Durch meine Basteleien mit (X)DMX (ops, ich seh grade die Doku hab ich nie veröffentlicht) ist mir noch so einiges aus der xorg.conf im Kopf, daher kein wirkliches Problem eine passende Grundconfig zu schreiben, die Anpassungen für Multiseat liefert die Gentoo-Wiki.

Der erste Teststart mit beiden Monitoren brauch ein paar Minuten – die I2C-Verbindung für DDC ist über 20m Monitorkabel wohl nicht gerade zuverlässig. Trotzdem starteten beide Monitore zufriedenstellend. Als nächstes der Start mit einzelnen Monitoren, leider nicht ganz so erfolgreich – jeder für sich startet problemlos, simultan jedoch kommt die Radeon aus dem Tritt und verabschiedet sich bis zum nächsten Reboot (genauer: Es werden falsche Monitorfrequenzen berechnet – laut Log soll die Radeon plötzlich irgendwas zwischen -32000000MHz und 32000000MHz unterstützen). Auch der versuch die PCI-Isolierung über die X-Argumente zu regeln brachte leider keinen Erfolg. Scheint, als ob ich bei Multihead bleiben muss, auch wenn dadurch beide Monitore nicht komplett unabhängig betrieben werden können.

Mediacenter-Zwischenstand

Inzwischen wächst mein Touchscreen-Mediacenter langsam weiter – das neue Menüesign habe ich vom „Telekom-Haus“ abgekupfert (Bild), die Startseite enthält nun nurnoch das aktuelle Wetter sowie die Vorhersage für die nächsten Stunden, die Steuerung der einzenen Relais ist auf eine eigene, momentan noch etwas spartanische, Seite des Menüs gewandert. Videos werden noch immer als eine „Coverparade“ angezeigt, auf Klick/Touch lassen sich IMDB-Infos einblenden und das Video abspielen – dank neuer Radeon-Karte im PCI-Slot auch etwas flüssiger als bisher. Audio wird ebenfalls einen neuen Anstrich erhalten: Zwar greife ich immernoch auf Amarok (und somit auch dessen Metadaten und die gesammelten Statistiken und Bewertungen aller PCs) zurück, allerdings wird dieser nun direkt über meine PHP/HTML-GUI gesteuert – DCop machts möglich. Neu dabei kommt am Ende noch die Möglichkeit über LAN auf einige Ressourcen eines anderen PCs zuzugreifen – ich denke dabei an einen Embedded-Rechner mit DVD-Laufwerk am Monitor oder auch einen Rechner mit TV-Karten.

Wofür hab ich eigentlich ein RAID…

Die Frage stellt sich mir momentan ernsthaft… Eigentlich sollte ein RAID5 die Daten gut aufbewahren und wöchentliche Festplattentests sowie SMART-Monitoring Sektorenfehler und Ähnliches früh genug entdecken – eigentlich. Eine kurze Mail am Freitag deutete es bereits an: Eine der Platten hat sich mit Totalschaden abgeschaltet – Elektronikfehler. Etwas ärgerlich – die betroffene Platte (Samsung HD501LJ, 500GB) hatte ich erst Ende des letzten Jahres gekauft – meine bisherigen Platten des Herstellers hielten immer so ca. 2 Jahre Dauerbetrieb durch. Das System lief naürlich wie erwartet „degraded“ weiter. Nun gut, also Deckel auf und die bereitliegende Ersatzplatte eingebaut – resync. Einige Stunden später dann schlechte Laune vor meinem Bildschirm: Einige Programme reagierten nicht mehr. Ein Blick auf den Server bestätigen die Vermutung: Eine weitere Platte hat sich mit Sektorenfehlern aus dem RAID entfernt, womit nicht genug Festplatten für den weiteren Betrieb vorhanden waren und sich alles abschaltete. Hmpf. OK, Rescuesystem geladen, das RAID mit den vorhandenen Platten notdürftig zusammengeflickt und die Daten erst mal Roh auf die (für das RAID ja nicht relevante) Ersatzfestplatte kopiert. Am nächsten Morgen wäre der Server fast aus dem Fenster geflogen – ein Glück, dass er ein paar Kilo zu viel hat um ihr alleine weit zu tragen – nun waren alle übrigen Platten des RAIDs offline – WTF. Etwa doch der SATA-Controller eine Macke? Oder gabs ein Problem mit der Stromversorgung der Platten? OK, das Ding muss online, ich muss mich abreagieren, also die Festplatten samt Controller an einen anderen PC und siehe da – mit 2 Netzteilen und einem Turm aus Platten neben dem Mainboard konnte ich alle Daten auf die Ersatzfestplatte rüberheben. Immerhin in Sicherheit. Inzwischen habe ich die wichtigsten Daten (Routerdaten und Profile) auf das Systemraid des Servers (3xSCSI RAID1) geschoben (warum zum Henker kann ich NFS-Mountpoints nicht neu exporten -.-) und kann zumindest etwas arbeiten. Nächste Woche werde ich mir dann neue Platten besorgen und die bisherigen RAID-Platten Stück für Stück manuell prüfen und ggf. ersetzen. Den Controller werde ich wohl drin lassen – im aktuellen Rechner hat er keine Probleme gemacht und Ersatz wäre etwas kostspielig – anständige PCI-SATA-Controller mit 4 Ports kosten leider ein paar Hunderter.

Ich hasse Sommer…

…zumindest im technischen Sinne, denn derzeit werde ich mit folgenden Mails zugebombt:

Device: /dev/sdf, ATA error count increased from X to Y

Warmes Wetter und Festplatten vertragen sich wohl nicht so ganz…

Optimieren spart Zeit und Nerven – oder auch nicht

…denn einige der üblichen Linux-Optimierungen können schnell nach hinten los gehen: Den Anfang machte das Spiel Enemy Territory, welches ich mal wieder aus der Versenkung gefischt habe. Alles funktioniert prima, versucht man jedoch einem Spiel beizutreten landete man wieder auf dem Desktop – eine Datei würde fehlen. Hm – OK, auf den Spielordner unter /opt hat die Gruppe games, welcher der User auch angehört, die nötigen Rechte und auch die Datei findet sich dort. Sollte also funktionieren – eigentlich, denn ich habe nicht mit den Mods gerechnet. In meinem aktuellen Fall war „JayMod“ der Auslöser – diese Mod installiert eine neue Version der Datei ins Mod-Verzeichnis unterhalb von ~/.etwolf/ – nicht sehr passend, wenn man, wie in diversen Anleitungen empfohlen, sein /home auf einer eigenen Partition eingerichtet und mit der option noexec gemountet hat. Hier hilft dann nur ein remount mit exec oder das Umbiegen der ET-Verzeichnisse auf eine andere Partition.

Der zweite Fehler hat mich etwas länger auf Trab gehalten – mein Laptop dient nebenbei als Testgelände für kommende Gentoo-Pakete, daher ist hier ~x86 (aka testing) installiert. Soweit kein Problem, die meisten Probleme mit den Abhängigkeiten lösen sich recht schnell, aber seit einiger Zeit machen einige Pakete, welche revdep-rebuild eingebracht hat, größere Probleme. So brachen z.B. subversion, totem und avidemux wärend des Kompilierens ab – gcc verstand plötzlich seine eigenen include-files nicht mehr. Gcc neu kompiliert, mit gcc-profilen gespielt, aber das alles ist natürlich relativ zwecklos, wenn man am falschen Ort sucht. Die Meldung kam nicht von meinem Laptop, durch einen vorherigen Versuch war noch distcc aktiv und die 4.1er GCCs auf den anderen Rechner können mit den Dateien des 4.2er natürlich nicht viel anfangen.