Comment migrer une installation LVM chiffrée vers un nouveau disque


15

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

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

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

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

Réponses:


14

Partitionnement et copie de fichiers - pendant l'exécution

Je l'ai fait en commençant par le système en cours d'exécution. J'ai branché le nouveau SSD dans un adaptateur USB SATA et 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 à mettre 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

Maintenant, créez 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'à ce point, vous pouvez maintenir le système en marche et l'utiliser. Vous devez maintenant arrêter et démarrer sur un CD / USB en direct afin que vous puissiez mettre le système dans un état d'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/

Modification des UUID

Maintenant, nous sommes root dans le chroot et exécutons les commandes suivantes:

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

Vous verrez maintenant tous les UUID des différents disques du système. Vous devrez modifier les UUID dans /etc/fstabet /etc/crypttabfaire correspondre les valeurs de/dev/sdc?

En /etc/fstabvous devez utiliser l'UUID pour le disque de démarrage - /dev/sdc1si vos disques ont la même lettre que moi.

Dans, /etc/crypttabvous devez utiliser l'UUID pour l'autre (grande) partition - /dev/sdc5si 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, arrêtez, placez le SSD dans votre ordinateur portable, croisez les doigts et démarrez.

Liens utiles

Bon guide pour les trucs cryptsetup sur http://www.debian-administration.org/articles/577

Pour installer grub sur une partition externe: /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk

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


Je viens de découvrir que rsync exclude de sys a exclu certains répertoires que je voulais inclure. Je proposerai une commande rsync plus exigeante et mettrai à jour cette réponse.
Hamish Downer

Juste un rappel: vous avez promis une mise à jour pour cette excellente réponse :-)
guntbert

Dans la section chroot, avant le montage, je devais créer les points de montage: sudo mount -t proc proc /mnt/sdcroot/proc sudo mount -t sysfs sys /mnt/sdcroot/sys sudo mount -o bind /dev /mnt/sdcroot/devau préalable faire: sudo mkdir /mnt/sdcroot/proc sudo mkdir /mnt/sdcroot/sys--- Dans mon cas, la commande pour créer les initramfs ne fonctionnait pas, car les versions du noyau ne correspondaient pas et donc initramfs ne pouvait pas trouver le bon noyau dans / boot, donc je n'ai pas pu faire fonctionner le tout.
Blindfreddy

J'ai suivi votre guide "pendant la course", fait quelques ajustements (ext4) et jusqu'à présent, cela a fonctionné à merveille. J'ai changé dans fstab UUID pour le démarrage vers la nouvelle partition. J'ai également changé les points de montage pour root et swap. Y a-t-il autre chose que fstab nécessaire pour changer? Je vais essayer de démarrer maintenant: D
Luka

Lorsque vous faites luksOpen, assurez-vous d'attribuer la même étiquette que celle utilisée dans crypttab ou la configuration de grub ne fonctionnera pas correctement. Cela m'a pris une éternité pour comprendre cela. Une autre réponse mentionne la liaison / run / lvm. Je ne sais pas si c'est nécessaire. Pour le débogage, vous pouvez gagner du temps en vous entraînant sur un disque USB et en essayant de le démarrer avec kvm.
Dan Stahlke

3

J'ai essayé de commenter, mais je manque de réputation :-)

Quoi qu'il en soit, j'ai utilisé avec succès le guide étonnant de Hamish pour migrer vers un SSD sur mon ordinateur portable de travail crypté luks sous Linux. Quelques remarques:
1. Après avoir créé le swap lv, utilisez également

# mkswap /dev/mapper/crypt-swap 

pour initialiser le swap, sinon il échoue au démarrage, comme indiqué dans le commentaire ci-dessus.
2. La rsynccommande est trop restrictive. Lorsque je l'ai utilisé avec --exclude run, j'ai rencontré toutes sortes de veeeeeeery étranges généralement invisibles par les erreurs Internet. La course doit être incluse . Le sys est de toute façon vide lors du démarrage en mode maintenance, il peut donc rester. De plus, si vous excluez tmp, les nouvellement créés sur la cible / tmp et / var / tmp ne sont pas collants - n'oubliez pas de les régler 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/

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


0

[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 lvm cryptée ** non ** existante vers une installation lvm cryptée sur le nouveau disque; vous avez juste besoin des étapes supplémentaires (pour installer cryptsetup tout en étant chrooté sur le disque cible), comme mentionné sur http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm -luks , en particulier:

apt-get install lvm2 cryptsetup

La commande ci-dessus installe également lvm2 sur le disque cible, bien que ce ne soit pas nécessaire, cela aurait été utile si vous déplaciez un système non lvm vers un système lvm sur votre SSD, en utilisant un Live CD / DVD. Notez que vous devrez également copier le fichier /etc/resolve.conf sur votre chroot pour que vous puissiez exécuter l'installation d'apt-get 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 qui est), par exemple, un CD / DVD live) au lieu de rsync pour la partition /, comme décrit dans Comment déplacer Ubuntu vers un SSD

Vous devriez aussi peut-être créer un swap à l'aide mkswapde votre /dev/mapper/<swap-name-here>partition.

Devrait également activer la prise en charge de TRIM en même temps, comme indiqué sur http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html

AVERTISSEMENT: le texte ci-dessous n'est pas destiné à ceux qui utilisent MBR, auquel ce sujet / thread semble appartenir. J'ai trouvé cela utile de toute façon, alors je poste au profit 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 à la dure que votre partition / boot (qui n'est pas chiffrée) ne devrait pas être numérotée après votre appareil luks dans l'ordre GPT. Parce que j'avais créé une partition ESP après avoir créé les partitions de périphérique / boot et luks à l'aide de gparted, j'ai ensuite dû trier les numéros de partition afin que / boot soit toujours moins numéroté que le périphérique luks.

En passant 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 à partir de laquelle démarrer si vous avez plusieurs ESP dans votre système, j'en ai une par disque, donc à la place d'utiliser rEFInd, j'utilise grub, qui fonctionne très bien.


0

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

vgscan
vgchange -a y

0

Un peu tard, mais vous devez mettre à jour le fichier /etc/initramfs-tools/conf.d/resume pour refléter la modification du swap. Sans cette modification, vous romprez la fonction d'hibernation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.