web-dev-qa-db-ja.com

暗号化されたLVMインストールを新しいディスクに移行する方法

Ubuntuを再インストールし、すべてのアプリを再インストールして、他のすべての変更を再度行う必要なく、SSDに直接移動したい、多少カスタマイズされたラップトップインストールがあります。 SSDは小さいため、ddを実行することはできません。

元のインストールは、Ubuntu代替インストーラーを使用して行われ、LVMオプションを使用した完全なディスク暗号化が選択されました。

必要な手順とその方法を教えてください。私がしなければならないことを期待しています:

  • ディスクパーティション、暗号化などを設定します
  • データをコピーします
  • grubをインストールし、新しいUUID値などで動作させる.
14
Hamish Downer

パーティション分割とファイルコピー-実行中

これは、実行中のシステムから始めて行いました。新しいSSDをUSB SATAアダプターに接続してパーティションを作成し、LVMをセットアップしてファイルをコピーしました。

# confirm disk size is as expected for sdc
Sudo fdisk -l /dev/sdc
# now partition - 500 MB partition as boot, the rest as a single (logical) partition
Sudo cfdisk /dev/sdc

ディスクは次のようになります。

Sudo fdisk -l /dev/sdc
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63      979964      489951   83  Linux
/dev/sda2          979965   234441647   116730841+   5  Extended
/dev/sda5          980028   234441647   116730810   82  Linux swap / Solaris

次のステップでは、暗号化をパーティションに、LVMを暗号化の上に配置します。

Sudo cryptsetup -y luksFormat /dev/sdc5
Sudo cryptsetup luksOpen /dev/sdc5 crypt
Sudo vgcreate crypt-lvm /dev/mapper/crypt
Sudo lvcreate -L4G -nswap crypt-lvm
Sudo lvcreate -l100%FREE -nroot crypt-lvm

ファイルシステムを作成してマウントし、システムをコピーします。

Sudo mkfs.ext2 /dev/sdc1
# you do ls /dev/mapper to check the name if different
Sudo mkfs.ext4 /dev/mapper/crypt-root
Sudo mkdir /mnt/boot
Sudo mkdir /mnt/root
Sudo mount -t ext2 /dev/sdc1 /mnt/boot
Sudo mount -t ext4 /dev/mapper/crypt-root /mnt/root

