====== Verschlüsseltes Debian (LVM+cryptsetup) auf größere Festplatte umziehen ======
===== Einleitung =====
Wenn man sich einen neuen PC anschafft, ist es noch lange nicht nötig, sein Linux-System neu aufzusetzen. Die meiste Hardware wird vom Kernel beim Start erkannt und mit korrektem Treiber angesteuert. Nicht benötigte oder neu benötgte Treiber können als Paket installiert oder gelöscht werden. Ein Umkopieren des Systems geht einfach mit einem [[comp:linux:deblive|Live-USB-Stick]]. Einfach die alte Festplatte mit einem SATA2USB-Adapter an den neuen Rechner anschließen und mit dd kopieren:
# dd if=/dev/sdc of=/dev/sda
sda ist normalerweise die erste interene Festplatte. sdb ist der Live-Usbstick, sdc die zugesteckte alte Platte. Achtung, die alte Platte NICHT MOUNTEN! Wird byteweise hart kopiert. Bitte mit fdisk -l checken, ob die Laufwerksbezeichnungen stimmen (anhand der Größen zum Beispiel) sonst ZERSTÖRT dd OHNE RÜCKFRAGE DIE ORIGINALDATEN!
Die neue Festplatte MUSS größer als die alte sein. Erstmal den neuen Rechenr booten und gucken obs läuft. Tipp: Ein Altsystem ist möglicherweise als Legacy-Boot (BIOS) aufgesetzt, was mit einem "UEFI-BIOS" (Uefi Boot) nicht funktioniert. Dazu im "BIOS" den Boot Modus auf Legacy umschalten und schon sollte es gehen. Außerdem muss der SATA-Laufwerksmodus des SATA-Controllers, zum Beispiel AHCI, von Quell- und Zielsystem übereinstimmen. Dann sollte es laufen! Startet die GUI nicht, erstmal per STRG+ALT+F1 auf die Shell wechseln und einen anderen Loginmanager, zum Beispiel lightdm statt gdm installieren. So, neue Treiber drauf, alte runter, alles läuft... Und wie nun den nicht verwendeten freien Platz nutzen?
===== Eine schwierige Aufgabe... =====
Ein verschlüsseltes LVM mit einer erweiterten Partition drin, oder doch eine Partition mit einem verschlüsselten LVM drin, oder etwa ein normales LVM mit einer verschlüsselten Partition? Da kann man gerne sein Glück mit folgenden Anleitungen versuchen, das root- Dateisystem zu vergrößern, geht alles nicht! Aber Probieren geht über studieren. Das Problem ist, entweder erst den Cryptocontainer, dann das LVM darn, dann das Dateisystem darin größer machen, oder eben, je nach dem was was einschließt, in einer anderen Reihenfolge. Dazu müssen auch die LVM und CryptSetup-Tools richtig benutzt werden, ich hatte da keinen Erfolg:
* https://help.ubuntu.com/community/ResizeEncryptedPartitions (21.11.17)
* http://rabexc.org/posts/resizing-filesystem (19.11.17)
* https://serverfault.com/questions/394902/resizing-a-luks-encrypted-volume (19.11.17)
* https://unix.stackexchange.com/questions/41091/how-can-i-shrink-a-luks-partition-what-does-cryptsetup-resize-do (19.11.17)
===== ...außer man weiß, wie's geht =====
Hier die Befehle:
**VORHER EIN BACKUP MACHEN! STEHT AUCH IN DER BEFEHLSLISTE, PLATTE MIT dd SICHERN! PARAMETER NICHT VERWECHSELN, SONST PASSIERT DAS GEGENTEIL VON EINEM BACKUP!** :!:
user@debian:~$ su
Password:
root@debian:/home/user# gparted
bash: gparted: command not found
root@debian:/home/user# apt install gparted
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libparted-fs-resize0
Suggested packages:
xfsprogs reiserfsprogs reiser4progs jfsutils mtools kpartx dmraid gpart
libparted-dev
The following NEW packages will be installed:
gparted libparted-fs-resize0
0 upgraded, 2 newly installed, 0 to remove and 148 not upgraded.
Need to get 1,985 kB of archives.
After this operation, 7,231 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://deb.debian.org/debian stretch/main amd64 libparted-fs-resize0 amd64 3.2-17 [200 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 gparted amd64 0.25.0-1+b1 [1,785 kB]
Fetched 1,985 kB in 0s (3,993 kB/s)
Selecting previously unselected package libparted-fs-resize0:amd64.
(Reading database ... 175688 files and directories currently installed.)
Preparing to unpack .../libparted-fs-resize0_3.2-17_amd64.deb ...
Unpacking libparted-fs-resize0:amd64 (3.2-17) ...
Selecting previously unselected package gparted.
Preparing to unpack .../gparted_0.25.0-1+b1_amd64.deb ...
Unpacking gparted (0.25.0-1+b1) ...
Setting up libparted-fs-resize0:amd64 (3.2-17) ...
Processing triggers for mime-support (3.60) ...
Processing triggers for desktop-file-utils (0.23-1) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Processing triggers for gnome-menus (3.13.3-9) ...
Setting up gparted (0.25.0-1+b1) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...
root@debian:/home/user# gparted
Created symlink /run/systemd/system/-.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-medium.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-overlay.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-rootfs-filesystem.squashfs.mount → /dev/null.
Created symlink /run/systemd/system/run-user-1000.mount → /dev/null.
Created symlink /run/systemd/system/tmp.mount → /dev/null.
Gtk-Message: Failed to load module "canberra-gtk-module"
======================
libparted : 3.2
======================
Removed /run/systemd/system/-.mount.
Removed /run/systemd/system/lib-live-mount-medium.mount.
Removed /run/systemd/system/lib-live-mount-overlay.mount.
Removed /run/systemd/system/lib-live-mount-rootfs-filesystem.squashfs.mount.
Removed /run/systemd/system/run-user-1000.mount.
Removed /run/systemd/system/tmp.mount.
root@debian:/home/user# gparted
Created symlink /run/systemd/system/-.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-medium.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-overlay.mount → /dev/null.
Created symlink /run/systemd/system/lib-live-mount-rootfs-filesystem.squashfs.mount → /dev/null.
Created symlink /run/systemd/system/run-user-1000.mount → /dev/null.
Created symlink /run/systemd/system/tmp.mount → /dev/null.
Gtk-Message: Failed to load module "canberra-gtk-module"
======================
libparted : 3.2
======================
Removed /run/systemd/system/-.mount.
Removed /run/systemd/system/lib-live-mount-medium.mount.
Removed /run/systemd/system/lib-live-mount-overlay.mount.
Removed /run/systemd/system/lib-live-mount-rootfs-filesystem.squashfs.mount.
Removed /run/systemd/system/run-user-1000.mount.
Removed /run/systemd/system/tmp.mount.
root@debian:/home/user# cryptsetup -y -v luksFormat /dev/sda3
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Command successful.
root@debian:/home/user# cryptsetup luksOpen /dev/sda3 home
Enter passphrase for /dev/sda3:
root@debian:/home/user# mkfs.ext4 /dev/mapper/home
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 33209088 4k blocks and 8306688 inodes
Filesystem UUID: 5483ee4b-0568-41e5-8b9b-9dd8866057f8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done
root@debian:/home/user# cryptsetup luksOpen /dev/sda5 root
Enter passphrase for /dev/sda5:
root@debian:/home/user# cd /mnt
root@debian:/mnt# mkdir root
root@debian:/mnt# mkdir home
root@debian:/mnt# mount /dev/mapper/home /mnt/home
root@debian:/mnt# mount /dev/mapper/root /mnt/root
mount: unknown filesystem type 'LVM2_member'
root@debian:/mnt# cryptsetup luksClose root
root@debian:/mnt# cryptsetup luksClose root
Device root is not active.
root@debian:/mnt# cd /dev/mapper
root@debian:/dev/mapper# ls
control home luks-3cfe03bf-5bdd-4128-a8ad-88dd2d253484
root@debian:/dev/mapper# cryptsetup luksClose luks-3cfe03bf-5bdd-4128-a8ad-88dd2d253484
root@debian:/dev/mapper# apt install lvm2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
dmeventd libdevmapper-event1.02.1 liblvm2app2.2 liblvm2cmd2.02 libreadline5
Suggested packages:
thin-provisioning-tools
The following NEW packages will be installed:
dmeventd libdevmapper-event1.02.1 liblvm2app2.2 liblvm2cmd2.02 libreadline5
lvm2
0 upgraded, 6 newly installed, 0 to remove and 148 not upgraded.
Need to get 2,390 kB of archives.
After this operation, 6,247 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://deb.debian.org/debian stretch/main amd64 libdevmapper-event1.02.1 amd64 2:1.02.137-2 [41.6 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 liblvm2cmd2.02 amd64 2.02.168-2 [683 kB]
Get:3 http://deb.debian.org/debian stretch/main amd64 dmeventd amd64 2:1.02.137-2 [59.5 kB]
Get:4 http://deb.debian.org/debian stretch/main amd64 liblvm2app2.2 amd64 2.02.168-2 [554 kB]
Get:5 http://deb.debian.org/debian stretch/main amd64 libreadline5 amd64 5.2+dfsg-3+b1 [119 kB]
Get:6 http://deb.debian.org/debian stretch/main amd64 lvm2 amd64 2.02.168-2 [933 kB]
Fetched 2,390 kB in 0s (5,237 kB/s)
Selecting previously unselected package libdevmapper-event1.02.1:amd64.
(Reading database ... 175863 files and directories currently installed.)
Preparing to unpack .../0-libdevmapper-event1.02.1_2%3a1.02.137-2_amd64.deb ...
Unpacking libdevmapper-event1.02.1:amd64 (2:1.02.137-2) ...
Selecting previously unselected package liblvm2cmd2.02:amd64.
Preparing to unpack .../1-liblvm2cmd2.02_2.02.168-2_amd64.deb ...
Unpacking liblvm2cmd2.02:amd64 (2.02.168-2) ...
Selecting previously unselected package dmeventd.
Preparing to unpack .../2-dmeventd_2%3a1.02.137-2_amd64.deb ...
Unpacking dmeventd (2:1.02.137-2) ...
Selecting previously unselected package liblvm2app2.2:amd64.
Preparing to unpack .../3-liblvm2app2.2_2.02.168-2_amd64.deb ...
Unpacking liblvm2app2.2:amd64 (2.02.168-2) ...
Selecting previously unselected package libreadline5:amd64.
Preparing to unpack .../4-libreadline5_5.2+dfsg-3+b1_amd64.deb ...
Unpacking libreadline5:amd64 (5.2+dfsg-3+b1) ...
Selecting previously unselected package lvm2.
Preparing to unpack .../5-lvm2_2.02.168-2_amd64.deb ...
Unpacking lvm2 (2.02.168-2) ...
Setting up libdevmapper-event1.02.1:amd64 (2:1.02.137-2) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for systemd (232-25+deb9u1) ...
Setting up liblvm2app2.2:amd64 (2.02.168-2) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up libreadline5:amd64 (5.2+dfsg-3+b1) ...
Setting up liblvm2cmd2.02:amd64 (2.02.168-2) ...
Setting up dmeventd (2:1.02.137-2) ...
Created symlink /etc/systemd/system/sockets.target.wants/dm-event.socket → /lib/systemd/system/dm-event.socket.
/usr/sbin/policy-rc.d returned 101, not running 'start dm-event.socket'
Setting up lvm2 (2.02.168-2) ...
invoke-rc.d: policy-rc.d denied execution of start.
I: update-initramfs is disabled (live system is running on read-only media).
invoke-rc.d: policy-rc.d denied execution of start.
invoke-rc.d: policy-rc.d denied execution of start.
Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-lvmetad.socket → /lib/systemd/system/lvm2-lvmetad.socket.
Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket → /lib/systemd/system/lvm2-lvmpolld.socket.
Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-monitor.service → /lib/systemd/system/lvm2-monitor.service.
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for systemd (232-25+deb9u1) ...
root@debian:/dev/mapper# cd /media/user/afcc1640-05f6-48c3-bb4a-601936c298b7/
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7# ls -hal
total 252K
drwxr-xr-x 24 root root 4.0K Nov 19 02:49 .
drwxr-x---+ 3 root root 60 Dec 9 14:55 ..
drwxr-xr-x 2 root root 4.0K Nov 8 00:51 bin
drwxr-xr-x 2 root root 4.0K Aug 5 2013 boot
drwxr-xr-x 3 root root 4.0K Aug 5 2013 dev
drwxr-xr-x 193 root root 12K Dec 9 00:46 etc
drwxr-xr-x 3 root root 4.0K Jun 20 2016 home
lrwxrwxrwx 1 root root 29 Nov 8 06:23 initrd.img -> boot/initrd.img-4.9.0-4-amd64
lrwxrwxrwx 1 root root 30 Nov 8 06:23 initrd.img.old -> boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx 2 root root 4.0K Jul 28 2016 keybase
drwxr-xr-x 21 root root 4.0K Nov 8 08:41 lib
drwxr-xr-x 2 root root 4.0K Nov 7 23:28 lib64
drwx------ 2 root root 16K Aug 5 2013 lost+found
drwxr-xr-x 4 root root 4.0K Apr 27 2017 media
drwxr-xr-x 3 root root 4.0K Mar 1 2016 mnt
drwxr-xr-x 39 root root 4.0K Nov 18 01:58 opt
drwxr-xr-x 2 root root 4.0K Jun 2 2013 proc
drwx------ 2 root root 4.0K May 27 2015 .pulse
-rw------- 1 root root 256 Aug 5 2013 .pulse-cookie
drwx------ 24 root root 4.0K Dec 8 13:27 root
drwxr-xr-x 2 root root 4.0K Aug 5 2013 run
drwxr-xr-x 2 root root 12K Nov 8 08:41 sbin
drwxr-xr-x 2 root root 4.0K Aug 5 2013 srv
drwxr-xr-x 2 root root 4.0K Feb 8 2013 sys
drwxrwxrwt 11 root root 128K Dec 9 00:46 tmp
drwxr-xr-x 11 root root 4.0K Nov 8 08:39 usr
drwxr-xr-x 10 root root 4.0K Nov 8 06:23 var
lrwxrwxrwx 1 root root 26 Nov 8 06:23 vmlinuz -> boot/vmlinuz-4.9.0-4-amd64
lrwxrwxrwx 1 root root 27 Nov 8 06:23 vmlinuz.old -> boot/vmlinuz-3.16.0-4-amd64
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7# nano etc/crypttab
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7# nano etc/fstab
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7# nano etc/crypttab
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7# cd home/
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7/home# ls -hal
total 20K
drwxr-xr-x 3 root root 4.0K Jun 20 2016 .
drwxr-xr-x 24 root root 4.0K Nov 19 02:49 ..
drwxr-x--- 133 user user 12K Dec 9 00:34 rk
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7/home# mv rk /mnt/home/
root@debian:/media/user/afcc1640-05f6-48c3-bb4a-601936c298b7/home#
fdisk -l
cryptsetup luksOpen /dev/sdc backup
apt install cryptsetup
apt update
apt install cryptsetup
cd /media/user/rkbd1/
ls -hal
df -h
rm rkCSD-Laptop*
df -h
fdisk -l
dd if=/dev/sda of=/media/user/rkbd1/rkCSD-Laptop_sda_2017-12-09.img
gparted
apt install gparted
gparted
gparted
cryptsetup -y -v luksFormat /dev/sda3
cryptsetup luksOpen /dev/sda3 home
mkfs.ext4 /dev/mapper/home
cryptsetup luksOpen /dev/sda5 root
cd /mnt
mkdir root
mkdir home
mount /dev/mapper/home /mnt/home
mount /dev/mapper/root /mnt/root
cryptsetup luksClose root
cryptsetup luksClose root
cd /dev/mapper
ls
cryptsetup luksClose luks-3cfe03bf-5bdd-4128-a8ad-88dd2d253484
apt install lvm2
cd /media/user/afcc1640-05f6-48c3-bb4a-601936c298b7/
ls -hal
nano etc/crypttab
nano etc/fstab
nano etc/crypttab
cd home/
ls -hal
mv rk /mnt/home/
cd /root/
nano .bash_history
FIXME Befehle räume ich noch auf, aber das wichtige kann man sich ja raussuchen ;-) Wichtig ist, erst mit gparted ne neue Partition erstellen, dann verschlüsseln, ext4 da rein, crypttab auf dem rootfilesystem (gemounted) bearbeiten, die blkid (=Befehl) der neuen Partition da rein, und fstab anpassen. Dann alles mounten und Home-Dir auf die neue Partion schieben, alles unmounten, alles uncryptopenen, neu booten, beten, fertig! 8-)