Backup encrypted Ubuntu Linux harddisk

Some days ago, I switched from Ubuntu to Fedora 11. Before overwriting my old system I of course backed up the old one. What I did was simply a

dd if=/dev/sda of=/mnt/somedisk/mybackup.img

The tricky part now is to get access to your old data when you used „Full disk encryption“ for the old system. Here is what I had to do:


losetup /dev/loop1 /mnt/somedisk/mybackup.img
kpartx -a -v /dev/loop1
cryptsetup luksOpen /dev/loop1p1 foobar
lvchange -a y "/dev/oldhostname/root"
mkdir /mnt/oldsys
mount /dev/mapper/your_old_root /mnt/oldsys

If you can’t find the name of your old lv, use lvscan.

Backup Script mit DAR

Vor einiger Zeit habe ich ein kleines Backup Script geschrieben, welches sich des schönen Programmes DAR bedient.

Das Script ist so gedacht, dass ganze Verzeichnisse in .dar Dateien zusammengefasst und verschlüsselt werden. Diese werden zuerst in einem lokalen Verzeichnis zwischengespeichert und nach der Fertigstellung auf einen FTP-Server hochgeladen. Nach erfolgreichem Transfer wird die lokale Datei gelöscht.

Ab dem zweiten Durchlauf, also Start des Scripts, werden „differentielle“ Backups erstellt. Anhand des vorher angelegten „Catalogues“, welcher, im Gegensatz zur eigentlichen Backup Datei, noch lokal im Dateisystem belassen wird, ensteht eine neue Backup Datei die nur noch die Unterschiede zur Vorherigen enthält.

#!/bin/bash
 
KEY="foobar"
DIRS="/etc /home/bjoern"
BACKUP_DIR="/backup/ftp-raw"
BACKUP_TEMP="/backup/temp"
BACKUP_CATALOGUES="/backup/catalogues"
DATE_STRING=`date +"%Y-%m-%d-%H-%M"`
 
FTP_USER="foo"
FTP_PASS="bar"
FTP_IP="123.123.123.123"
 
date
 
if ! test -e $BACKUP_DIR;then
    mkdir -p $BACKUP_DIR
fi
 
if ! test -e $BACKUP_TEMP;then
    mkdir -p $BACKUP_TEMP
fi
 
if ! test -e $BACKUP_CATALOGUES;then
    mkdir -p $BACKUP_CATALOGUES
fi
 
for i in $DIRS
do
    echo "Backing up $i"
    NAME=`echo $i | sed -s "s/\//_/g"`
    LATEST=`ls $BACKUP_CATALOGUES/*.1.dar 2>/dev/null | grep $NAME | tail -n1| sed -s "s/\.1\.dar//"`
    if [[ $LATEST ]];then
        NAME_NEW="$NAME-$DATE_STRING-diff"
        echo "Latest was $LATEST"
        dar -K bf:$KEY -R $i -c $BACKUP_TEMP/$NAME_NEW -A $LATEST -X *.log
        if [[ $? -eq 0 || $? -eq 11 ]];then
            echo "Backup of $i done."
        else
            echo "Backup failed."
            continue
        fi
        dar -J bf:$KEY -C $BACKUP_CATALOGUES/$NAME_NEW-catalogue -A $BACKUP_TEMP/$NAME_NEW
        if [[ $? -eq 0 || $? -eq 11 ]];then
            echo "Catalogue created."
        else
            continue
            echo "Catalogue failed."
        fi
        lftp ftp://$FTP_USER:$FTP_PASS@$FTP_IP/ -e "put $BACKUP_TEMP/$NAME_NEW.1.dar;exit"
        if [[ $? -eq 0 ]];then
            rm -f $BACKUP_TEMP/$NAME_NEW.1.dar
        fi
    else
        NAME_NEW="$NAME-$DATE_STRING"
        echo "No previous backup found"
        dar -K bf:$KEY -R $i -c $BACKUP_TEMP/$NAME_NEW -X *.log
        if [[ $? -eq 0 || $? -eq 11 ]];then
            echo "Backup of $i done."
        else
            echo "Backup failed."
            continue
        fi
        dar -J bf:$KEY -C $BACKUP_CATALOGUES/$NAME_NEW-catalogue -A $BACKUP_TEMP/$NAME_NEW
        if [[ $? -eq 0 || $? -eq 11 ]];then
            echo "Catalogue created."
        else
            continue
            echo "Catalogue failed."
        fi
        lftp ftp://$FTP_USER:$FTP_PASS@$FTP_IP/ -e "put $BACKUP_TEMP/$NAME_NEW.1.dar;exit"
        if [[ $? -eq 0 ]];then
            rm -f $BACKUP_TEMP/$NAME_NEW.1.dar
        fi
    fi
done

Unzuverlässigkeit von USB-Sticks

Gerade wollte ich Windows XP auf einer virtuellen Maschine installieren. Leider kam ich nicht weit, die Installation brach ziemlich am Anfang ab. Ich dachte mir, checkst du mal die Prüfsummen der ISOs, da sich die Datei auf dem Weg zur virtuellen Maschine mal auf einem USB-Stick befand:

