Daniels Blog
29Apr/100

6 nützliche Dinge, die man mit SSH tun kann

SSH ist wahrscheinlich mein liebstes Stück Software. Es ist frei, gibt mir Freiheit, es ist einfach zu benutzen und ist trotzdem sehr mächtig. Mit SSH kann man Kommunikation verschlüsseln. Das klappt auf eine sehr universelle Weise für fast jedes Problem. In diesem kleinen Howto zeige ich 6 nützliche Dinge die man - ohne zu großen Stress - mit SSH tun kann. SSH ist mehr als "nur" eine sichere Remote-Shell!

Ding #1 - Eine sichere Remote-Shell

ssh_console1

Das ist das Offensichtlichste was man mit SSH tun kann und die meisten Linuxuser haben es wohl schon einmal gemacht: Eine sichere Verbindung mit einem anderen Rechner herstellen und diesen darüber administrieren.

Das geht sehr einfach:

ssh user@box_B

Das verbindet Dich zu BOX B als "user". Danach kann man als "user" auf BOX B arbeiten.

Manchmal benötigt man gar keine interaktive Sitzung zu einem entfernten Rechner, sondern möchte lediglich ein einzelnes Kommando ausführen.

ssh user@box_B command

Hier wird man zu Box B als "user" verbunden, das Kommando "command" wird ausgeführt, das Ergebnis landet auf der lokalen Standardausgabe und die Verbindung wird beendet.

Ding #2 - Dateien zwischen Rechnern sicher kopieren

ssh_copy

Cool, wir können eine entfernte Maschine mit SSH administrieren, aber man kann mit SSH auch Dateien von einer Maschine zu einer anderen kopieren. Es funktioniert im Grunde so wie das "cp" Kommando, es heisst aber "scp" - Secure Copy.

scp /home/me/a_file.txt user@box_B:/home/me/

Das kopiert die lokale Datei "/home/me/a_file.txt" auf Box A nach "/home/me/a_file.txt" auf Box B.

Es funktioniert auch andersherum:

scp user@box_B:/home/me/b_file.txt /home/me

Das würde die Datei "/home/me/b_file.txt" von Box B ins Home-Verzeichnis auf Box A kopieren.

Weil "scp" so ähnlich funktioniert wie "cp" sind auch Wildcards erlaubt:

