You could transfer the whole hard disk as a file into an external hard disk and copy it back into a new hard disk which replaces the old laptop hard disk.

You should mount the external hard disk partition, which should be larger than the entire laptop hard disk you wish to clone, say on /mnt/sdb3 and call it my_old_hdd using a command like
Code:
sudo dd if=/dev/sda of=/mnt/sdb3/my_old_hdd bs=32256
assuming your laptop hard disk is sda, external hard disk sdb, spare partition is sdb3 and you are booting it via a Linux in a USB CD.

You then power down, remove the old hard disk, install the new hard disk, boot up the Linux CD as before, check the sda is the source and the external hard disk is still the sdb and mount sdb3 as before. You can then dd it back by command like
Code:
sudo dd if=/mnt/sdb3/my_old_hdd of=/dev/sda bs=32256
You should see dd stops after the same number of records has been transferred in both cases.