uuun de chiggiee boooob de eggggee
Vor ein paar Tagen ist mir mein NC6000 zum zweiten mal kaputt gegangen (Mainboard futsch). Da ich nicht wieder Lust hatte Geld in dieses doch schon etwas betagte Stück Technik zu investieren, ist es dann ein neues Thinkpad T400 geworden.
Die Daten brauchte ich aber trotzdem. Da ich selbst keinen entsprechenden Adapter hatte, hab ich mir von einem Freund ein Festplattenimage anlegen lassen mit dd.
dd if=/dev/sdb of=konradhdd bs=10M
Das hab ich mir dann auf meinen neuen Laptop kopiert. Nun kann man aber nicht so ohne weiteres ein komplettes Image (samt aller Partitionen) irgendwo mounten. Das Prozedere ist allerdings auch nicht fürchterlich kompliziert.
Mein Festplattenimage enthält eine NTFS Parition mit Windows XP darauf, eine Linux Boot Partition und das verschlüsselte LVM.
Zuerst brauchen wir die Offsets an denen die entsprechenden Partitionen beginnen in der Datei. Dazu eignet sich ganz hervorragend dieses Shell-Script (Script zur Ermittlung der Mountoptionen). Übergeben wird nur der Dateiname des Festplattenimages.
konrad@rumpelstilzchen:~$ ./help-mount-image.sh konradhdd konradhdd1 63 10493279 5246608+ 7 HPFS/NTFS mount -o loop,ro,offset=32256 konradhdd /mnt konradhdd2 10493280 10886399 196560 83 Linux mount -o loop,ro,offset=5372559360 konradhdd /mnt konradhdd3 10886400 58605119 23859360 5 Extended Ignoriere extended partition konradhdd5 10886463 58605119 23859328+ 83 Linux mount -o loop,ro,offset=5573869056 konradhdd /mnt
Die mount-Befehle interessieren relativ wenig. Wichtig ist das Offset. Der für mich relevante letzte Eintrag hat das Offset 5573869056. Jetzt muss die entsprechende Partition aus dem Image als Loop-Device eingebunden werden.
Zuerst muss man rausfinden, welches Loop-Device genutzt werden kann. Das geht folgendermaßen:
konrad@rumpelstilzchen:~$ sudo losetup -f /dev/loop0
Tadaa:
konrad@rumpelstilzchen:~$ sudo losetup -o 5573869056 /dev/loop0 konradhdd
An und für sich sollte man noch ein -r übergeben damit im Image nicht herumgeschrieben wird. Da ich aber weiß, dass mein Dateisystem defekt ist, hab ich das gelassen ;). Als nächstes besorgt man sich mit cryptsetup das verschlüsselte LVM.
konrad@rumpelstilzchen:~$ sudo cryptsetup luksOpen /dev/loop0 crypto Enter passphrase for /dev/loop0: dein_passwort_eingeben Key slot 0 unlocked.
Um das LVM jetzt zu aktivieren braucht man die Befehle vgscan und vgchange. Dadurch wird erst nach verfügbaren LVMs gesucht und danach werden sie aktiviert.
konrad@rumpelstilzchen:~$ sudo vgscan Reading all physical volumes. This may take a while... Found volume group "crypt" using metadata type lvm2 Found volume group "rumpelstilzchen" using metadata type lvm2 konrad@rumpelstilzchen:~$ sudo vgchange -ay 2 logical volume(s) in volume group "crypt" now active 2 logical volume(s) in volume group "rumpelstilzchen" now active
Mit:
konrad@rumpelstilzchen:~$ mkdir altesrootdateisystem konrad@rumpelstilzchen:~$ sudo mount /dev/crypt/root altesrootdateisystem/
wird jetzt ein mount Ordner erzeugt und die alte Root Partition gemountet. Die Information „crypt“ stammt aus den angaben von vgscan bzw. vgchange.
Ein:
konrad@rumpelstilzchen:~$ ls altesrootdateisystem/ bin boot cdrom dev etc home initrd.img lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var vmlinuz
offenbart jetzt das alte Dateisystem. Fertig :).