# rsync files
Sudo rsync -a /boot/* /mnt/boot/
Sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /* /mnt/root/

この時点まで、システムを実行したまま使用できます。次に、システムをシャットダウン状態にできるように、シャットダウンしてライブCD/USBを起動する必要があります。

パーティショニングとファイルコピー-ライブCD/USB

起動したら、ターミナルを開いて次の操作を行います。

Sudo apt-get install lvm2

# mount old hard drive
Sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
Sudo mkdir /mnt/sdaroot
# you can do ls /dev/mapper to check the name if it is different
Sudo mount -t ext4 /dev/mapper/sda5_crypt--root /mnt/sdaroot

# mount new hard drive (over USB)
Sudo cryptsetup luksOpen /dev/sdc5 sdc5_crypt
Sudo mkdir /mnt/sdcroot
Sudo mount -t ext4 /dev/mapper/sdc5_crypt--root /mnt/sdcroot

# final rsync
Sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /mnt/sdaroot/* /mnt/sdcroot/

chroot

# prepare chroot
cd /mnt/sdcroot
Sudo mkdir boot

# these directories are set up by the system and we need them inside the chroot
Sudo mount -t proc proc /mnt/sdcroot/proc
Sudo mount -t sysfs sys /mnt/sdcroot/sys
Sudo mount -o bind /dev /mnt/sdcroot/dev

# now enter the chroot
Sudo chroot /mnt/root/

UUIDの変更

これで、chroot内でrootになり、次のコマンドを実行します。

# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid

これで、システム内のさまざまなディスクのすべての ID が表示されます。 /etc/fstab/etc/crypttabのUUIDを編集して、/dev/sdc?の値と一致させる必要があります。

/etc/fstabでは、ブートディスクにUUIDを使用する必要があります-ディスクに私と同じ文字がある場合は/dev/sdc1

/etc/crypttabでは、他の(大きな)パーティションにUUIDを使用する必要があります-ディスクに私と同じ文字がある場合は/dev/sdc5.

initramfsとgrub

# now update initramfs for all installed kernels
update-initramfs -u -k all

# install grub and ensure it is up to date
grub-install /dev/sdc      # NOTE sdc NOT sdc1
update-grub

# hit Ctrl-D to exit chroot
Sudo umount /mnt/root

シャットダウンして、ラップトップにSSDを入れ、指を交差させて起動します。

便利なリンク

http://www.debian-administration.org/articles/577 のcryptsetupスタッフの良いガイド

外部パーティションにgrubをインストールする場合: https://stackoverflow.com/questions/247030/how-to-set-up-grub-in-a-cloned-hard-disk

https://help.ubuntu.com/community/UsingUUID

14
Hamish Downer

私はコメントしようとしましたが、評判がありません:-)

とにかく、Linuxベースのluksで暗号化された仕事用ラップトップのssdに移行するためにHamishのすばらしいガイドをうまく使用しました。ほんの少しのコメント:
1。スワップLVを作成した後も使用します

# mkswap /dev/mapper/crypt-swap 

上記のコメントに示されているように、起動中にスワップを初期化します。
2。 rsyncコマンドは、制限が強すぎます。 --exclude runで使用したとき、一般的にインターネットエラーでは見られない、あらゆる種類の奇妙な奇妙なものに遭遇しました。 実行を含める必要があります。とにかく、システムはメンテナンスモードで起動するときに空なので、そのままでかまいません。また、tmpを除外する場合、ターゲット/ tmpおよび/ var/tmpに新しく作成されたものはスティッキービットを取得しません-それらを自分で設定することを忘れないでください。私は次のようなものを使用することになりました

# rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude boot /mnt/sdaroot/* /mnt/sdcroot/

全体-優れたガイドであり、プロセスの概要を正確に示しています!と言うことで、釣りの仕方を教えてくれます!

2
Sims

[この投稿は回答ではなくコメントに属しますが、コメントを投稿できませんでした]

この方法を使用すると、既存の**非**暗号化されたlvmインストールを新しいディスク上の暗号化されたlvmインストールに移動することもできます。 http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-diskに記載されているように、追加の手順が必要です(ターゲットディスクにchrootされた状態でcryptsetupをインストールするため) -encryption-lvm-luks 、具体的には:

apt-get install lvm2 cryptsetup

上記のコマンドは、ターゲットディスクにlvm2もインストールしますが、それは不要ですが、ライブCD/DVDを使用してSSD上のlvmシステムに非lvmシステムを移動する場合に役立ちます。また、apt-get installを正常に実行できるように、/ etc/resolve.confをchrootにコピーする必要があることに注意してください。上記のURLで説明されているように、コードフラグメント:Sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

また、 移動方法)で説明されているように、/パーティションのrsyncの代わりにcp(ソースCDからではなく)を使用する方が簡単です(ライブCD/DVDなど)。 UbuntuからSSD

おそらく、/dev/mapper/<swap-name-here>パーティションでmkswapを使用してスワップを作成する必要があります。

http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html に記載されているように、TRIMサポートも同時に有効にする必要があります。

警告:以下の追加テキストは、このトピック/スレッドが関係していると思われるMBRを使用している人向けではありません。とにかくこれが便利だとわかったので、このスレッド/トピックの指示をGPTディスクに適応させることができる人のために投稿しています。

また、MBRの代わりにGPTを使用する(fdiskの代わりにparted/gpartedおよびgdiskを使用する)場合、luksデバイスの後にGPT順序で/ bootパーティション(暗号化されていない)に番号を付けないという難しい方法を学びました。 gpartedを使用して/ bootおよびluksデバイスパーティションを作成した後にESPパーティションを作成したため、/ bootがluksデバイスよりも小さい番号になるようにパーティション番号をソートする必要がありました。

余談ですが、厳密に言えば、GPTとUEFIをrEFIndで使用している場合、rEFIndには、システムに複数のESPがある場合、ブートするパーティションのリストを表示する際に問題が発生する可能性があります。 rEFIndを使用する場合、grubを使用していますが、これは正常に機能します。

0
user2074854

セクションの前にinitramfs and grubする必要があるかもしれません:

vgscan
vgchange -a y
0
Ajeden

少し遅れましたが、スワップの変更を反映するために/etc/initramfs-tools/conf.d/resumeファイルを更新する必要があります。この変更を行わないと、休止状態機能が中断されます。

0
billdangerous