I actually did this just recently. Sadly I don't recall exactly what the right steps were (I went down a few 'dead ends' before I got it right) but I'll give you a basic overview. You can do it from within your Debian installation, or using a LiveCD of some kind (but then I'm not sure how installing grub will go). I'm going to assume your old hdd is /dev/sda and your new one is /dev/sdb. You should doublecheck this for your system. You'll need to create a partition on the new hdd thats at least as big as the one on the old hdd (bigger is ok). Use dd to copy the contents to the new hdd. dd if=/dev/sda1 of=/dev/sdb1 Check the filesystem is intact. e2fsck -f /dev/sdb1 This is a good time to expand the filesystem to fill the partition you created. resize2fs -p /dev/sdb1 Using dd to copy the filesystem means the UUID of the filesystem will be the same on both hdds. I recommend you generate a new UUID for the filesystem on the new hdd, to avoid any weirdness later tune2fs /dev/sdb1 -U `uuidgen` FYI, you can check the UUIDs of your devices using blkid blkid -g && blkid Now mount the filesystem on the new hdd somewhere - I'll call it /. Update //etc/fstab so that the line for / contains the correct UUID. Finally, install grub on the new drive grub-mkconfig -o //boot/grub/grub.cfg (not sure if this is necessary?) grub-install --root-directory=/ /dev/sdb You should now be able to boot from the new drive. Since we didnt touch the old one, if anything goes wrong you can just swap back. I'd also recommend you run 'update-grub' and then 'grub-install /dev/sdX' again once you've booted from your new disk - my grub menu was a bit whacky until I did that.