Skip navigation.
Notebook » HDD2SSD

Migrating a Hard Disk to a Solid State Disk


This is how I migrated my partitions from the HDD to the SDD, using gparted. My HDD had three partitions: a Windows 8.1 partition, a Swap and a Linux (Manjaro) partition.

All you need is a Linux live CD (or USB stick) with gparted.

Conceptually it is very simple:

  1. Copy and paste each partition from the HDD to the SDD
  2. Modify setup (a little bit)
  3. Install GRUB in the Master Boot Record of the SSD
  4. In case, restore Windows bootloader on the SSD

In more details:

  1. Boot with the live CD, launch gparted.
  2. Shrink the partitions so that they fit the SSD.
    If you can not modify the size of the partitions, make sure that:
    • partitions are not mounted; in case they are, unmount them from gparted
    • Windows has been fully shut down, not hibernated.
    • Windows partition does not contain errors. Run chkdsk /f in windows, and reboot twice.
  3. Copy partitions to the SDD using gparted: right-click partition, select "copy", right-click SSD free space, and select "paste".
    When pasting Windows partition, try to place the pasted partition in the very same position of the original one; i.e., if possible, set the first sector of the pasted partition so that it matches the first sector of the original partition. In this way, you should avoid problems with Windows bootloader (see later).
    Create extended partitions if you need them, as in the original layout. Commit.
  4. Modify file /etc/fstab of the Linux partition of the SSD:
    You can mount your Linux partition in your live distribution (e.g., by opening it with a file manager), and using a text editor (such as nano or vim) to modify the file in the position where it has been mounted.
  5. Restore GRUB as described in gparted's docs (for BIOS)
    If Linux in your Live CD is compiled for the same architecture of your SDD partition (e.g. i386 or amd64), you can do this from your LiveCD. Otherwise, reboot from your old HDD, mount the SDD partition, and chroot as described in the linked docs.
    For UEFI:
    • Mount root partition (e.g. /dev/sda5 to /mnt/sda5)
    • Chroot (manjaro-chroot /mnt/sda5)
    • Mount EFI partition (e.g. /dev/sda1) to /boot/efi: mount /dev/sda1 /boot/efi
    • update-grub
    • grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
  6. Restore Windows bootloader, if Windows does not boot (BIOS)
    Windows loader identifies each Windows installation by the phisical sector where the partition begins. Thus, if you move a Windows partition to a different place, Windows will refuse to boot.
    To fix this problem, you need a Windows command prompt:
    • Boot Windows (a rescue console will be enough) from your old HDD or from a system repair disk
    • Discover the letter associated to the SDD Windows partition (let's assume it is D:)
      Enter the following command: bcdboot D:\Windows
      FOR UEFI see also https://woshub.com/how-to-repair-uefi-bootloader-in-windows-8/. 
      It is strongly recommended to create a Windows installation USB flash drive from Microsoft site, and use it to run a command prompt where you will be able to repair bootloader