Particionamiento y copia de archivos - mientras se ejecuta
Lo hice comenzando con el sistema en ejecución. Conecté el nuevo SSD a un adaptador USB SATA y lo particioné, configuré LVM y copié los archivos.
# 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
Su disco ahora debería verse así:
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
El siguiente paso es colocar el cifrado en la partición y LVM encima del cifrado.
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
Ahora cree los sistemas de archivos, móntelos y copie su 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/
Hasta este punto, puede mantener el sistema en funcionamiento y usarlo. Ahora necesita apagar e iniciar en un CD / USB en vivo para que pueda hacer que el sistema se apague.
Particionamiento y copia de archivos - CD / USB en vivo
Una vez que haya arrancado, abra una terminal y:
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/
Cambio de UUID
Ahora somos root dentro del chroot y ejecutamos los siguientes comandos:
# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid
Ahora verá todos los UUID para los distintos discos del sistema. Deberá editar los UUID /etc/fstab
y /etc/crypttab
hacer coincidir los valores de/dev/sdc?
En /etc/fstab
lo que necesita utilizar el UUID para el disco de arranque - /dev/sdc1
si los discos tienen la misma letra que yo.
En /etc/crypttab
lo que necesita utilizar el UUID para el otro (grande) de particiones - /dev/sdc5
si los discos tienen la misma letra que yo.
initramfs y 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
Ahora apague, coloque el SSD dentro de su computadora portátil, cruce los dedos y arranque.
Enlaces útiles
Buena guía para las cosas de cryptsetup en http://www.debian-administration.org/articles/577
Para instalar grub en una partición externa: /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk
https://help.ubuntu.com/community/UsingUUID
sudo mount -t proc proc /mnt/sdcroot/proc
sudo mount -t sysfs sys /mnt/sdcroot/sys
sudo mount -o bind /dev /mnt/sdcroot/dev
antemano hacer:sudo mkdir /mnt/sdcroot/proc
sudo mkdir /mnt/sdcroot/sys
--- En mi caso, el comando para crear initramfs no funcionó, porque las versiones del kernel no coincidían y por lo tanto initramfs no podía encontré el kernel correcto en / boot, por lo que no pude hacer que todo funcionara.Traté de comentar, pero me falta la reputación :-)
De todos modos, utilicé con éxito la increíble guía de Hamish para migrar a un ssd en mi computadora portátil de trabajo encriptada con luks basada en Linux. Solo algunas observaciones:
1. Después de crear el intercambio, lv también usa
para inicializar el intercambio, de lo contrario falla durante el arranque, como se indica en el comentario anterior.
2. El
rsync
comando es demasiado restrictivo como es. Cuando lo usé con--exclude run
, me encontré con todo tipo de muuuuuuuuuuuuuuuuuuuuy extraño en general, no visto por los errores de Internet. La carrera tiene que ser incluida . El sistema está vacío de todos modos cuando se inicia en modo de mantenimiento, por lo que puede permanecer. Además, si excluye tmp, los recién creados en el destino / tmp y / var / tmp no se ponen un poco pegajosos; recuerde configurarlos usted mismo. Terminé usando algo comoEn general, una gran guía, muestra la descripción del proceso con precisión ¡Te enseña a pescar, por así decirlo!
fuente
[No se pudo incluir un comentario, aunque esta publicación pertenece a un comentario y no a una respuesta]
Con este método, también podría mover una instalación lvm ** no ** cifrada existente a una instalación lvm cifrada en el nuevo disco; solo necesita los pasos adicionales (para instalar cryptsetup mientras está chrooteado en el disco de destino), como se menciona en http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm -luks , específicamente:
El comando anterior también instala lvm2 en el disco de destino, aunque eso es innecesario, hubiera sido útil si estuviera moviendo un sistema que no sea lvm a un sistema lvm en su SSD, utilizando un Live CD / DVD. Tenga en cuenta que también necesitaría copiar sobre /etc/resolve.conf en su chroot para que pueda ejecutar apt-get install con éxito: se menciona en la URL mencionada anteriormente, fragmento de código:
sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf
Además, es más fácil hacer un cp (usando una instalación diferente (no desde dentro de la instalación de origen que es), por ejemplo, un CD / DVD en vivo) en lugar de rsync para la partición /, como se describe en Cómo mover Ubuntu a un SSD
Quizás también deba crear un intercambio utilizando
mkswap
su/dev/mapper/<swap-name-here>
partición.También debe habilitar el soporte TRIM al mismo tiempo, como se menciona en http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html
ADVERTENCIA: El texto adicional a continuación no es para aquellos que usan MBR, a lo que parece pertenecer este tema / hilo. Encontré esto útil de todos modos, así que estoy publicando para el beneficio de aquellos que pueden adaptar las instrucciones en este hilo / tema a su disco GPT.
Y para aquellos que usan GPT en lugar de MBR (usando parted / gparted y gdisk en lugar de fdisk), aprendí por las malas que su partición / boot (que no está encriptada) no debe numerarse después de su dispositivo luks en el orden GPT. Debido a que había creado una partición ESP después de crear las particiones / boot y luks usando gparted, tuve que ordenar los números de partición para que / boot aún tuviera un número menor que el dispositivo luks.
Como comentario aparte y no relacionado con esta publicación estrictamente hablando, aquellos que usan GPT y UEFI con rEFInd, rEFInd tal vez tengan problemas para presentarle una lista de particiones para arrancar si tiene múltiples ESP en su sistema, tengo uno por disco, así que en su lugar de usar rEFInd, estoy usando grub, que funciona bien.
fuente
Antes de la sección initramfs y grub, es posible que deba:
fuente
Un poco tarde, pero debe actualizar el archivo /etc/initramfs-tools/conf.d/resume para reflejar la modificación del intercambio. Sin esta modificación, romperá la función de hibernación.
fuente