Pour l’essentiel, je suis this answer pour cloner le contenu non chiffré d’un système avec chiffrement intégral du disque sur un nouveau disque SSD (plus petit), à partir d’une clé USB. Je pensais que cela consisterait simplement à mapper les partitions chiffrées, puis l'habituel dd
, mais non ...
Ce sont les partitions/périphériques impliqués:
/dev/sda: Old disc, with encrypted partition
/dev/sda1: FAT32 with boot flag
/dev/sda2: EXT2, containing some EFI and grub stuff
/dev/sda3: LUKS partition I want to clone (about 460 GiB);
contains a swap and an ecrypted EXT4 with about 20 GiB used
/dev/sdc: New SSD
Pour commencer, j'ai simplement copié /dev/sda1
et /dev/sda2
dans /dev/sdc{1,2}
à l'aide de gparted, qui semblait fonctionner (les deux pouvant être montés). Ensuite, j'ai créé une nouvelle partition EXT4 suffisamment grande pour contenir le contenu de l’extension EXT4 chiffrée sur /dev/sdc3
, ainsi qu’un nouvel échange sur l’espace restant sur /dev/sdc4
.
J'ai ensuite déchiffré /dev/sda3
avec
Sudo cryptsetup luksOpen /dev/sda3 crypt1
et copié sur son contenu, en utilisant
Sudo dd if=/dev/mapper/ubuntu--vg-root of=/dev/sdc3
(où /dev/mapper/ubuntu--vg-root
contient la partition racine d'origine et peut être monté correctement). Cela se termine après les 19 GiB qui sont actuellement utilisés sur la partition chiffrée.
A partir de là, quelque chose semble avoir échoué; Je ne peux pas monter /dev/sdc3
après, car il semble cassé.
ubuntu@ubuntu:~$ Sudo mount /dev/sdc3 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdc3,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
ubuntu@ubuntu:~$ Sudo fsck /dev/sdc3
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
Error reading block 60325888 (Invalid argument). Ignore error<y>? yes
Force rewrite<y>? yes
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** ext3 journal has been deleted - filesystem is now ext2 only ***
Superblock has_journal flag is clear, but a journal inode is present.
Clear<y>? yes
The filesystem size (according to the superblock) is 120880128 blocks
The physical size of the device is 14848000 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
Error writing block 60325888 (Invalid argument). Ignore error<y>? yes
/dev/sdc3: ***** FILE SYSTEM WAS MODIFIED *****
Et voici ce que le dmesg | tail
suggéré a produit:
[ 51.575179] EXT4-fs (sdc2): mounting ext2 file system using the ext4 subsystem
[ 51.580102] EXT4-fs (sdc3): bad geometry: block count 120880128 exceeds size of device (14848000 blocks)
[ 51.582477] EXT4-fs (sdc2): warning: mounting unchecked fs, running e2fsck is recommended
[ 51.587740] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)
[ 51.633994] FAT-fs (sdc1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 107.969122] EXT4-fs (sdc3): bad geometry: block count 120880128 exceeds size of device (14848000 blocks)
En fait, je ne connais pas grand-chose au partitionnement, mais je suppose que cela ne me plait pas de copier simplement le contenu non chiffré - cela est peut-être incompatible avec l'ancienne table de partition? Il semble y avoir quelque chose de mal dimensionné. Peut-être dois-je d'abord redimensionner le contenu crypté?
Alors, puis-je en quelque sorte résoudre ce problème? Ou, que dois-je faire alternativement pour obtenir la même chose - essentiellement cloner la racine EXT4 cryptée sur le SSD et obtenir une copie amorçable, non cryptée de l'ancien système? (Si redimensionner puis cloner la totalité de /dev/sda
avec le cryptage s'avère être beaucoup plus facile, je pourrais le faire aussi; mon hypothèse initiale était-ce que le clonage non crypté me ferait faire le tour de tout ce qui était encrypté-redimensionnant-déchirant ...)
Il s'avère que tout est plus facile que je ne le pensais. Motivé par les commentaires de @ Xen2050, je pouvais essentiellement rsync
tout le système sur une nouvelle installation:
/mnt/new-root
cryptsetup luksOpen /dev/sdXY crypt1
mount /dev/mapper/ubuntu--vg-root /mnt/old-root
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/old-root /mnt/new-root
/mnt/new-root/etc/fstab
pour contenir les UUID des partitions sur le nouveau disque (peut être obtenu via gparted
)Et étonnamment, c'est tout. Redémarrez, et vous pouvez démarrer à partir du nouveau disque, avec tout comme avant (tout simplement sans cryptage et plus rapide).