web-dev-qa-db-fra.com

Clonage de système sans cryptage sur un nouveau disque

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

2
phg

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:

  1. Botte avec un bâton vivant
  2. Installer une nouvelle Ubuntu sur le nouveau disque (en utilisant une partition de démarrage efi séparée)
  3. Montez la nouvelle partition racine d'Ubuntu sur /mnt/new-root
  4. Décrypter l'ancien système via cryptsetup luksOpen /dev/sdXY crypt1
  5. Montez l'ancienne partition racine avec mount /dev/mapper/ubuntu--vg-root /mnt/old-root
  6. Copier tout : rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/old-root /mnt/new-root
  7. Editez le fstab dans /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).

1
phg