암호화 된 LVM 설치를 새 디스크로 마이그레이션하는 방법


15

다소 사용자 정의 된 랩톱 설치가 있습니다. 우분투를 다시 설치하지 않고 모든 응용 프로그램을 다시 설치하고 다른 모든 변경을 다시 수행하지 않고도 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 내부에서 루트이고 다음 명령을 실행합니다 :

# 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을 설치하는 경우 : /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk

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


방금 sys의 rsync exclude가 포함하려는 일부 디렉토리를 제외한다는 것을 발견했습니다. 좀 더 안목있는 rsync 명령을 내놓고이 답변을 업데이트 할 것입니다.
Hamish Downer

단지 훌륭한 알림 :이 훌륭한 답변에 대한 업데이트를 약속했습니다 :-)
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에서 올바른 커널을 찾으면 모든 것이 작동하지 않습니다.
Blindfreddy

나는 당신의 "달리면서"가이드를 따르고, 약간의 조정 (ext4)을했고 지금까지 훌륭하게 작동했습니다. 새 파티션으로 부팅하기 위해 fstab UUID에서 루트 및 스왑에 대한 마운트 지점도 변경했습니다. fstab 이외의 다른 사항으로 변경해야합니까? 나는 지금 부팅을 시도 할 것이다 : D
Luka

luksOpen을 수행 할 때 crypttab에 사용 된 것과 동일한 레이블을 지정해야합니다. 그렇지 않으면 그럽 설정이 제대로 작동하지 않습니다. 그것을 알아 내기 위해 영원히 나를 데려 갔다. 또 다른 대답은 바인딩 / run / lvm을 언급합니다. 그것이 필요한지 모른다. 디버깅을 위해 USB 디스크를 연습하고 kvm으로 부팅하여 시간을 절약 할 수 있습니다.
Dan Stahlke

3

나는 논평하려고 노력했지만 명성이 부족하다 :-)

어쨌든, 나는 Linux 기반 luks 암호화 작업 랩톱의 SSD로 마이그레이션하기 위해 Hamish의 놀라운 가이드를 성공적으로 사용했습니다. 몇 가지주의 사항 :
1. 스왑 lv를 만든 후에도

# mkswap /dev/mapper/crypt-swap 

스왑을 초기화하려면 그렇지 않으면 위의 설명에 표시된 것처럼 부팅 중에 실패합니다.
2. rsync명령이 너무 제한적입니다. 와 함께 사용했을 때 --exclude run인터넷 오류로 일반적으로 보이지 않는 모든 종류의 veeeeeeery가 발생했습니다. 실행이 포함되어야 합니다. 유지 관리 모드로 부팅 할 때 시스템이 비어 있으므로 계속 유지할 수 있습니다. 또한 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를 설치하지만, 불필요하지만 Live CD / DVD를 사용하여 비 lvm 시스템을 SSD의 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 장치보다 번호가 작도록 파티션 번호를 정렬해야했습니다.

rEFInd와 함께 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.