4862c1f220df3bbc89fd00ce9db32d42 winxp_pro.iso
f18f2999d15d93e5e50a4c6d064b4527 /home/bjoern/winxp_pro.iso

Jetzt weiss ich auch warum letztens die Installation von Ubuntu vom Stick fehlgeschlagen ist ….

Crosscompiler mit Crosstool erstellen (Bugfix)

Im Rahmen eines Projektes wo eine ausführbare Datei für eine AIX-Maschine (Powerpc Architektur) erstellt werden soll kam ich zu Crosstool von Dan Kegel. Dieses Script baut eine komplette Entwicklungsumgebung (gcc, glibc usw.) auf indem es die entsprechenden Pakete runterlädt und übersetzt.

Leider scheint crosstool nicht mehr weiterentwickelt zu werden weshalb es noch auf gcc-4.1.0 und, viel tragischer, glibc-2.3.6 verwendet. Beim erstellen dieser glibc kommt es zum Abbruch des Ãœbersetzungs-vorgangs:

In file included from version.c:33:
/home/bjoern/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/build-glibc/csu/version-info.h:2:1: missing terminating " character
/home/bjoern/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/build-glibc/csu/version-info.h:3:1: missing terminating " character
make[2]: *** [/home/skorpio/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/build-glibc/csu/version.o] Error 1
make[2]: Leaving directory `/home/skorpio/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory `/home/bjoern/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6'
make: *** [lib] Error 2

Um diesen Bug zu „umgehen“ kann man folgenden weg wählen. Man lässt crosstool einmal bis zu dieser Stelle laufen. Dann befindet sich im bei crosstool eingstellten Download Verzeichnis

glibc-2.3.6.tar.bz2

Diese muss nun entpackt werden

tar -xvjf glibc-2.3.6.tar.bz2

Nun muss in

glibc-2.3.6/csu/Makefile

die Zeile 244 geändert werden in

echo „\“Available extensions:\““; \

Jetzt wird das alte glibc Paket gelöscht und das neue, „gefixte“ geschnürt

rm glibc-2.3.6.tar.bz2
tar -cjf glibc-2.3.6.tar.bz2 glibc-2.3.6/

Das war’s. Jetzt sollte crosstool einwandfrei durchlaufen.

Mikrokopter Projekt – Tagebuch

  • Donnerstag, 26.7.
    Die Superflux-LEDs sind heute gekommen 🙂
    MK_LEDs
  • Freitag, 20.7.
    So, lange Zeit ists her, aber nun mal wieder ein paar Zeilen zu diesem Projekt.
    Mein Mikrokopter fliegt inzwischen und hat auch schon seinen zweiten Rahmen und einen neuen Satz Motoren, welche leiser und auch noch billiger sind, bekommen. Vielleicht schreibe ich hier demnächst mal die genauen Daten meines Ufos auf, so lange kann man aber schonmal die Bilder in der Galerie betrachten.
  • Sonntag, 20.5.
    Inzwischen sind Propeller und Fernsteuerung da und es fehlen im Grunde nur noch die Flight-Ctrl Platine und ein Akku, dann kanns losgehen 🙂 Hier ein Bild vom aktuellen Status:

    MK halbfertig thumb
  • Mittwoch, 9.5.
    Reichelt Bestellung ist angekommen. Der defekte Regler funktioniert nun wieder, es war „nur“ der Mikrocontroller hinüber. Jetzt habe ich auch noch eine BL Regler Ersatzplatine für alle Fälle.
  • Dienstag, 8.5.
    Heute angekommen:

    • Gyros
    • Beschleunigungssensor
    • BL-Regler Ersatzplatine
    • die restlichen drei Motoren
    • der Empfänger

    Lipoly hat den Versand des Akkus + Ladegerät bestätigt, die Propeller werden nachgeliefert. Das Paket von Reichelt sollte morgen da sein.

  • Montag, 7.5.
    Defekten Mikrocontroller ausgelötet, warte auf Ersatz

    Brushless Regler Thumbnail
  • Sonntag, 6.5.
    Beim „neugierigen“ durchmessen der Regler einen Regler (bzw. den Mikrokontroller) gefraggt 🙁 Schonmal eine neue Reglerplatine bestellt. Sollte ich die alte nochmal zum Leben erwecken können habe ich eine als Ersatz(teillager).
  • Freitag, 4.5.
    Einen Brushless Motor Robbe Roxxy 2824-34 bei Conrad bekommen. Restlichen Regler aufgebaut, alle vier liessen sich programmieren und funktionierten. Diverse Bestellungen aufgegeben; 3 Gyros, Beschleunigungssensor und Empfänger bei mikrocontroller.com. LiPo, Ladegerät und Propeller bei lipoly.de. Die restlichen drei Motoren bei ebay ….
  • Donnerstag, 3.5.
    Brushless Regler und Reichelt Bestellung angekommen, erster Regler aufgebaut, funktioniert.

http://www.mikrokopter.com