¿Cómo migrar Window$ 10 desde un disco rígido a un SSD usando Ubuntu?

¡Trabajadores!

Nunca hemos de cejar en usar Software Libre, pues es esta una lucha que hemos de dar para vencer y hacer grande a la Patria.


La oligarquía plantea el uso de Software Privativo, y bajo esa bandera de ignominia, presenta un sistema operativo encadenados bajo el oprobio de una Acuerdo de Licencia de Usuario Final, que nos impide copiar, modificar, alterar o redistribuir el software. Un programa de estas características no sólo es inútil, sino completamente dañino para la humanidad. No contempla la Justicia Social ni respeta a la Comunidad Organizada.

Pero el Justicialismo nunca ha sido sectario ni dogmático. Si bien debemos abstenernos de utilizar tales sistemas operativos, bien podremos usar Software Libre para ayudar en nuestra Comunidad a quien necesita usarlo. Esto es así pues el software libre está ampliamente capacitado para satisfacer todo tipo de necesidades informáticas.

En este caso en particular me han preguntado cómo puedo migrar una instalación de Window$ 10 provista en un disco de 1TB instalado ya en una computadora portátil hacia un SSD de 250GB, a fin de aumentar la velocidad de ejecución de tal portátil.

Esto que parece sencillo en realidad no lo es tanto. Sería muy simple si contásemos con disco destino de la misma capacidad que el disco de origen, pues en tal caso podría hacerse un "clonado"espejo" entre ellos con HDD Clone o Clonezilla. Sin embargo, un disco SSD de 1 TB escapa a las posibilidades presupuestarias de la masa trabajadora. Por tal motivo habremos de ingeniarnos para clonar sólo lo necesario del disco origen de 1 TB (que cuenta de fábrica con múltiples particiones, C: y D:, mas varias particiones de sistema), a un disco de estado sólido (SSD) de 250GB.

Como requerimiento sine qua non hemos de saber que sólo clonar las particiones "a lo vikingo" tampoco sirve: se hace necesario clonar también la tabla de partición del disco imprescindiblemente para que el sistema operativo pueda arrancar. Esta tabla es la llamada MBR o Master Boot Record en el caso de Window$). También hemos de saber que pueden existir otros esquemas de instalación distintos al empleado normalmente Window$ (MBR), tal como el MBR/GPT, que utiliza una tabla de particiones cuatro veces más grande y es el esquema favorecido por Linux y otros sistemas operativos abiertos. En tal caso el procedimiento de clonado será ligeramente diferente, y os indicaré las salvedades para cada caso.

Vean señores, para este cometido necesitaremos idealmente de un sistema informático al que podamos conectar ambos discos a la vez para las tareas de clonado. Asimismo, necesitamos contar con algunas aplicaciones y utilidades. En el caso de contar con un sistema GNU con Linux para estos menesteres, podremos instalar las aplicaciones necesarias abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente comando de organización:

sudo apt install clonezilla fdisk

Clonezilla puede ejecutarse también desde un Live CD oficial, lo cual puede ser útil si no contamos con otro sistema operativo u equipo.

Si el disco está particionado siguiendo el esquema tradicional de Windows 10, el MBR (Master Boot Record) desde la UEFI, debemos clonar todas las particiones que hacen al sistema. Estas son la partición Windows RE (“recuperación”), la partición EFI System, la partición Reserved Microsoft ("reservada") y la partición de datos Basic de Microsoft que contiene al sistema operativo Windows (típicamente nomenclada como unidad C:). En este caso tradicional, el esquema de particionado que nos indicará fdisk bajo disklabel será "DOS". Tengamos en cuenta que en muchos equipos portátiles se agregan particiones adicionales que contienen instaladores de programas o controladores de dispositivos.

En las capturas de pantalla a continuación podremos analizar el esquema de partición de Windows 10, en caso de un estilo MBR, y un esquema GPT realizado desde la UEFI.

Esquema de partición MBR desde la utilidad Administración de Disco (Windows 10):
 Fig.1 Revisando el esquema de particionado MBR

