Como migrar uma instalação LVM criptografada para um novo disco

12

Eu tenho uma instalação de laptop um pouco personalizada que eu quero mover para um SSD diretamente, sem ter que reinstalar o Ubuntu, reinstalar todos os aplicativos e fazer todas as outras alterações novamente. O SSD é menor, então não posso fazer apenas dd .

A instalação original foi feita com o instalador alternativo do Ubuntu, selecionando a opção de criptografia completa do disco com o LVM.

Quais etapas são necessárias e como faço isso? Espero ter que:

  • configurar as partições de disco, criptografia, etc.
  • copie os dados em
  • instale o grub e trabalhe com novos valores UUID, etc.
por Hamish Downer 24.02.2013 / 20:22

5 respostas

11

Particionamento e cópia de arquivos - durante a execução

Eu fiz isso começando com o sistema em execução. Eu pluguei o novo SSD em um adaptador USB SATA e particionei-o, configurei o LVM e copiei os arquivos.

# 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

Agora, seu disco deve se parecer com:

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

O próximo passo é colocar a criptografia na partição e o LVM sobre a criptografia.

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

Agora crie os sistemas de arquivos, monte-os e copie seu sistema.

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/

Até este ponto, você pode manter o sistema em funcionamento e usá-lo. Agora você precisa desligar e inicializar em um CD / USB ao vivo para poder colocar o sistema em um estado de desligamento.

Particionamento e cópia de arquivos - CD / USB ao vivo

Depois de inicializar, abra um terminal e:

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/

Alterando UUIDs

Agora estamos root dentro do chroot e rodamos os seguintes comandos:

# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid
Agora você verá todos os UUIDs para os vários discos do sistema. Você precisará editar os UUIDs em /etc/fstab e /etc/crypttab para corresponder aos valores de /dev/sdc?

Em /etc/fstab você precisa usar o UUID para o disco de inicialização - /dev/sdc1 se seus discos tiverem a mesma letra que eu.

Em /etc/crypttab , você precisa usar o UUID para a outra partição (grande) - /dev/sdc5 se seus discos tiverem a mesma letra que eu.

initramfs e 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

Agora desligue, coloque o SSD dentro do seu laptop, cruze os dedos e inicialize.

Links úteis

Bom guia para o material da cryptsetup no link

Para instalar o grub em uma partição externa: link

link

    
por Hamish Downer 24.02.2013 / 20:22
2

Eu tentei comentar, mas não tenho a reputação: -)

De qualquer forma, usei com sucesso o incrível guia de Hamish para migrar para um ssd em meu laptop de trabalho com criptografia luks baseado em linux. Apenas algumas observações:
1. Depois de criar a troca, use também

# mkswap /dev/mapper/crypt-swap 

para inicializar o swap, caso contrário ele falhará durante a inicialização, conforme indicado no comentário acima.
2. O comando rsync é muito restritivo como é. Quando eu usei com --exclude run , eu corri em todos os tipos de veeeeeeery estranho geralmente invisíveis pelos erros de internet. A execução deve ser incluída . O sistema está de qualquer forma vazio ao inicializar no modo de manutenção, para que ele possa ficar. Além disso, se você excluir tmp, o recém-criado no target / tmp e / var / tmp não obterá um bit sticky - lembre-se de configurá-los por conta própria. Acabei usando algo como

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

Geral - um ótimo guia, mostra a visão geral do processo com precisão! Ensina a pescar, por assim dizer!

    
por Sims 15.01.2015 / 22:10
0

[Não foi possível colocar um comentário, apesar de este post pertencer a um comentário e não a uma resposta]

Usando esse método, você também pode mover uma instalação existente de lvm não ** criptografado para uma instalação lvm criptografada no novo disco; você só precisa dos passos adicionais (para instalar cryptsetup enquanto chroot'ed no disco de destino), como mencionado em link , especificamente:

apt-get install lvm2 cryptsetup

O comando acima também instala lvm2 no disco de destino, embora isso seja desnecessário, seria útil se você estivesse movendo um sistema não lvm para um sistema lvm no seu SSD, usando um Live CD / DVD. Note que você também precisaria copiar o /etc/resolve.conf para o seu chroot para poder executar o apt-get install com sucesso: ele é mencionado na URL mencionada acima, fragmento de código: sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

Além disso, é mais fácil fazer um cp (usando uma instalação diferente (não de dentro da instalação de origem), por exemplo, um live CD / DVD) em vez de rsync para a partição /, como descrito em Como mover o Ubuntu para um SSD

Você também deve criar uma troca usando mkswap na sua partição /dev/mapper/<swap-name-here> .

Também deve ativar o suporte a TRIM ao mesmo tempo, conforme mencionado em link

AVISO: Mais texto abaixo não é para aqueles que usam MBR, que este tópico / tópico parece pertencer. Eu achei isso útil de qualquer maneira, então estou postando para o benefício daqueles que podem adaptar as instruções deste tópico / tópico ao seu disco GPT.

E para aqueles que usam GPT em vez de MBR (usando parted / gparted e gdisk em vez de fdisk), aprendi da maneira mais difícil que sua partição / boot (que não é criptografada) não deve ser numerada após o dispositivo luks na ordem GPT . Como criei uma partição ESP depois de criar as partições de dispositivo / boot e luks usando o gparted, tive que classificar os números das partições de modo que o / boot ainda fosse numerado menos do que o dispositivo luks.

Como um aparte e não relacionado a este post estritamente falando, aqueles que usam GPT e UEFI com rEFInd, rEFInd talvez tenham problemas em apresentar uma lista de partições para inicializar se você tiver múltiplos ESPs em seu sistema, eu tenho um por disco , então, em vez de usar rEFInd, estou usando o grub, que funciona bem.

    
por user2074854 08.12.2013 / 15:25
0

Antes da seção initramfs e grub , talvez seja necessário:

vgscan
vgchange -a y
    
por Bart 10.09.2015 / 18:36
0

Um pouco atrasado, mas você precisa atualizar o arquivo /etc/initramfs-tools/conf.d/resume para refletir a modificação de troca. Sem essa modificação você vai quebrar a função de hibernação.

    
por billdangerous 21.12.2015 / 00:35