Clonagem de sistema criptografado em disco completo de forma não criptografada em um novo disco

1

Essencialmente, estou seguindo esta resposta para clonar o conteúdo não criptografado de um sistema com criptografia de disco completo para um novo (menor) SSD, a partir de um stick ao vivo. Eu pensei que consistiria apenas em mapear as partições criptografadas, e então o usual dd , mas não ...

Estas são as partições / dispositivos envolvidos:

/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

Para começar, eu simplesmente copiei /dev/sda1 e /dev/sda2 para /dev/sdc{1,2} usando gparted, o que pareceu funcionar (ambos montáveis). Em seguida, criei uma partição EXT4 nova com tamanho suficiente para conter o conteúdo do EXT4 criptografado em /dev/sdc3 e uma nova troca no espaço restante em /dev/sdc4 .

Em seguida, descriptografei /dev/sda3 com

sudo cryptsetup luksOpen /dev/sda3 crypt1

e copiado sobre o seu conteúdo, usando

sudo dd if=/dev/mapper/ubuntu--vg-root of=/dev/sdc3

(onde /dev/mapper/ubuntu--vg-root contém a partição raiz original e pode ser corretamente montado). Isso termina após os 19 GiB ou mais que estão realmente em uso na partição criptografada.

A partir desse ponto, algo parece ter falhado; Não consigo montar /dev/sdc3 , pois parece estar quebrado.

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 *****

E é isso que o dmesg | tail sugerido produziu:

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

Na verdade, eu não sei muito sobre particionamento, mas suponho que ele não goste de simplesmente copiar o conteúdo não criptografado - talvez isso seja incompatível com a antiga tabela de partições? Parece estar envolvido algo com um tamanho errado. Talvez eu precise redimensionar as coisas criptografadas primeiro?

Então, posso consertar isso de alguma forma? Ou, o que devo fazer alternativamente para obter a mesma coisa - essencialmente clonar a raiz EXT4 criptografada no SSD e obter uma cópia inicializável e não criptografada do sistema antigo? (Se redimensionar e depois clonar toda a criptografia /dev/sda com for significativamente mais fácil, eu também poderia fazer isso; minha suposição original era que clonar sem criptografia me ajudaria a criptografar tudo redimensionamento-hassle ...)

    
por phg 11.02.2016 / 15:36

1 resposta

1

Acontece que a coisa toda é mais fácil do que eu pensava. Motivado pelos comentários do @ Xen2050, consegui basicamente rsync todo o sistema em uma nova instalação:

  1. Inicialize com um stick ao vivo
  2. Instale um novo Ubuntu no novo disco (usando uma partição de inicialização separada)
  3. Monte a nova partição raiz do Ubuntu em /mnt/new-root
  4. Descriptografe o sistema antigo por meio de cryptsetup luksOpen /dev/sdXY crypt1
  5. Monte a antiga partição raiz por mount /dev/mapper/ubuntu--vg-root /mnt/old-root
  6. Copie tudo : rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/old-root /mnt/new-root
  7. Edite o fstab em /mnt/new-root/etc/fstab para conter os UUIDs das partições no novo disco (pode ser obtido via gparted )

E, surpreendentemente, isso é tudo. Reinicie, e você pode inicializar a partir do novo disco, com tudo o mesmo que antes (apenas sem criptografia e mais rápido).

    
por phg 16.02.2016 / 16:25