En el caso del esquema de particionado GPT favorecido por los sistemas Linux, el sistema tendrá una tabla de alocación distinta. En tal caso la utilidad de línea de comandos fdisk informará que el tipo de disklabel como "GPT".  Desde Administración de Disco de Windows se indicará así:


Fig.2 Revisando el esquema de particionado MBR

Esta guía asume que ambos discos (el HDD viejo y el SSD más pequeños) están conectados físicamente al sistema a través de sus conectores SATA normalizados, y que el Sistema operativo Windows está instalado con un esquema de particionado MBR, el tradicional de Windows.


Paso 1: Achicar la partición C: del Sistema operativo Windows 10
Tengamos en cuenta que en este caso la partición C: del disco rígido es más grande que el tamaño total del SSD destino, y por lo tanto necesitaremos reducir su tamaño para que quepa en el SSD. Los cálculos para este paso son simples:

Las suma de las particiones Windows RE + Recuperación + Partición EFI + c: de Windows debe ser menor o igual que el total del tamaño del SSD reportado por la utilidad fdisk.

1. Para achicar la partición C: desde Windows, vamos a Inicio / Ejecutar... ejecutamos la aplicación diskmgmt.msc o directamente abrimos la utilidad Administración de Disco de Windows. La usaremos para reducir el tamaño del volumen (“Shrink Volume”) C: (asumiendo que Window$ está instalado al comienzo del disco en la segunda partición, a continuación de la partición Reservado de Sistema, y que tiene la letra de unidad C: asignada). Reducimos el tamaño al mínimo posible.

Fig.3 Reduciendo el tamaño de la partición C:

Si no deseamos o no podemos utilizar el Administrador de Discos de Window$ para esto, podríamos usar un LiveCD de Ubuntu y utilizar la aplicación Sistema / Administración / Gparted para achicar el tamaño de la partición C: al mínimo posible.

2. Luego de haber reducido el tamaño de la partición C:, apagamos la portátil y conectamos ambos discos al equipo con Sistema Linux que usaremos para clonar; también podríamos arrancar dicho equipo usando el Live CD de Clonezilla o Parted Magic). En él podremos entramos a la interfaz de línea de comandos, que usaremos para revisar las tablas de particiones y tamaños de ambos discos. Para ello usamos los siguientes Comandos de Organización:

fdisk -l /dev/sda
fdisk -l /dev/sdb

Fig.4 Revisando el tamaño de la tabla de Particiones

Tengamos en cuenta que la nomenclatura y orden de los discos puede variar entre Windows y Linux y de acuerdo a la configuración BIOS/UEFI del sistema. La nomenclatura que asumimos en los ejemplos es que el disco sda es el disco de 1TB, sdb es el SSD de 250GB, etc. Debemos seleccionar el disco con la máxima atención de manera de no terminar clonando un disco equivocado y destruir todos los datos.

Para saber cual es el disco de origen correcto (el HDD en este caso) y el disco de destino correcto (el SSD), usamos el tamaño y la tabla de particiones reportadas por el comando fdisk. Fdisk debería devolvernos que el SSD debería ser mas pequeño en tamaño que el disco HDD, y si es nuevo, no debería tener creada ninguna tabla de partición por defecto.

Si usamos el disco de Clonezilla para revisar esto ingresamos los comandos:

su -
fdisk -l /dev/sda
fdisk -l /dev/sdb

si usamos Ubuntu en cambio podremos usar:


sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sdb

...y en caso de un disco con esquema GPT, la partición del HDD se informaría  como se indica abajo,
 Fig.5 Revisando el tipo de particionado (“Disklabel”)


Paso 2: Clonar los Discos usando Clonezilla
3. A continucion, clonaremos únicamente la MBR del disco rígido origen (“Master Boot Record”, la tabla de inicio maestro, compuesto por un sanguchito de 512KB integrado por una feta que es el arrancador de etapa 1 mas otra feta formada por la tabla de particiones del disco), copiándola al SSD destino. Para ello usamos uno de los comandos siguientes (asumiendo que sda representa al disco rígido de 1 TB de origen donde está el Windows OS y sdb es el disco SSD destino de 250GB):

