Clone internal HDD to new SSD
Solution 1
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.
Solution 2
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.
Solution 3
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.
Solution 4
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:
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.
Related videos on Youtube
jwir3
Updated on September 18, 2022Comments
-
jwir3 over 1 year
I recently installed an SSD into my machine. The machine itself is a Lenovo thinkpad W520, and it previously had an internal HDD. I moved the internal HDD into an expansion bay (replacing the CD-ROM), and put the new SSD into the internal bay.
The problem I'm having is that I have my Ubuntu configuration EXACTLY the way I want it - I originally spent many hours configuring it to get it to the way it is now. I'd rather not do this again. But, I'd also like the boot-up gains I would get from the OS being on the SSD.
So, what I'd like to do is clone my Ubuntu partition onto the SSD. The catch is that the standard HDD is significantly bigger than the SSD. And it has a windows partition that I don't need on the SSD (I never use Windows, so if it boots off of the other hard drive, that's fine). The layout of my hard drives are as follows:
/dev/sda (SSD): Model: ATA M4-CT256M4SSD2 (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 1049kB 147GB 147GB primary ext4 boot
/dev/sdb (HDD): Model: ATA ST9500420AS (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 1049kB 1259MB 1258MB primary ntfs boot 2 1259MB 269GB 268GB primary ntfs 4 269GB 483GB 214GB extended 5 269GB 416GB 147GB logical ext4 7 416GB 475GB 58.9GB logical linux-swap(v1) 6 475GB 483GB 8470MB logical 3 483GB 500GB 16.8GB primary ntfs
What I've tried so far:
1) Resizing the partitions /dev/sdb5 and /dev/sda1 to be the same size. 2) Booting into Ubuntu 11.04 (from /dev/sdb5) and running dd if=/dev/sdb5 of=/dev/sda1 (of course this causes problems with booting, so I had to reinstall grub.. I can get it to boot, but then I have problems with initrd not finding some files ... presumably it can't load some partitions I think).
Now, I think those two steps are the wrong approach, because it will clone /dev/sdb5 EXACTLY - including references in fstab which point to the wrong hard drive. I'm not sure exactly how to rectify this. I could install Ubuntu 11.04 onto the SSD, then try and copy over all of my configurations, but I'm concerned that I'm going to lose something, or that I'm going to overwrite something like fstab that points back to the original hard drive.
Note that currently, I can still boot from the HDD, so it's not imperative that I get this figured out right away, but I do want it to be exactly how it is right now, so that I can maintain my current level of productivity (it's a work laptop).
Suggestions on how I might be able to overcome this difficulty?
Thanks in advance!
-
Deepak Verma about 12 yearsThat's what I'd do, but it took me forever to get a handle on grub2 - mostly due to the myriads of different methods I read, none of which seemed to be complete. Your post assumes the person is on the same level as you are, or perhaps you simply assume he will ask about the parts that aren't known (which is probably OK). But it's curious that you specified the easiest part, the copy command, and kinda glossed over the harder parts. :)
-
jwir3 about 12 yearsThis is very helpful, thank you. I am going to try it and see if I can get it to work. Then I'll come back and accept the answer or ask you more about it. ;)
-
jwir3 about 12 yearsOne question - since I replaced the CD drive with the new drive (actually the old internal drive which was replaced by the SSD), which rescue USB image do you use that works most successfully, assuming I'm going to take this approach?
-
psusi about 12 years@MartyFried, a quick google jumps right to help.ubuntu.com/community/Grub2#Reinstalling_GRUB2, which says it's as simple as running
grub-install --root-directory /mnt /dev/sda
after mounting the Ubuntu partition in /mnt ;) -
Deepak Verma about 12 yearsAh, I'm glad to hear that they've improved or added to the documentation. It's been a while for me, but when I was trying to get a handle on it, even the official GRUB documentation was not totally correct. Also, there was a version change for GRUB2 that caused it to fail with an obscure error message. But the problem with the Ubuntu forums I used to frequent more is that there is a lot of misinformation repeated until it becomes fact by people who barely know what they are talking about - not everyone, but it's hard to sort out sometimes.
-
jwir3 about 12 yearsYep. I hope to give this a try tomorrow. Thanks for the information.
-
Deepak Verma about 12 yearsYou're welcome, and good luck.
-
jwir3 about 12 yearsThis worked well. One thing I was a bit unsure on was how to configure grub, and, more specifically, that there are very different ways to configure grub legacy vs. grub2. I used the following as reference for grub2, once I installed it (
apt-get install grub2
): dedoimedo.com/computers/grub-2.html I was originally going by a grub2 installation method, when in fact, grub-legacy was installed on my system. -
Deepak Verma about 12 yearsAh, yes, the lovable grub, and it's improved, grub2 (NEW! IMPROVED! NOW EVEN MORE COMPLEX!). Sorry, it's all my fault; I had gotten to fully understand the old grub, so of course, they changed it. Then, when I thought I was getting grub2, they made a few more minor changes, incompatible with the previous version. That's why I suggested the possibility of a base install first, just to get grub set up. But it's a good idea to learn grub, and it's actually not that complicated, really. Did you change over to grub2 now?
-
jwir3 about 12 yearsYep, everything seems to be running as expected. I appreciate your help! Networking and Boot problems always seem to be the most frustrating to me. (If I could vote up your answer more than once, I would.) :D
-
Darth Egregious almost 12 yearsWould it be easier to just reinstall ubuntu to the new drive?
-
Deepak Verma almost 12 years@user973810 - I guess that depends on how many customizations, added apps, and updates have been done to the old system, your abilities or willingness to learn or perform the required steps, and perhaps the speed of your internet connection.
-
Alecz over 6 yearsif you
dd
from the live CD you don't need to edit the fstab provided it uses UUIDs (which it should). -
MikeB about 3 yearsThis will clone the system partition, but how to I clone the
/boot/efi
partition? -
WinEunuuchs2Unix about 3 years@MikeB This function only clones programs and data. For backing up boot/efi see: askubuntu.com/questions/698980/…