Клонирование незашифрованной системы с полным диском на новый диск

По сути, я следую этому ответу, чтобы клонировать незашифрованный контент системы с полным дисковым шифрованием на новый (меньший) SSD из живого флешки. Я думал, что это будет состоять из отображения зашифрованных разделов, а затем обычный dd, но нет...

Это задействованные разделы / устройства:

/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

Для начала я просто скопировал /dev/sda1 а также /dev/sda2 в /dev/sdc{1,2} используя gparted, который, кажется, работает (оба монтируются). Затем я создал новый достаточно большой раздел EXT4 для хранения содержимого зашифрованного EXT4 на /dev/sdc3и новый обмен на оставшееся место на /dev/sdc4,

Я тогда расшифровал /dev/sda3 с

sudo cryptsetup luksOpen /dev/sda3 crypt1

и скопировал его содержимое, используя

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

(где /dev/mapper/ubuntu--vg-root содержит оригинальный корневой раздел и может быть правильно смонтирован). Это заканчивается после 19 ГиБ или около того, которые фактически используются в зашифрованном разделе.

С этого момента, кажется, что-то не получилось; Я не могу смонтировать /dev/sdc3 потом, как кажется, сломан.

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

И это то, что предложено dmesg | tail произведено:

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

Я на самом деле не так много знаю о разбиении, но я полагаю, что это не просто копирование незашифрованного содержимого - возможно, это несовместимо со старой таблицей разделов? Кажется, что-то связано с неправильным размером. Может быть, мне нужно сначала изменить размер зашифрованного материала?

Итак, я могу как-то это исправить? Или, что я должен сделать альтернативно, чтобы добиться того же самого - по сути клонировать зашифрованный корень EXT4 на SSD и получить загрузочную незашифрованную копию старой системы? (Если изменить размер, а затем клонировать весь /dev/sda с шифрованием оказывается значительно проще, я тоже мог это сделать; Мое первоначальное предположение состояло в том, что клонирование в незашифрованном виде поможет мне преодолеть все зашифрованные проблемы с изменением размера...)

1 ответ

Решение

Оказывается, все проще, чем я думал. По мотивам комментариев @Xen2050 я смог просто rsync вся система на новой установке:

  1. Загрузиться с живой палкой
  2. Установите новую Ubuntu на новый диск (используя отдельный загрузочный раздел EFI)
  3. Смонтируйте новый корневой раздел Ubuntu в /mnt/new-root
  4. Расшифровать старую систему через cryptsetup luksOpen /dev/sdXY crypt1
  5. Смонтировать старый корневой раздел mount /dev/mapper/ubuntu--vg-root /mnt/old-root
  6. Скопируйте все: rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/old-root /mnt/new-root
  7. Отредактируйте fstab в /mnt/new-root/etc/fstab содержать UUID разделов на новом диске (можно получить через gparted)

И что удивительно, вот и все. Перезапустите, и вы сможете загрузиться с нового диска, со всем тем же, что и раньше (только без шифрования и быстрее).

Другие вопросы по тегам