sudo dd if=/dev/sda of=/dev/sdb bs=512 count=1


o también:


sfdisk -d /dev/sda | sfdisk -f /dev/sdb


Fig.6 Clonando la MBR de un disco usando Clonezilla

En el caso de contar con un estilo de particionado GPT, el accionar es ligeramente diferente, pues no tenemos una MBR ensanguchada de 512 bytes como en el caso anterior sino una MBR/GPT cuatro veces más grande, de 2048 bytes. En tal caso, el comando sería:

sudo dd if=/dev/sda of=/dev/sdb bs=2048 count=1

También podríamos usar la utilidad sgdisk especializada para este menester. Tengamos en cuenta que si copiamos la tabla de partición desde sda a sdb debemos invertir el orden indicado al usar sgdisk, pues su sintaxis es sgdisk -R discodestino discoorigen. El comando entonces sería:

sgdisk -R /dev/sdb /dev/sda

Después de clonar la MBR/GPT, ejecutamos fdisk con el modificador -l para realizar una verificación, a fin de asegurarnos que la tabla de particionado coincida en ambos discos:

sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sdb


Fig.7 Verificando la Tabla de Particionado

4. Llegados hasta aquí, ambas unidades deberían contar con una tabla de partición exactamente clónica, que define cómo está estructurado el disco. En el disco destino debemos ahora borrar todas las particiones que vienen después de la partición Windows, de manera de comenzar con una tabla de particiones limpia que tenga las entradas necesarias sólo para reservada de sistema y Windows.

Tampoco clonaremos la partición de datos D: del disco HDD, sino que clonaremos sólo las primeras dos particiones del disco rígido origen al SSD destino para que pueda arrancar. Luego emplearemos el espacio libre no utilizado del SSD para extender la partición C: en el espacio sin utilizar que hubiese podido sobrar en el SSD.

Usamos la utilidad fdisk como se describe a continuación para hacer el borrado las particiones. En primer lugar ejecutaremos el comando para la unidad destino SSD (/dev/sdb en este caso), mostrar la tabla de particiones con p, luego presionamos d para comenzar a borrar las particiones y elegir el último número de la partición desde la interfaz de comandos (en este caso, es la tercera partición). En este caso el comando sería:

sudo fdisk /dev/sdb


Fig.8 Borrando la tabla de particiones:

En caso de que nuestro disco tenga más de una partición a continuación de la partición Windows, debemos asegurarnos de borrarlas a todas. Luego de haber removido todas las particiones innecesarias, presionamos p nuevamente para que el sistema nos liste nuevamente la tabla de particiones actualizada; ahora sólo deberían verse las particiones requeridas de Windows (Reservada y C:). Conforme nos aseguremos de ello, podremos presionar la tecla w para aplicar definitivamente estos cambios.


Fig.9 Confirmando los cambios de particionado

El mismo procedimiento también aplica para borrar los discos GPT, con la mención que podremos emplear la aplicación cgdisk que es intuitiva para operar y manipular el esquema de un disco. En tal caso no es necesario preocupemos de eliminar una tabla de particiones de respaldo localizada al final del disco GPT, pues cgdisk realizará convenientemente los cambios necesarios en ambas tablas de particiones y almacenará la nueva tabla de particiones MBR/GPT al principio y al final del disco automáticamente (como especifica el esquema GPT). El comando en tal caso sería:

cgdisk /dev/sdb

Fig.10 Borrar la partición GPT

Y el reporte de disco GPT final con la última partición de 4,9 GB eliminados.
Fig.11 Verificando la tabla de particiones GPT.

5. Ahora, con todo en su lugar, iniciamos la utilidad Clonezilla, seleccionamos el modo Dispositivo a Dispositivo (“device-device mode”), y ejecutamos el Asistente para Principiantes, y elegimos la opción Partición a Partición Local.
Podrán usar las capturas de pantalla siguientes como referencia:

