====== 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-)