web-dev-qa-db-fra.com

Comment migrer une installation LVM cryptée sur un nouveau disque

J'ai une installation d'ordinateur portable quelque peu personnalisée que je veux passer directement à un disque SSD, sans avoir à réinstaller Ubuntu, à réinstaller toutes les applications et à effectuer toutes les autres modifications. Le SSD est plus petit, je ne peux donc pas simplement faire dd.

L'installation d'origine a été effectuée avec le programme d'installation alternatif Ubuntu, en sélectionnant l'option de chiffrement de disque complet avec LVM.

Quelles étapes sont nécessaires et comment je les fais? Je m'attends à devoir:

  • configurer les partitions de disque, le chiffrement, etc.
  • copier les données sur
  • installez grub et faites-le fonctionner avec les nouvelles valeurs UUID, etc.
14
Hamish Downer

Partitionnement et copie de fichiers - en cours d'exécution

Je l'ai fait en commençant par le système en cours d'exécution. J'ai branché le nouveau disque SSD sur un adaptateur USB SATA et je l'ai partitionné, configuré LVM et copié les fichiers.

# 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

Votre disque devrait maintenant ressembler à:

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

L'étape suivante consiste à placer le chiffrement sur la partition et LVM au-dessus du chiffrement.

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

Créez maintenant les systèmes de fichiers, montez-les et copiez votre système.

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/

Jusqu'à présent, vous pouvez garder le système en marche et l'utiliser. Vous devez maintenant arrêter et démarrer un CD/USB en direct pour que le système soit à l'arrêt.

Partitionnement et copie de fichiers - Live CD/USB

Une fois que vous avez démarré, ouvrez un terminal et:

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/

Changer d'UUID

Maintenant, nous sommes dans le chroot et lançons les commandes suivantes:

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

Maintenant, vous verrez tous les ID pour les différents disques du système. Vous devrez éditer les UUID dans /etc/fstab et /etc/crypttab pour qu'ils correspondent aux valeurs de /dev/sdc?.

Dans /etc/fstab, vous devez utiliser l'UUID du disque de démarrage - /dev/sdc1 si vos disques ont la même lettre que moi.

Dans /etc/crypttab, vous devez utiliser l'UUID pour l'autre (grande) partition - /dev/sdc5 si vos disques ont la même lettre que moi.

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

Maintenant, à l’arrêt, placez le disque SSD dans votre ordinateur portable, croisez les doigts et démarrez.

Liens utiles

Bon guide pour les problèmes de cryptsetup sur http://www.debian-administration.org/articles/577

Pour installer grub sur une partition externe: https://stackoverflow.com/questions/247030/how-to-set-up-grub-in-a-cloned-hard-disk

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

14
Hamish Downer

J'ai essayé de commenter, mais il me manque la réputation :-)

Quoi qu'il en soit, j'ai utilisé avec succès l'incroyable guide de Hamish pour migrer en ssd sur mon ordinateur portable de travail basé sur Linux chiffré en luks. Juste quelques remarques:
1. Après avoir créé le swap, utilisez aussi

# mkswap /dev/mapper/crypt-swap 

pour initialiser le swap, sinon il échouera au démarrage, comme indiqué dans le commentaire ci-dessus.
2. La commande rsync est trop restrictive. Quand je l'ai utilisé avec --exclude run, j'ai rencontré toutes sortes de veeeeeeery étranges généralement ignorés par les erreurs Internet. La course doit être incluse. Le système est de toute façon vide lors du démarrage en mode maintenance, il peut donc rester. De même, si vous excluez tmp, les nouveaux objets créés sur target/tmp et/var/tmp n'ont pas d'objet persistant. N'oubliez pas de les définir vous-même. J'ai fini par utiliser quelque chose comme

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

Globalement - un excellent guide, montre la vue d'ensemble du processus avec précision! Vous apprend à pêcher, pour ainsi dire!

2
Sims

[Impossible de mettre un commentaire, bien que ce message appartienne à un commentaire plutôt qu'à une réponse]

En utilisant cette méthode, vous pouvez également déplacer une installation existante ** non-** cryptée de LVM vers une installation cryptée de LVM sur le nouveau disque; vous avez juste besoin des étapes supplémentaires (pour installer cryptsetup en mode chrooté sur le disque cible), comme indiqué à l'adresse http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk -encryption-lvm-luks , plus précisément:

apt-get install lvm2 cryptsetup

La commande ci-dessus installe également LVM2 sur le disque cible, bien que cela soit inutile, il aurait été utile de déplacer un système autre que LVM sur un système LVM de votre SSD, à l'aide d'un Live CD/DVD. Notez que vous devrez également copier le fichier /etc/resolve.conf sur votre chroot pour pouvoir exécuter apt-get install avec succès: il est mentionné à l’URL mentionnée ci-dessus, fragment de code: Sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

En outre, il est plus facile de faire un cp (en utilisant une installation différente (pas à partir de l'installation source), par exemple un CD/DVD live) au lieu de rsync pour la partition /, comme décrit à la section Comment déplacer Ubuntu sur un SSD

Vous devriez peut-être aussi créer un swap en utilisant mkswap sur votre partition /dev/mapper/<swap-name-here>.

Devrait également activer le support TRIM en même temps, comme indiqué à l’adresse http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html

AVERTISSEMENT: le texte ci-dessous ne concerne pas les utilisateurs de MBR auxquels ce sujet/fil de discussion semble appartenir. J'ai trouvé cela utile quand même, alors je poste pour le bénéfice de ceux qui peuvent adapter les instructions de ce fil/sujet à leur disque GPT.

Et pour ceux qui utilisent GPT au lieu de MBR (en utilisant parted/gparted et gdisk au lieu de fdisk), j’ai appris de façon difficile que votre partition/boot (non chiffrée) ne devait pas être numérotée après votre périphérique luks dans l’ordre GPT. Comme j'avais créé une partition ESP après avoir créé gparted avec les partitions/boot et luks device, j'ai dû trier les numéros de partition de sorte que le/boot soit toujours numéroté moins que le périphérique luks.

En aparté et sans lien avec ce post à proprement parler, ceux qui utilisent GPT et UEFI avec rEFInd, rEFInd a peut-être des problèmes pour vous présenter une liste de partitions à démarrer si vous avez plusieurs ESP dans votre système. J'en ai donc un par disque. d’utiliser rEFInd, j’utilise grub, qui fonctionne très bien.

0
user2074854

Avant la section initramfs et grub vous devrez peut-être:

vgscan
vgchange -a y
0
Ajeden

Un peu tard, mais vous devez mettre à jour le fichier /etc/initramfs-tools/conf.d/resume pour refléter la modification de l’échange. Sans cette modification, vous interrompez la fonction de veille prolongée.

0
billdangerous