Fig.12 Seleccionamos el Modo de Dispositivo de Clonezilla



Fig.13 Seleccionamos el Modo Sencillo de Clonezilla


Fig.14 Seleccionamos el clonado de Partición a Partición Local en Clonezilla

6. Seleccionamos la primera partición de la lista (sda1 – Reservada de Sistema) como origen, y luego presionamos Enter para continuar.


Fig.15 Seleccionando la Partición a clonar

7. A continuación, escogemos la partición de destino local, que será la primer partición del segundo disco, (/dev/sdb1) y presionamos Enter para continuar.


Fig.16 Seleccionando la partición de destino Local

8. En la ventana siguiente seleccionamos Skip check/repair file system (Saltar revisión/reparar sistema de archivos”) y presionamos Enter nuevamente para continuar.



Figh.17 Salteando la opción de revisar y reparar el sistema de archivos

9. Finalmente, presionamos Enter nuevmanete para continuar y respondemos Si (y) dos veces para aceptar las advertencias y comenzar el proceso de clonado.


Fig.18 Confirmar los cambios de Partición

Fig. 19 Comenzando el clonado en sí de la partición

10. Luego que el proceso de clonado de la primera partición finalice, seleccionamos entrar a la línea de comandos, ejecutamos clonezilla y repetimos los mismos pasos para las particiones siguientes (origen sda2 – destino sdb2, etc).
 Fig.20 Clonando la segunda Partición

11. Luego de haber clonado todas las particiones de Windows, apagamos el sistema y removemos el disco rígido origen del equipo y reinstalamos el SSD en la portátil, y la encendemos, ajustando la BIOS para indicar el el SSD sea la unidad de arranque primaria si fuese necesario.

Paso 3: Redimensionar la partición de WIndows

12. Ahora podremos ejecutar Gparted para revisar que las particiones hayan quedado bien y extender las partición de Windows.

Extender las particiones usando Gparted desde un Live DVD
Fig.21 Redimensionar la partición usando gParted.


Fig.22 Redimensionar el tamaño de la partición

Si no quisiéramos usar gparted, bien podremos también extender el tamaño de una partición usando el Administrador de Discos de Windows.

 Fig.23 Extendiendo la partición de Windows Partition



Fig.24 Seleccionando el Disco a extender

Esto es todo. Ahora la partición c: está extendida al máximo espacio del SSD y Window$ 10 ahora puede correr con la velocidad de un disco de estado sólido SSD. El disco rígido de 1TB ahora tiene toda la información intacta, y se emplea como respaldo.

Conclusión
Con Cloneszilla podremos escoger una imagen de las particiones y guardarlas en un disco externo o en una unidad de red. En este caso también debemos respaldar la MBR o MBR/GPT del disco con el siguiente comando, y grabar la imagen MBR en el mismo directorio donde están almacenadas las imágenes de Clonezilla:

Para respaldar la MBR a un archivo:

sudo dd if=/dev/sda of=/ruta/de/MBR.img bs=512 count=1

...o también:

sfdisk -d /dev/sda > =/ruta/al/backup/sda.MBR.txt

Para respaldar la MBR/GPT a un disco: 

sudo dd if=/dev/sda of=/ruta/al/backup/GPT.img bs=2048 count=1

...o también:

sgdisk --backup=/ruta/al/backup/sda.MBR.txt /dev/sda

En el caso de tener que restaurar el sistema Windows desde una localización de red, primero debemos restaurar el sector MBR o MBR/GPT usando el archivo de imagen almacenado previamente, a través del comando correspondiente:

Para restaurar la imagen MBR a partir de un archivo:

sudo dd if=/ruta/al/backup/MBR.img of=/dev/sda bs=512 count=1

...o también

sfdisk /dev/sda < =/ruta/al/backup/sda.MBR.txt

Para restaurar una imagen MBR/GPT por medio de un archivo de respaldo:

sudo dd if=/path/to/GPT.img of=/dev/sda bs=2048 count=1

...o también:

sgdisk - -load-backup=/ruta/al/backup/sda.MBR.txt /dev/sda