web-dev-qa-db-ja.com

暗号化されていない完全ディスク暗号化システムを新しいディスクに複製する

基本的に、私は this answerに従って、フルディスク暗号化を使用するシステムの暗号化されていないコンテンツを、ライブスティックから新しい(より小さな)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

まず、gpartedを使用して/dev/sda1/dev/sda2/dev/sdc{1,2}にコピーしましたが、動作しているように見えました(どちらもマウント可能)。次に、/dev/sdc3に暗号化されたEXT4のコンテンツを保持するのに十分な大きさの新しいEXT4パーティションを作成し、/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 GiBかそこらで終了します。

その時点から、何かが失敗したようです。 /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/sdawith全体のサイズを変更してからクローンを作成する場合、暗号化が非常に簡単になります。暗号化せずにクローンを作成することで、暗号化されたサイズ変更の面倒を回避できるということでした...)

2
phg

全体が思ったよりも簡単であることがわかりました。 @ 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. /mnt/new-root/etc/fstabのfstabを編集して、新しいディスク上のパーティションのUUIDを含めます(gpartedから取得できます)

そして驚くべきことに、それがすべてです。再起動すると、新しいディスクからすべてを以前と同じように起動できます(暗号化なしで高速)。

1
phg