There is more than one way to accomplish getting your old system onto a new drive, but you didn't really ask it that way, you asked for how to clone the system.

I would just use gparted, myself, from the live CD so neither partition is mounted. You can shrink the original partition to the size you want it to be on the SSD, then copy and paste the partition to the new drive. If I remember correctly, this will reuse the same UUID, but you can change that on one or the other partition afterwards. The command for this is sudo tune2fs -U random /dev/sdb5 assigns UUID for sdb5.

If you don't want to change the old system, and if you want to keep it mounted for a while, you could change the UUID for the SSD partition, and edit your fstab. It's actually not hard at all, and is something you should learn about. It's pretty self-explanatory for someone with the knowledge you already seem to have. Once you assign a new UUID, you can see all of them with this command: sudo blkid -c /dev/null - the parameter -c specifies the cache file, and /dev/null means don't use a cache, so you always get any changes right away. I always use that form, and can see no downside unless you have a lot of partitions.

Once you get the UUID, you can copy and paste it over the old one in /etc/fstab using gedit or whatever text editor you prefer.

Personally, though, rather than taking time to resize the partition first, I'd simply copy the old install to the new disk. If you don't know how to install GRUB to the mbr, you might want to first install a base Ubuntu, then back up /etc/fstab, copy the old install over it, and then copy the fstab from the new install so it has only the correct entries.


Boot from the livecd, mount both drives, then just copy the files over with sudo cp -ax /media/source /media/dest. Edit the /etc/fstab on the destination to point to the correct UUID ( look up with blkid ), and reinstall grub.


I would suggest avoiding to use dd if=/dev/sdb5 of=/dev/sda1 if your system is running from /dev/sdb5 itself (and presumably not mounted read-only).

Another way to copy partitions across is to boot from the live CD (or USB) and start GParted. You can use Ctrl+C/Ctrl+V to copy partitions from one disk to another.

One the copy is made (and perhaps after reboot is the partition table needs to be refreshed), still from the live CD, mount your new root partition using a Terminal:

sudo mount /dev/sda1 /mnt

Then, edit /mnt/etc/fstab to point to the correct locations.


The bash script clone-ubuntu.sh automates the steps the accepted answer outlines. A menu is provided to make the new partition easy to find:

clone-ubuntu.png

Visit the link above for a copy of the script and important points to consider such as:

  • rsync is used to clone booted partition and system virtual directories are correctly skipped.
  • /etc/fstab of the target clone is updated with correct UUIDs for booting.
  • /etc/grub/grub.cfg is updated for seamless grub booting.