scp /var/log/* user@box_B:/home/me/logsbackup

Das kopiert alle Logfiles von Box A nach "/home/me/logsbackup" auf Box B.

Ding #3 - Ein Verzeichnis auf einem entfernten Rechner ins lokale Dateisystem mounten

ssh_mount

Manchmal reicht es nicht einfach nur einige Dateien von einem Rechner auf einen anderen zu kopieren. Ein entferntes Verzeichnis ins lokale Dateisystem zu mounten ist super nützlich, wenn man mit lokalen Programmen Remote-Files bearbeiten will. Ein gutes Beispiel dafür wäre zum Beispiel die Arbeit an einer Webseite auf einem entfernten Server. Man kann einfach das Web-Verzeichnis des entfernten Servers ins lokale Dateisystem mounten und danach die Dateien mit all den coolen lokal installierten HTML-Editoren und Grafikprogrammen öffnen und speichern. Ganz so als wären die Dateien auf der loaklen Platte. Hierfür benötigt man "sshfs". Das FUSE-Filesystem ist in vielen Distributionen nicht standardmässig installiert aber meistens in den Repositories enthalten. Unter Debian und Ubuntu kann man es so installieren:

apt-get install sshfs

Nach der Installation kann man beginnen es zu benutzen

mkdir /mnt/b_data
sshfs user@box_B:/b_data /mnt/b_data

Das mountet das Verzeichnis "/b_data" auf Box B nach "/mnt/b_data" im lokalen Dateisystem. Nun kann man mit lokalen Programm die Remote-Dateien bearbeiten. Wenn man fertig ist, kann man den mount wieder entfernen:

fusermount -u /mnt/b_data

Falls der unmount fehlschlägt sollte man überprüfen, ob noch Dateien vom Remoterechner geöffnet sind oder ob man sich noch mit der Shell oder einem Dateimanager im gemounteten Verzeichnis befindet.

Ding #4 - Unzensiert und anonym von "kritischen Orten" aus im Web surfen

ssh_proxy

Firmenrichtlinien, faschistische Regierungen, Internet-Cafes und andere unfreundliche Regelungen, Institutionen und Orte können einen sicheren und privaten Zugriff aufs Web ziemlich schwierig gestalten. Firewalls und Proxys könnten interessante Webseiten blocken, loggen wo man herumsurft, Man-In-The-Middle-Attacken ausführen oder einfach nur ein mulmiges Gefühl generieren. SSH ist die Lösung für alle diese Probleme. Es bietet die Möglichkeit als Web-Proxy (SOCKS) zu arbeiten. Man verbindet sich einfach per SSH zur guten vertrauenswürdigen BOX B und surft durch diese Verbindung.

(Lokaler Browser <-> Lokaler SSH Proxy <-> SSH <-> Box B <-> Webseite)

Dann kann niemand mehr im unfreundlichen lokalen LAN blockieren, zensieren oder schnüffeln.
Klingt gut? Es ist sogar sehr einfach einzurichten und zu benutzen! SSH bietet die "-D" Option um einen SOCKS-Proxy auf der lokalen Maschine einzurichten:

ssh -D 1234 user@box_B

Nun hat man einen SOCKS-Proxy der auf localhost Port 1234 lauscht. Nun muss man nur noch seinem Browser so konfigurieren, dass er für Internetverbindungen diesen Proxy benutzt. Man kann überprüfen ob alles funktioniert hat, wenn man im Browser eine Webseite aufruft, die die IP-Adresse ausgibt, die für die Verbindung genutzt wurde. http://www.whatismyip.com würde funktionieren, aber es gibt auch 1000de andere Seiten. Wenn dort die IP von Box B erscheint, ist alles in Butter. Ein portalbler Browser auf einem USB-Stick wie zum Beispiel Portable Firefox würde die Sache noch angenehmer machen.

Ding #5 - Den Traffic von lokalen Programmen verschlüsseln und tunneln oder auf Dienste in LANs zugreifen, die normalerweise nicht übers Internet erreichbar sind.

ssh_tunnel_l

OK, wir haben sicher Maschinen administriert, Dateien sicher von Maschine zu Maschine kopiert und haben sogar in China unzensiert im Web gesurft. Aber SSH kann mehr! Man kann damit den Datenaustausch aller lokalen Programme die TCP benutzen durch einen Tunnel zu einem vertrauenswürdigen Rechner schicken. Wie schon mit dem SOCKS-Proxy kann man Daten-Verkehr zunächst durch diesen Tunnel schicken, zum Beispiel den vom lokalen E-Mail Client, damit er nicht durchs lokale LAN fliessen muss. Wir möchten unsere E-Mail in einer "kritischen" Umgebung abrufen. Skript Kiddies, blöde Admins und Terror-China-Hacker könnten die Mail mitlesen oder sogar das E-Mail-Passwort mitsniffen. SSH hilft. Die Syntax für Tunnel mit SSH ist etwas krampfig und zunächst ein ziemlicher Brain-Twister aber eigentlich ziemlich logisch und mit ein bisschen Übung nicht schwierig:

ssh -L local_port:target_host:target_port user@box_B

zum Beispiel:

ssh -L 10000:pop3.mailprovider.com:110 user@box_B

Was ist hier geschehen? SSH wurde angewiesen einen Tunnnel mit einem lokalen (-L) Endpunkt auf Port 10000 anzulegen. Alles was in diesen lokalen Endpunkt an Daten hineingeworfen wird, fliesst zunächst verschlüsselt zu Box B und danach zu "pop3.mailprovider.com" auf port 110 (Port 110 ist POP3). Die Daten fliessen also vom lokalen E-Mail Client verschlüsselt zu Box B und von dort aus an den E-Mail-Provider. Der E-mail Account im lokalen Client benötigt somit also für den POP-Server folgende Einstellungen: Server: localhost / Port: 10000. Aber es muss nicht unbedingt E-Mail sein. Jede Applikation, die das TCP-Protokoll benutzt kann so getunnelt werden. Zum Beispiel IRC, FTP, HTTP, IMAP, etc.

Falls sich der Server auf den zugegriffen werden soll nicht irgendwo im Internet sondern auf Box B selbst befindet, kann der Zielrechner natürlich auch BOX B sein:

ssh -L 10000:127.0.0.1:110 user@box_B

Ziel in diesem Beispiel ist "127.0.0.1", weil es das Ziel aus der Sicht von Box B ist. Denn "127.0.0.1" gesehen von Box B ist Box B selbst.

Tunneln kann nützlich sein um Internetdienste abzusichern, aber auch um auf Dienste in BOX B's privatem Netzwerk zuzugreifen. Falls man einen von außen zugänglichen SSH-Account in einem LAN besitzt, kann man so auf alle TCP-Dienste in diesm LAN zugreifen, ganz so als sei man ein "echter" Client in diesem LAN.

Angenommen BOX B steht in einem Intrantet, das einen interessanten Webserver beherbergt, der aber nicht aus dem Ineternet zugänglich ist. Dieser Server läuft im LAN auf Kiste 192.168.0.77. Mit SSH tunnelt man nun einfach einen lokalen Port auf Port 80 des Webservers im LAN:

ssh -L 10000:192.168.0.77:80 user@box_B

Wenn man nun "http://127.0.0.1:10000" im lokalen Webbrowser aufruft landet man auf der Homepage des Webservers im entfernten Intranet.

Ding #6 - Ein Tunnel - andersherum

ssh_tunnel_r_good

Wenn #5 klar ist, sollten umgekehrte Tunnel kein Problem mehr sein. Hier wird ein entfernter Endpunkt für den Tunnel erstellt. Alles was dort hineinfliesst wird verschlüsselt weitergeleitet an BOX A (den lokale Rechner) und danach an den Zielrechner weitergeleitet.

ssh -R remote_port:target_host:target_port user@box_B

zum Beispiel:

ssh -R 10000:pop3.mailprovider.com:110 user@box_B

Im E-Mail-Client würde man als POP-Server "Box B" und Port "10000" eintragen.
BOX B tunnelt dann den Traffic zunächst sicher auf BOX A um. Box A leitet danach weiter an "pop3.mailprovider.com" port "110"

Nützliche Kommandozeilenoptionen für SSH

-c "Compress"

Die "-c" Option komprimiert die übertragenen Daten mit gzip bevor sie durchs Inetrnet fliessen. Das erhöht die Geschwindigkeit beim Übertragen von unkomprimierten Daten (so wie reinem Text) stark. Sie ist nützlich beim Übertragen
langer Textdateien oder beim Websurfen wenn man SSH als Proxy nutzt.

ssh -c -D 1234 user@box_B

-g "Grant Access"

Die "-g" option eraubt anderen Rechnern als localhost auf die lokal angelegten Tunnelendpunkte zuzugreifen. So können also zum Beispiel auch andere Rechner im LAN die lokal angelegten Tunnel nutzen.

ssh -L -g 10000:127.0.0.1:110 user@box_B

-p "Port"

Die "-p" Option benötigt man, wenn der entfernte SSH-Server nicht auf dem Standardport 22 lauscht.

ssh -p 22000 user@box_b

-v "Verbose"

Mit dieser Option kann man sehr viele technische Verbindungsinformationen sehen, falls man tiefer in SSH eintauchen möchte.

Mehr Lesestoff:

Ich habe versucht diesen Artikel so einfach wie möglich zu schreiben, da er mir selbst in erster Linie als Referenz dienen soll. Es gibt aber noch sehr viel mehr was man mit SSH tun kann:

The SSH man page

The SSH RFC

Wikipedia on SSH

SSH - The Definitive Guide by O'Reilly

29Apr/100

Meine Ubuntu 10.04 Lucid Lynx Problemchen (und wie ich sie gelöst habe)

Der Luchs ist da! Deshalb ist es wie schon bei Karmic an der Zeit alle Änderungen zu dokumentieren, die ich vornehmen musste, damit alles nach meinen Vorstellungen läuft. Diese Liste wird über die Lebenszeit des Luchses sicherlich noch etwas wachsen. Einige Probleme sind sehr speziell, andere könnten auch andere Benutzer interessieren. Im Großen und Ganzen bin ich schwer begeistert von 10.04: Alles wirkt etwas smoother, schneller und aufgeräumter. Karmic hat mir zwar gute Dienste geleistet, aber den Luchs habe ich bereits jetzt ins Herz geschlossen. Euch allen ein schönes halbes Jahr (oder sogar 3?) mit Ubuntu 10.04 Lucid Lynx!

Problemchen #1: Fensterbuttons nach rechts verschieben

Zum Glück nur einmal Copy/Paste....


gconftool-2 --set /apps/metacity/general/button_layout --type string "menu:minimize,maximize,close"

Problemchen #2: Miese Flash Performance

Seit Karmic wurden die Standardeinstellungen für den Radeon-Treiber geändert. Meine Mobility Radeon 9600 auf einem Asus M6N kommt im Zusammenspiel mit Flash damit nicht klar. Webseiten mit Flash pushen die CPU auf 100%. Mit dieser xorg.conf klappt es:

Section "Device"
	Identifier	"Configured Video Device"
	Option          "AccelMethod" "XAA"
EndSection

Problemchen #3: Fensterskalierung bei Pokerstars

In Pokerstars unter Wine skalieren die Tische nicht mit, wenn man das Tischfenster resized. Mit einem speziellen Eintrag in der user.ini im Pokerstarsverzeichnis lässt sich das beheben. Nach einem Neustart von Pokerstars lässt sich das Fenster mit F5 auf die richtige Größe bringen.

# user.ini
[Options]
f5redrawtable=1


Problemchen #4: Links in Pokerstars

In Pokerstars unter Wine öffnen angeklickte Links den Browser nicht.


"wine regedit" starten
Key HKEY_CLASSES_ROOT\http\shell\open\command suchen
In diesem Key "%1" nach "-nohome" anhängen


Problemchen #5: ffmpeg mit unfreien Codecs installieren

ffmpeg ist super zum konvertieren von Videos. Um auch unfreie Codecs nutzen zu können (z.B. h264, AAC) muss man ffmpeg selbst kompilieren. Das original Howto ist hier.


Problemchen #6: Logitech Quickcam Chat funktioniert unter Skype nicht

Die Kamera benötigt eine spezielle Library. So klappt es:

# Skype starten
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

Danke an Arun


Problemchen #7: Es werden nicht alle Auflösungen und Wiederholraten meines externen Monitors erkannt

Eine Anpassung der xorg.conf mit den richtigen Werten funktioniert:

# /etc/X11/xorg.conf
Section "Monitor"
        Identifier      "NOVITAS"
        Option          "VGA"
        HorizSync       30-80
        VertRefresh     50-75
        ModeLine        "1024x768@75" 94.43 1024 1056 1528 1560 768 782 792 807
EndSection


Section "Screen"
        Identifier      "Default Screen"
        Device          "Configured Video Device"
        Monitor         "NOVITAS"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1027x768@75" "1024x768" "800x600"
        EndSubSection
EndSection


Problemchen #8: Der "Dokumentbetrachter" kann nicht drucken.

Geht doch. Hatte nur Probleme mit einem ganz bestimmten Dokument. Alle anderen funktionieren.


Problemchen #9: Der Ziffernblock meiner Tastatur geht nicht mehr

Wow was ist das denn? Jetzt wirds langsam nervig 🙂
"Mauszeiger per Tastatur steuern" war aktiv. Ist das eine neue Standardeinstellung?
(unter System > Einstellungen > Tastatur > Maustasten). Nach dem Deaktivieren dieses Features ging es wieder.


Problemchen #10: Lautstärkeregler im Panel ohne E-Mail Icon (Benachrichtigungsanzeige)

Seit Lucid sind der Lautstärkeregler und die Steuerung für Evolution und Messenger gebündelt als "Benachrichtigungsanzeige". Ich benutze Evolution nicht und das E-mail-Icon nimmt Platz weg.

Unter System -> Einstellungen -> Startprogramme "gnome-volume-control-applet" eintragen um nur die Lautstärkensteuerung ohne das Brief-Icon zu bekommen.


Problemchen #11: Aktuellste Adobe-Flash Version installieren


#!/bin/bash
# 
# http://labs.adobe.com/downloads/flashplayer10.html 
#

sudo su
cd /tmp
wget http://download.macromedia.com/pub/labs/flashplayer10/flashplayer10_1_rc2_linux_041910.tar.gz
tar xvf /tmp/flashplayer10_1_rc2_linux_041910.tar.gz
mv /usr/lib/flashplugin-installer/libflashplayer.so /usr/lib/flashplugin-installer/libflashplayer.so.orig
mv /tmp/libflashplayer.so /usr/lib/flashplugin-installer/
rm /tmp/flashplayer10_1_rc2_linux_041910.tar.gz

28Apr/100

Crosslink-Kabel Ersatz: Delock Crossover-Adapter RJ-45 (M) – RJ-45 (W)

Crosslink-Kabel benötige ich äußerst selten. Man kann mit ihnen 2 Rechner direkt von Netzwerkkarte zu Netzwerkkarte (ohne einen Switch oder Router) verbinden. Immer wenn ich aber mal eins gebraucht habe, war es ziemlich dringend. Natürlich war dann auch gerade keins zur Hand und es ist in einer üblen Bastelei ausgeartet, wie rechts im Bild zu sehen. Im Crosslinkkabel sind lediglich die Adern gekreuzt. Auf einer Seite des Kabels ist ein normaler Patchkabel-Stecker, auf der anderen dasselbe noch einmal spiegelverkehrt. Um diesem Problem aus dem Weg zu gehen und da ich solch ein Kabel vor kurzer Zeit einmal gebraucht hätte, habe ich mir diesen kleinen schicken Adapter bestellt, der in Sekunden aus einem normalen Patchkabel ein Crosslinkkabel macht.

no images were found

27Apr/100

Daten in Dropbox transparent verschlüsseln mit encfs

Dropbox ist schon ein tolles Tool. Nach der Installation hat man einen Ordner im lokalen Dateisystem, der automatisch alle enthaltenen Dateien online sichert und synchronisiert. Wenn man mehrere Rechner hat, erscheinen die Dateien auf allen Rechnern. Das ist sehr praktisch, zum Beispiel um wichtige Dokumente auf jedem Rechner verfügbar zu haben, oder um Konfigurationsdateien, wie zum Beispiel das E-Mail-Adressbuch zwischen Rechnern zu synchronisieren. Allerdings sollte man sich darüber bewußt sein, dass alle Daten im Dropbox-Ordner natürlich auch auf einer Festplatte irgendwo in der "Cloud" liegen (müssen). Dropbox gibt zwar an, dass sie die Daten der Nutzer selbst nicht einsehen können, da sie mit dem Passwort des Nutzers verschlüsselt werden. Trotzdem hatte ich immer ein ungutes Gefühl dabei "wichtige" Dateien zu "dropboxen". Mit Hilfe von encfs kann man sich allerdings innerhalb der Dropbox einen verschlüsselten Bereich anlegen, der vollkommen transparent verschlüsselt und entschlüsselt wird. Ein gutes Gefühl, oder?

 

Na dann mal los. Zunächst braucht man 2 neue Verzeichnisse. Zum einen ein Verzeichnis in der Dropbox, das später verschlüsselt wird und zum anderen ein Verzeichnis in das man das verschlüsselte Verzeichnis später entschlüsselt mounten kann:

mkdir /home/user/Dropbox/enc
mkdir /home/user/dec

Danach bereitet man das verschlüsselte Verzeichnis für die Benutzung vor und mountet es direkt:

sudo apt-get install encfs
encfs /home/user/Dropbox/enc /home/user/dec

Ab sofort werden alle Dateien, die in /home/user/dec abgelegt werden, verschlüsselt in die Dropbox gepackt.

Dateien in den Verzeichnissen sehen danach so aus:

# /home/user/dec

ww-ww-20:39:28 ~/dec-> ls -la
insgesamt 2320
drwxrwxr-x 13 ww ww    4096 2010-12-18 20:39 .
drwxr-xr-x 70 ww ww    4096 2010-12-18 03:39 ..
-rw-rw-r--  1 ww ww      13 2010-12-18 20:39 meine_geheime_datei

ww-ww-20:40:33 ~/dec -> cat ./meine_geheime_datei 
SUPER GEHEIM



#/home/user/Dropbox/enc

ww-ww-20:39:28 ~/Dropbox/enc-> ls -la
-rw-rw-r--  1 ww ww      29 2010-12-18 20:39 zKcZI9p9vmR60OMvDJPKeZPnGyRByRWVRUKyAOr4sRTVu-

ww-ww-20:42:32 ~/Dropbox/enc -> cat ./zKcZI9p9vmR60OMvDJPKeZPnGyRByRWVRUKyAOr4sRTVu- 

��Z�
    ��>o��q0�����"�q
                    �

Den Mountvorgang kann man beim Login mit einem kleinen Einzeiler automatisieren:

#!/bin/bash
echo "MeinPasswort" | encfs -S /home/user/Dropbox/emc /home/user/dec

Eine gratis Dropbox mit 2.25 GB Speicher bekommst Du hier.

23Apr/100

USB Netzwerkkarte (auch) für Linux: DeLOCK 61147 USB 2.0 > Ethernet Adapter

Achtung! Aktuell unter Lucid läuft der Adapter NICHT mehr.

Um es gleich vorweg zu nehmen - der Adapter läuft mit einem aktuellen Linux ohne Treiberinstallation sofort "out of the Box" (getestet unter Debian Lenny und Ubuntu Karmic). Drinnen steckt ein indischer MOSCHIP 7830. Mit dem praktischen Teil kann man allen Kisten mit USB-Anschluss eine weitere Netzwerkkarte spendieren. Zum Beispiel um ein Notebook als Bridge oder Router zu benutzen, oder um Kisten ohne Netzwerkkarte online zu bekommen.

Nach dem Einstecken:

# /var/log/messages

Apr 23 18:23:08 ww kernel: [13489.976038] usb 1-3: new high speed USB device using ehci_hcd and address 7                                                                                                 
Apr 23 18:23:08 ww kernel: [13490.112911] usb 1-3: configuration #1 chosen from 1 choice             
Apr 23 18:23:08 ww kernel: [13490.184613] usb 1-3: applying rev.C fixup                              
Apr 23 18:23:08 ww kernel: [13490.192111] usb 1-3: applying rev.C fixup                              
Apr 23 18:23:08 ww kernel: [13490.201739] eth2: register 'MOSCHIP usb-ethernet driver' at usb-0000:00:1d.7-3, MOSCHIP 7830/7730 usb-NET adapter, 00:13:3b:04:00:5a                                        
Apr 23 18:23:09 ww NetworkManager:    SCPlugin-Ifupdown: devices added (path: /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/net/eth5, iface: eth5)                                                
Apr 23 18:23:09 ww kernel: [13490.251588] udev: renamed network interface eth2 to eth5               
Apr 23 18:23:09 ww NetworkManager:    SCPlugin-Ifupdown: device added (path: /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/net/eth5, iface: eth5): no ifupdown configuration found.

eth5 existiert danach und kann direkt konfiguriert werden.

Mit dabei ist noch eine Treiber-CD mit Treibern für Windows und Linux, man kann sich zur Not also auch das Kernelmodul selbst kompilieren. Der Hersteller bietet eine Seite mit aktuellen Treibern für alle gängigen Betriebssysteme. Und auch vom Chiphersteller selbst gibt es eine Treiber-Downloadseite.

Ein cooles Teil. Es wird sich noch im täglichen Gebrauch beweisen müssen, aber der erste Eindruck war sehr gut.

no images were found

20Apr/100

Auf Trojanerjagd mit einer sniffenden Netzbrücke

Vor einigen Tagen erhielt ich einen Anruf mit der Bitte um Hilfe. Aus einem Firmen-LAN mit ca. 10 Clients konnte keine E-Mail mehr versandt werden. Alle Mails blieben in der Warteschlange des lokalen SMTP stecken, der sie an einen Remote-SMTP beim Provider weiterreichen sollte. Eine manuelle Telnet-Session zum SMTP des Providers brachte schnelle Klarheit: "Your IP is blacklisted in Spamcop.net's Spam-Database". Ups. Ich dachte zunächst nichts Böses und ging davon aus, dass das Problem dadurch entstanden ist, dass durch Pech beim täglichen IP-Wechsel eine Ex-Adresse eines Spammers zugewiesen worden war. Nach einem mauellen Reset des Routers, der dadurch eine neue IP bekam, war das Problem auch gelöst (dachte ich zumindest). Die Mails gingen raus.

Einen Tag später: "Wir können keine Mails mehr verschicken!" Oh nein, eine Workstation hat einen Trojaner. Der Spammer ist im LAN. Avira Workstation Pro läuft auf allen XP-Clients im LAN und hat in der Regel auch zuverlässig funktioniert. Hier ist aber wohl etwas schief gelaufen.

Um herauszufinden wer der Übeltäter ist, habe ich den SMTP-Traffic zwischen DSL-Router und LAN gesnifft. Da alle Clients an Switchen hängen, war passives Mithören am selben Switch mit einem Client nicht möglich (Das geht nur mit HUB's). Deshalb habe ich mit einer Debian-Kiste, 2 Netzwerkkarten und 2 Switches ziemlich umständlich einen Wiretap gebaut. Dabei war mir dieser Artikel von heise netze sehr nützlich.

Im Endeffekt muss nur die Verkablung des Sniff-Rechners stimmen, danach muss eine
Netzwerkbrücke erstellt werden:

Die beiden Netzwerkkarten im Rechner wurden gebridged, damit der ganze LAN-INTERNET Traffic auch durch den Pinguin fliessen konnte. Ein Sniff mit Wireshark auf TCP/25 brachte dann sehr schnell die Lösung. In Sekundenschnelle füllte sich das Livelog mit SMTP-Verbindungen eines LAN-CLients zu externen SMTPs.

Den Übeltäter habe ich mit dem Avira Rescue System gebootet. Die Live-CD hat einen Trojaner (TR/Trojan.GEN) festgestellt, konnte ihn aber nicht löschen. Ich habe die infizierte Datei (Zufallsname in system32/drivers) danach mit einer Ubuntu-Live-CD entfernt. Die Spamflut hatte aufgehört. Ich muss es noch einige Zeit beobachten, aber ich glaube der Client ist wieder Herr seiner Sinne.

Ich werde mir mal so einen USB LAN NIC besorgen. Dann geht das ganze auch mit dem Notebook. Das wäre viel angenehmer beim nächsten Mal.

Die heise Schnüffel-Bridge:

apt-get install brctl

ifconfig eth0 -arp promisc 0.0.0.0 up 
ifconfig eth1 -arp promisc 0.0.0.0 up 
brctl addbr br0 
brctl addif br0 eth0
brctl addif br0 eth1 
ifconfig br0 -arp promisc 0.0.0.0 up
15Apr/100

Die Ubuntu 10.04 Lucid Lynx Wallpaper sind da

Der Contest in der Ubuntu Artwork Flickr Group ist vorbei und die offiziellen Wallpaper für Lucid Lynx, die standardmässig in der Final enthalten sein werden, stehen fest.

Alle Wallpaper bekommt man zum Download im Launchpad.

no images were found

8Apr/100

Mit der PS3 online zocken ohne Update 3.21 [defunct]

Leider funktioniert der Workaround seit dem 13. April nicht mehr. Sony überprüft inzwischen auch bei der Anmeldung ans PSN die Firmware-Version. Das Update Downgrade 3.21 für die PS3 entfernt die Linux-Unterstützung der PS3. Deshalb sollte man es nicht installieren, falls man die PS3 auch weiterhin als Linux-Rechner benutzen möchte. Um trotzdem mit der PS3 online zocken zu können muss man etwas tricksen und ihr vorgaukeln, es gäbe das Update auf 3.21 gar nicht. Danke an einige Unbekannte aus dem Golem-Forum, die die Methode zusammengebastelt haben. Ich habe sie lediglich in einem leicht zu benutzenden Skript zusammengefasst. Der Trick funktioniert so: Bevor die PS3 online geht, überprüft sie, ob sie die neueste Systemsoftware hat. Wenn nicht, wird der Benutzer zum Update aufgefordert und die Verbindung schlägt fehl. Zur Überprüfung verbindet sich die PS3 mit einem SONY-Server und liest dort eine Textdatei, in der die aktuelle Version hinterlegt ist.

Um der PS3 vorzugaukeln, dass sie bereits die aktuelle Version hat, benötigt man einen lokalen Proxy-Server (im Beispiel Squid), der die Anfrage an den SONY-Server an einen anderen Webserver umleitet, auf dem eine ältere Version der Textdatei liegt. Die PS3 denkt, dass sie aktuell ist und geht online.

Der Code wurde getstet unter einem Debian Lenny mit einem lokalen Webserver auf der Maschine. Er sollte aber auch unter Ubuntu ohne Probleme funktionieren.

Danach muss man in der PS3 als Proxy (Einstellungen -> Netwerk-Einstellungen -> Internetverbindungseinstellungen) lediglich noch die IP des Squid-Proxys angeben. Der Squid-Standardport ist 3128.

Leider ist das keine permanente Lösung. Sobald die ersten Games die Firmware 3.21 voraussetzen, werden diese durch diesen Workaround unspielbar. Aber wahrscheinlich ist ohnehin bald eine permanente Lösung verfügbar. Eventuell tut sich auch auf rechtlicher Seite etwas, da das Vorgehen von SONY klar gegen die EU-Direktive 1999/44 verstößt, die unter anderem vorschreibt, dass ein in der EU gekauftes Produkt die Funktion erfüllen muss, die dem Käufer zur Zeit des Kaufes bekanntgemacht wurde. Wörtlich: "fit for the purpose which the consumer requires them and which was made known to the seller at the time of purchase""

8Apr/100

Linux auf der PS3 offenbar gerettet

Letzte Woche hat die neue PS3-Firmware Blogger-Wellen geschlagen, da sie als einziges neues Feature den Support für das zusätzliche Betriebssystem auf der PS3 entfernte. Heute präsentierte "GeoHot" seinen angekündigten Weg aus der Misere:

Ich habe bisher nicht upgedatet, um das "Other OS" nicht zu gefährden, da ich mir damit eine Emu-Box bauen wollte. Bisher wurde der Patch von Geohot noch nicht veröffentlicht. Um weiterhin mit einer nicht aktualisierten PS3 online gehen zu können, kann mit einem Webproxy wie zum Beispiel Squid gebastelt werden. Ich bin gespannt. Mehr Infos hier: http://geohotps3.blogspot.com/

4Apr/100

Ubuntuzilla – Immer die aktuelle Firefox- und Thunderbirdversion unter Ubuntu

Das Paketsystem von Ubuntu ist schon etwas Feines. Nachdem man ein Programm über die Paketverwaltung installiert hat, bekommt man automatisch Sicherheitsupdates und neuere Versionen eingespielt. Sicherheitsupdates kommen sofort, wenn sie verfügbar sind. Neue Software-Versionen hingegen leider immer nur im Takt der Ubuntu Releases. Man wartet, wenn man sich das entsprechende Programm nicht manuell installieren will, ziemlich genau 6 Monate auf die nächste Version. Das ist in der Regel kein Problem, nur bei Firefox und Thunderbird hat es mich manchmal gestört.

Diesem Problem hat sich das Ubuntuzilla-Projekt angenommen. Sie betreiben ein Repository für Ubuntu, das stets die aktuellen stabilien Mozilla-Builds von Firefox, Thunderbird und Seamonkey enthält. Einmal dem aktuellen System hinzugefügt, bekommt man so bequem über die Paketverwaltung die neuesten Versionen eingespielt.

Und so funktioniert es:

Ubuntuzilla-Repo der sources.list hinzufügen

echo -e "\ndeb http://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt all main" | sudo tee -a /etc/apt/sources.list > /dev/null 

Den Repository Key hinzufügen um Nachfragen des Paketmanagers zu vermeiden

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com C1289A29

Danach die gewünschten Pakete installieren

sudo apt-get update
sudo apt-get install firefox-mozilla-build
sudo apt-get install thunderbird-mozilla-build
sudo apt-get install seamonkey-mozilla-build
3Apr/100

BASH Spickzettel

Dies ist mein BASH-Spickzettel. Ich werde hier nützliche Codeschnipsel und Konstrukte sammeln, die ich ansonsten immer mal wieder googlen oder man'en musste. Der Artikel dient mir persönlich als Nachschlagewerk aber könnte auch anderen nützlich sein, die häufig mit der Bourne-again Shell zu tun haben.

Schleifen

while [ 1 ] #Endlosschleife
do
    echo "Blah"
done
for i in $(ls /etc)
do
  echo $i
done

for f in `ls | grep something`; do rm $f; done

for i in `seq 1 10`;
do
  echo $i
done

Case

case "$1" in
     a)
            echo "a"
            ;;
     b)
            echo b"

            ;;
     *)
             echo "$1 ist nicht a oder b"
             ;;
esac
Switches für Test : http://bash-hackers.org/wiki/doku.php/commands/classictest

oder

/usr/bin/[ --help

If-Then-Else

if [ "$1" = "a" ]; then
   echo "a"
else
    echo "kein a"
fi

dpkg + apt

#Installierte Files aus einem Paket auflisten
dpkg -L [Paketname]

#Files IN einem Paket auflisten
dpkg -c [paket.deb]

#Info über ein Paket
dpkg -I [paket.deb]

#Alle installierten Pakete auflisten
dpkg -l
dpkg --get-selections > getselections.txt

#Installationsauswahl aus Datei einspielen
dpkg --set-selections < getselections.txt

netstat

# Alle nach außen geöffneten Ports listen
netstat -lpn | grep LISTEN | grep -v localhost

mdadm

# Testmail senden
# Benutzt MAILADDR aus /etc/mdadm/mdadm.conf
mdadm --monitor -1 /dev/md0 -t

# Frisches Array anlegen.
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 

# Array verschlüsseln
cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/md0

# Verschlüsseltes Arrayentschlüsseln
cryptsetup luksOpen /dev/md0 raid-partition

# Device formatieren
mkfs.ext4 /dev/mapper/raid-partition

# Device Nutzen und sperren
mount /dev/mapper/raid-partition /root/tmp
umount /root/tmp/
cryptsetup luksClose /dev/mapper/lukslvm 
dmsetup remove_all

# Device dem Array hinzufügen
mdadm --add /dev/md0 /dev/sda1

# Device aus dem Array entfernen
mdadm --manage /dev/md0 --fail /dev/sda1
mdadm --remove /dev/md0 /dev/sda1

# Fehlerhafte Devices entfernen
mdadm --manage /dev/md0 --remove faulty
mdadm --manage /dev/md0 --remove failed

# Partitionstabelle sichern
sfdisk -d /dev/sda > sda.partition

# Partitionstabelle wieder einspielen
sfdisk /dev/sdb < sda.partition

# Bootloader nachinstallieren (grub legacy)
grub
grub> root (hd0,0)   /dev/null | strings

# Grub 2 unter Debian.
# Funktionierte nicht ohne Konfiguration von GRUB_TERMINAL=console
# DEBIAN BUG in SQUEEZE 
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=611537
# http://kupschke.net/2012/02/20/grub2-auf-mdadm-raid-installieren/#comment-170

In: /etc/default/grub -> GRUB_TERMINAL=console
grub-install /dev/sda
grub-install /dev/sdb
update-grub

# Festplatteninfos ausgeben
smartctl -i /dev/sdx

# RAID auf Live-CD mounten und ins System chrooten um GRUB zu installieren
# oder für andere Wartungsarbeiten

apt-get install mdadm
mdadm --assemble /dev/md0 /dev/sda (weitere Devices falls vorhanden)
mkdir /tmp/mnt
mount /dev/md0 /tmp/mnt

mount --bind /proc /tmp/mnt/proc
mount --bind /sys /tmp/mnt/sys
mount --bind /dev /tmp/mnt/dev

chroot /tmp/mnt

ext

# Disklabel setzen
e2label device label

screen

# Screens in Scripten automatisch generieren und task in screen starten
screen -S [screenname] -d -m [script.sh]

#Screen in Script für anderen User erstellen
su username - -c "screen -dmS Screenname befehl"

# Neue screen erstellen oder zu bestehender wechseln
screen -R -d [screenname]

# Keystroke zum verlassen einer Screen
CTRL - A - D

mysql

# Alle Datenbanken in eine Datei dumpen
mysqldump -u root -psecret --all-databases > backup.sql

# Nur die Datenbankstruktur in eine Datei dumpen
mysqldump -u root -psecret --no-data --all-databases > backup.sql

# Einzelne Tabelle dumpen
mysqldump -u root -psecret datenbankname tabellenname > /tmp/backup.sql

# Dump wieder herstellen
mysql -u root -psecret < backup.sql

# root Passwort resetten
/etc/init.d/mysql stop
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('neuespasswort');" >~/setrootpassword.sql
mysqld_safe --init-file=~/setrootpassword.sql
#[ctrl]+[c]
/etc/init.d/mysql start
rm -f ~/setrootpassword.sql

imagemagick

# Alle Bilder im aktuellen Verzeichnis resizen
mogrify -resize 800x600 ./*.JPG

# Alle Bilder im aktuellen Verzeichnis in PNG konvertieren
mogrify -format png ./*

# Auflösung von grossen Bildern ändern, EXIF Daten strippen, resizen, JPEG Quality setzen
mogrify -resize 350 -density 72x72 -strip - quality 80% ./*.jpg

# Serie von Bildern in ein PDF-Buch umwandeln
for i in $(ls); do convert $i $i.pdf; done
pdftk $(ls *.pdf) cat output book.pdf


unionfs-fuse

# Union zwischen a und b in c
# Geschrieben wird nach a

unionfs-fuse -o cow /home/a=RW:/home/b=RW /home/ww/Desktop/c

ffmpeg

# flv in 3gp umwandeln
ffmpeg -i in.flv -f 3gp -vcodec h263 -s 176x144 -ab 12.2k -ar 8000 -ac 1 out.3gp

# flv in mp3 umwandeln
apt-get install ffmpeg libavcodec-extra-53
ffmpeg -i ./input.flv -f mp3 output.mp3

# so ziemlich von jedem Format in jedes andere so verlustfrei wie möglich umwandeln
ffmpeg -i infile.ext -pass 2 -sameq  outfile.ext


# Watermark mittig in Video einsetzen
 ffmpeg -i ./infile.mp4  -i ./watermark.png -strict -2 -filter_complex "overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2" output.mp4

find

# Dateien suchen und etwas mit ihnen tun
find . -name "*.mp3" -exec file {} \;

# Softlinks finden und anzeigen
find . -type l  -exec ls -l {} \; 

# Alle Dateien in einem Verzeichnis zählen
find /verzeichnis -type f | wc -l

sudo

#/etc/sudoers
# User username erlauben einen privilegierten Befehl ohne Passwort auszuführen
# (Muss ganz am Ende von /etc/sudoers angehängt werden)

username      ALL=NOPASSWD:   /sbin/reboot

iptables

# Alles auf INPUT erlauben
 iptables -F; iptables -P INPUT ACCEPT

# Verbindungen debuggen
# Paketzähler einer Chain auf 0 setzen
iptables -Z INPUT

# Chain mit Paketzähler anzeigen
iptables -L INPUT -v

# Einen Port mappen
# 
# Alles was auf eth1 Port 11111 ankommt wird geforwarded auf 10.10.10.100:80
#
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 11111 -j DNAT --to 10.10.10.100:80
iptables -A FORWARD -p tcp -d 10.10.10.100 --dport 80 -j ACCEPT

#IPTABLES LOG ALL INCOMING TRAFFIC
iptables -t raw -I PREROUTING 1 -d 5.9.81.114/32 -j LOG --log-prefix "INCOMING Traffic"

# DELETE THIS RULE
iptables -t raw -D PREROUTING 1

#LOG OUTGOING TRAFFIC
iptables -t mangle -I POSTROUTING 1 -d 5.9.81.114/32 -j LOG --log-prefix "OUTGOING Traffic"

# DELETE THIS RULE
iptables -t mangle -D POSTROUTING 1

#TRACE packages
iptables -t raw -I PREROUTING 1 -p icmp -j TRACE




iptables debugging
How to List and Delete Iptables Rules

Platte verschlüsseln

#System vorbereiten
apt-get install cryptsetup
modprobe loop
modprobe dm-crypt

# Platte für AES 256 vorbereiten
cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdb

# Platte entschlüsseln (entschlüsseltes Device: /dev/mapper/cryptodisk)
cryptsetup luksOpen /dev/sdb cryptodisk

# Formatieren
mkfs.ext4 /dev/mapper/cryptodisk

# Entschlüsselt ins FS mounten
mkdir /media/cryptodisk
mount /dev/mapper/cryptodisk /media/cryptodisk

# Daten schreiben
echo "blah" > /media/cryptodisk/test

# Unmounten
umount /media/cryptodisk

# Locken
cryptsetup luksClose cryptodisk

Datei verschlüsseln

# Datei verschlüsseln
gpg -c --cipher-algo twofish ./datei

# Original löschen
shred ./datei

# Datei entschlüsseln
gpg -d ./datei.gpg > ./datei

Containerdatei verschlüsseln

#System vorbereiten
apt-get install cryptsetup
modprobe loop
modprobe dm-crypt

#Containerdatei 250MB erstellen
dd if=/dev/urandom of=container_file bs=1M count=250 

# Freies Loopdevice anfragen
losetup -f 

# Loopdevice an Containerdatei binden
losetup /dev/loop0 container_file 

# Containerdatei verschlüsseln
cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/loop0  

# Containerdatei entschlüsseln
cryptsetup luksOpen /dev/loop0 container 

# Containerdatei formatieren
mkfs.ext4 /dev/mapper/container 

# Mounten
mount -t ext4 /dev/mapper/container /mnt 

# Locken
cryptsetup luksClose container 

# Loopdevice freigeben
losetup -d /dev/loop0

FTP mounten

mkdir /tmp/mnt
modprobe fuse
curlftpfs -v ftp.host.com -o nonempty -o user=username:passwort /tmp/mnt
umount /tmp/mnt

umount "Device is busy" - Blockierenden Prozess finden

fuser -m [mountpoint]

wget Website mirrorn

wget -km http://www.website.com

SAMBA mounten

mount.cifs //192.168.0.1/share /media/share -o username=$USERNAME,password=$PASSWORD

32bit oder 64bit

getconf LONG_BIT

/etc/fstab

NFS:
192.168.0.1:/home  /home  nfs  rsize=8192,wsize=8192,hard,intr  0 0

Disk Full - Speicherfresser finden

apt-get install ncdu
ncdu

# / ohne mounts auf andere FS in /mnt mounten
# (Falls mounts Daten auf der lokalen Platte verdecken)
mount --bind / /mnt ; du -sm /mnt

Vollverschlüsselung des Systems

Sehr gutes Tutorial von Andreas Haerter:
http://blog.andreas-haerter.com/2011/06/18/ubuntu-festplattenvollverschluesselung-lvm-luks

Platte über das LAN klonen

dd if=/dev/hda | ssh -c blowfish -C root@otherbox.ip.addr dd of=/dev/hda

Aktuellen UNIX TIMESTAMP (Epoch) ausgeben

date +%s

Asterisk

#Sounddatei in von Asterisk abspielbares Format umwandeln
ffmpeg -i ./input.mp3 -ar 8000 -ac 1 -ab 64 ./output.wav

VirtualBox

#Existierende VM klonen und in VirtualBox anmelden
VBoxManage clonevm "MACHINE NAME" --mode all --name "CLONE NAME" --register

#VM Headless starten
VBoxHeadless -s "CLONE NAME"

#
# VM Headless generieren
#

#VM anlegen und registrieren
VBoxManage createvm --name "Ubuntu" --ostype Ubuntu --register

#Hardware / BIOS konfigurieren
VBoxManage modifyvm "Ubuntu" --memory 256 --acpi on --vram 128 --boot1 dvd --nic1 nat

#HDD anlegen(10GB)
VBoxManage createhd --filename "Ubuntu.vdi" --size 10000

#IDE Controller anlegen 
VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4

#HDD Image an IDE Controller hängen
VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "Ubuntu.vdi"

#Boot ISO an IDE Controller hängen
VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /home/user/my.iso

Mail in Script/Konsole verschicken

echo "Mail Body hier" | mail -s "Mail Subject hier" jemand@server.de

rsync

#Verzeichnis von entferntem Server rsyncen
rsync -avz user@10.10.10.10:/remote/dir /local/dir

vlc und dvbt

#get channel list
w_scan -ft -cDE -L >> ./channels.xspf

#start streaming server
cvlc -vvv -I http ./channels.xspf --sout '#standard{access=http,mux=ts,dst=server.ip:9999}'

#stream and transcode, enable rc telnet interface
cvlc -I rc --sout-keep --rc-host 192.168.1.2:20000 /etc/channels.xspf --sout '#transcode{vcodec=mjvp8=64,fps=24,scale=0,acodec=mpga,ab=64,chanls=2,samplerate=44100}:standard{access=http,mux=ts,dst=192.168.1.2:9999}' 


#start client
vlc http://server.ip:9999 -R

#Web Interface
#edit /usr/share/vlc/lua/http/.hosts

Browser -> http://server.ip:8080

mysql query auf einzelnen wert aus der bash

mysql -u user -pPASSWORD -D table -N -B -e "QUERY" 
31Mrz/100

Ein lustiger Windowsausflug

Ich habe mich mit der Windowstrollerei halbwegs zurückgehalten, aber mein heutiger Ausflug in die gute, alte Microsoftwelt hatte es in sich. Ich benutze seit ca. 3 Jahren privat kein Windows mehr. Wenn ich tatsächlich einmal unbedingt ein Windows-Programm gebraucht habe, habe ich es mit wine oder einem XP in VirtualBox zum laufen gebracht. Heute benötigte ich zum ersten mal wieder ein "echtes Windows", da ich eine neue Firmware auf mein Motorola Milestone flashen wollte. Das Tool dazu läuft leider nur unter nativem Windows. Da ich noch ein wenig Platz hinten auf meiner Platte hatte, machte ich mich schweren Herzens daran XP zu installieren. Ich hatte schon böse Vorahnungen. Nach der Neuinstallation liefen LAN und Grafik nicht richtig. Verständlich, hatte ein uraltes XP und die Treiber waren damals nur vom Hersteller verfügbar. Zuerst habe ich mir den LAN-Treiber mit einer anderen Kiste gesaugt - REBOOT - danach den VGA-Treiber mit meinem jetzt vernetzten XP. Installation - REBOOT - CANNOT LOAD OPERATING SYSTEM. In Ordnung. Damit hatte ich nicht gerechnet. MBR kaputt? Wodurch? Grafiktreiberinstallation? Gut, kein Problem. Habe mit der Super Grub Disk mein Ubuntu gebootet und mit update-grub das kleine Malheur bereinigt. Zurück in XP: Ich benötige von Motorola einen Treiber für die USB-Verbindung vom Handy zum PC. Nachdem ich ihn mir heruntergeladen hatte (Motorola_Phone_treiber_Blah_irgendwas.exe) habe ich beim beherzten Doppelklick noch gedacht: "Ach ja, das ist schon besser als unter Linux. *Wenn* man unter Linux Treiberprobleme hat, dann aber so richtig". Kaum zuende gedacht ein Popup: "Cannot write file. Volume not found C:\". Fuck. Da ich XP im freien Platz hinten auf meiner Platte installiert hatte (vorne ist ja bereits Ubuntu), hat Windows den Laufwerksbuchstaben H: bekommen. Der Treiber installiert sich wohl nur auf C:\. Ich habe mir winrar besorgt und die exe ausgepackt. Darin: Keine .inf nur kryptischer Installer-Mist. Danach habe ich Foren gewälzt. Angeblich bringe das "Motorola Software Update", ein Updatetool für Motorola-Software und Geräte, auch eine Treiberinstallation mit sich. Also gut. Ich installiere es. Es benötigt "Windows Installer 3.1". Den gibts über Windows Update. Ich kriege den Installer 3.1 und Windows Genuine Advantage, mein proprietäres Vorteilspaket. REBOOT. Ich versuche erneut das "Motorola Software Update" zu installieren. Diesmal fehlt .NET. Ich lade es runter, fette 66MB. Die Installation dauert ungefähr 10 Minuten. Eine freundliche Meldung währenddessen sagt: "Der Download ist abgeschlossen, Sie können die Verbindung zum Internet nun trennen" Ich komme mir vor wie auf einer Zeitreise. Die Verbindung trennen? Lol! Der Updater läuft jetzt und installiert wohl auch einige Treiber. Windows beginnt sofort ungefragt Photos von meinem Handy herunterzuladen und eine Digitalkamera wird erkannt. Der Treiber zum flashen war aber wohl leider nicht dabei. Das Tool erkennt mein Handy nach wie vor nicht. Als letzten Ausweg versuche ich den Laufwerksbuchstaben von H: auf C: zu ändern. Microsoft sagt, dass es nicht geht und dass es nicht empfohlen wird. Ich fummele in der Registry herum. REBOOT. Hübsches Windows XP Logo. Leider für 4 Minuten. Windows bootet nicht mehr. Ich werde wohl meine ganzen Partitionen nach hinten verschieben müssen und danach noch einmal Windows installieren müssen. Nur damit Windows C:\ als Laufwerksbuchstabe bekommt, um einen Treiber installieren zu können. Krank oder?

Ein Tag später. Mein Ehrgeiz wurde geweckt. Ich verkleinere, verschiebe, kopiere meine Partitionen, bis sie alle hinten auf der Platte liegen. GParted braucht 3 Stunden dafür. Ich boote mit einer Live-CD, mounte meine root-Partition, chroote in sie rein und installiere Grub neu. Ubuntu läuft wieder. Ich mache mich also daran XP nochmal zu installieren. Diesmal an den Anfang der Platte. Leider will XP die Installation am Anfang der Platte wieder auf H:\ ausführen. Es geht wohl nicht um die Reihenfolge der Partitionen auf der Platte sondern um die Reihenfolge in der Partitionstabelle. Wieder was gelernt. Ich könnte Windows auf C :\ installieren, das ist aber  eigentlich mein sda1 auf dem meine root-Partition liegt. Ich will Windows nicht mein Ubuntu killen lassen. Ich boote erneut mit der Live-CD und mache mit partimage ein Backup meiner root-Partition um es nach der XP-Installation wieder in eine neue Partition zurückspielen zu können. Ich starte mal wieder das XP Setup. Jetzt bin ich völlig verwirrt.Der freie Platz am Anfang der Platte heisst jetzt doch C:\. Warum das? Ich hatte an den Partitionen nichts mehr geändert. Ich bekomme so langsam aber sicher das Gefühl, dass ich an irgendeiner  Stelle dieser Odysee etwas hätte schlauer machen können. Ich gähne mich durch die erneute XP-Installation. Mann, warum müssen sie mitten in der Installation die Fragen stellen und nicht einfach ganz am Anfang. Man muß daneben sitzen. XP ist wieder da. Auf C:\. Ich installiere den LAN Treiber und den VGA-Treiber. REBOOT. CANNOT LOAD OPERATING SYSTEM. Na ja. Kenne ich ja schon. Vielleicht bin ich in einer Windows-Support Endlosschleife in der Hölle. REBOOT.  Also nochmal die Super Grub Disk und update-grub && grub-install. REBOOT. Zurück in XP. "Ihr Computer ist eventuell gefährdet" - da bin ich mir sicher. Ich sauge mir erneut den Motorola-USB-Treiber. Geschafft. Es funktioniert. Was für ein Krampf.

Nachtrag: Ein befreundeteter Windows-Admin hat mir erzählt, wie ich es mir viel einfacher hätte machen können: ein "subst h: c:\" hätte vor der Installation des Treibers gereicht. Ich Windows-DAU! 🙂

veröffentlicht unter: Dies und das, Linux, Ubuntu keine Kommentare