My current situation is:

  • One hard disk
  • Dual boot Ubuntu 11.04 and Windows 7. Partitions:
    • 100MB Windows System thingy
    • 144GB Main Windows
    • 160GB Ubuntu
    • 4GB Swap
    • 12GB System Restore stuff

Now I want to install an 80GB SSD and move Ubuntu to it. AFAIK I need to:

  • Shrink the 160GB Ubuntu partition to 80GB
  • Copy it over to the SSD
  • Change fstab to mount the SSD as /

How do I do the second? And what do I need to do about Grub?


1) Copying files

You want to copy the FILES, not the whole partition ( including its free space ), so you don't need to resize the partition first. Boot from the livecd and mount both the HD and SSD ( after formatting a partition on the SSD of course ), then copy all of the files over:

sudo cp -Tax /media/hd /media/ssd

Use the correct names for the hd and ssd mount points of course. Then you just need to edit the /etc/fstab on the ssd to point to the new fs UUID ( you can look it up with blkid ). Finally you need to install grub on the ssd.

2) Dealing with GRUB

a) Command line:

sudo -s
for f in sys dev proc ; do mount --bind /$f /media/ssd/$f ; done
chroot /media/ssd
grub-install /dev/ssd

Of course, use the correct device for /dev/ssd. The whole disk, not a partition number.

b) "Recommended repair" magic button in Boot-Repair:


sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

enter image description here

Finally reboot and make sure your bios is set to boot from the SSD.

  • 10
    I'm posting this comment from my system running perfectly on the SSD. Thanks May 6 '11 at 12:14
  • 1
    Just something I found doing this with a second PC: The live CD needs to be 64 bits if the OS you're moving is 64 bits too, or the chroot won't work. Aug 28 '11 at 22:45
  • 3
    What does the chroot command do, and why is it necessary?
    – codeape
    Oct 20 '11 at 12:26
  • 7
    I found the command should be sudo cp -ax --target-directory=/path/to/ssd /path/to/hdd/* or else it copies over the files but dumps it into a directory on the ssd instead..
    – Pwnna
    Aug 12 '12 at 15:18
  • 2
    @Balthazar: When using chroot, the new root directory needs to be a complete enough environment that whatever programs/scripts you're going to run can act as if it's a normal root filesystem. Those mount commands drop the "sys", "dev", and "proc" filesystems (virtual filesystems with non-disk-backed files e.g. /dev/zero, which returns all zeros when read) into the right places so that they'll appear in the right place when inspected from within the chroot jail.
    – azernik
    Apr 14 '13 at 20:51

I was able to do this migration successfully thanks to @psusi's instructions, however I observed one "gotcha."

After installing Grub on the new SSD, it still wouldn't boot - it was looking for the ramdisk image using the UUID of my old OS drive, which I had removed. Using the --recheck option fixed this:

$ grub-install --recheck /dev/ssd

This encourages grub to re-scan the BIOS, identify the new drive, and presumably use its UUID when passing the "root=" parameter to the kernel.


Here is as good (for 2018) as easy how-to from 2013: http://www.sesser.eu/howtos/hdd2ssd.php by Markus Sesser. But you should read 1st comment here about --exclude "sys" - thanks to @em2er !

It describes migration without booting from live CD. It also respects system dirs and uses rsync, noatime, nodiratime. Just do not forget to omit discard option - it is implemented via cron since Ubuntu 14.04.

Short plan from article:

  1. partition and mount the SSD. I recommend single ext4 on gpt

  2. cleanup source HDD

  3. sync data (rsync)

  4. tune fstab. Also if you will keep HDD in system then I recommend move /home onto SSD while keep user data (~/Video, ~/Audio, etc.) on HDD

  5. install grub

  • 2
    Markus guide is still quite useful except rsync part: e.g. the option --exclude "sys" excludes all paths with sys like /usr/local/go/src/cmd/vendor/golang.org/x/sys/unix/str.go
    – em2er
    Jun 18 at 10:52

Considering your HDD is /dev/sda and SSD is /dev/sdb and partitions are properly sized, you may use simple cp:

cp /dev/sdaX /dev/sdbY

Where X and Y are corresponding partition numbers.

However this method will copy 80GB of data and all sectors on your SSD will be marked as "occupied" initially.

  • Sound easy enough, but that last sentence doesn't mean much to me. Is it, or could it be, a problem? May 5 '11 at 14:56
  • Well it might negatively impact your SSD speed (however with TRIM support it would recover later). You may read en.wikipedia.org/wiki/TRIM for more information. But, you should really go the route described in the other reply (copy files, not partitions). If you still decide to copy the whole partition, you need to perform grub-install/grup-update as well. May 6 '11 at 7:41
  • 1
    I wouldn't recommend this approach, it will copy all the filesystem errors you may have on your old partition. The cp -ax approach is both quicker and safer. Nov 23 '12 at 17:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.