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


15

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

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

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

  • ディスクパーティション、暗号化などを設定します
  • データをコピーします
  • grubをインストールして、新しいUUID値などで動作するようにします。

回答:


14

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

これは、実行中のシステムから始めて行いました。新しい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

これで、システム内のさまざまなディスクのすべてのUUIDが表示されます。あなたにはUUIDを編集する必要があります/etc/fstab/etc/crypttabの値に一致するように/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


sysのrsync excludeが、私が含めたいいくつかのディレクトリを除外したことを発見しました。より識別力のあるrsyncコマンドを考え出し、この答えを更新します。
ハミッシュダウナー

ただのリマインダー:この素晴らしい答えの更新を約束しました:
guntbert

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事前に行いますsudo mkdir /mnt/sdcroot/proc sudo mkdir /mnt/sdcroot/sys---カーネルのバージョンが一致してのinitramfsができなかったのでしなかったので、私の場合、initramfsのを作成するためのコマンドは、仕事しませんでした/ bootで適切なカーネルを見つけるので、すべてを動作させることができませんでした。
ブラインドフレディ14

「実行中」のガイドに従い、いくつかの調整(ext4)を行ったところ、これまでのところうまくいきました。新しいパーティションにブートするためにfstab UUIDを変更し、ルートとスワップのマウントポイントも変更しました。fstab以外に変更が必要なものはありますか?今すぐ起動してみます:D
ルカ

luksOpenを実行するときは、crypttabで使用されているラベルと同じラベルを割り当ててください。そうしないと、grubのセットアップが正しく機能しません。それを理解するために永遠に私を連れて行った。もう1つの答えは、/ run / lvmのバインドです。それが必要かどうかわからない。デバッグのために、USBディスクで練習し、kvmで起動することで時間を節約できます。
ダンStahlke

3

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

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

# mkswap /dev/mapper/crypt-swap 

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

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

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


0

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

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

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

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

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

セクションinitramfsおよびgrubの前に次のことが必要になる場合があります。

vgscan
vgchange -a y

0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.