I have recently put in a larger HD in my Dell Vostro 1000. After partitioning the new drive with the same size Dell driver partition, Vista recovery partition, and larger Vista partition, I made a Ubuntu Linux partition and then several NTFS storage partitions. I then copied the MBR and Dell driver partition to the new drive with dd from Ubuntu live. Next I used Ubuntu's ntfscopy command to copy the the two Vista partitions and used ntfsresize to expand the Vista partition to the new size. Then I installed Ubuntu in the Ubuntu partition. It did not recognize the Vista partition and called it a Vista recovery program, so I adjusted the config and then the boot menu comes up correctly but the boot to Vista does nothing but a black screen. I have a Vista recovery disk but the repair programs have not worked. I have read about BCDEDIT.EXE but don't have enough information to use it. Can someone help me?
You're making this way more complicated than it needs to be. You can copy the whole drive with one command. Instead of copying the MBR and and the different partitions separately you can just copy the whole disk with a data dump. I can verify from experience that this works with XP. I've never tried it with vista but it should be the same. I've even done this on raw unformatted drives.
What I would do:
With the new and the old hard drives installed, boot to the Ubuntu CD and fire up gparted from the command line with
sudo gparted and delete all of those partitions that you created. There is no need to format or create new partitions. You can do this later, after you've got vista going, if you want to. Remember, you have to click apply before any operations are actually carried out in gparted.
Open terminal again and do
sudo fdisk -l. This will show every drive and every partition in the system. The drives will probably be /dev/sda and /dev/sdb if you only have the two hard drives installed. You should be able to tell which drive is which by the capacity and number of partitions. This is important! Pay attention to which one is the old and which is the new. Let's assume that the old hard drive is /dev/sda and the new one /dev/sdb although it may be different in your case. You want to do a data dump from the old hard drive to the new one with
sudo dd if=/dev/sda of=/dev/sdb bs=32256. This will copy the entire contents of the old hard drive to the new one.
Notice in the example that the
if is the source and the
of is the destination. This is why you need to pay attention to which drive is which with your fdisk info. This will do a data dump of the binary pattern from the old drive to the new drive using the block size that I've specified. The
bs=32256 is 63 512 byte sectors on your hard drive, so it will transfer the data 32256 bytes at a time instead of the default dd transfer speed of 512 bytes per transfer. This will speed up the cloning process. dd will not show any output during the transfer but you can be sure that it's working by watching the hard drive activity light on the front of your computer. Once the transfer is done you should see a report of number of transfers.
Now power down and remove the old drive. Power back up and boot to the new hard drive. It might balk the first time you try to boot to it because the serial number on the drive is different from the old one. Another cold boot should update the info and have you booting into vista.
The new larger drive will have that much more unallocated space when you look at it in disk management. You can boot back to ubuntu to install on that space or use gparted to extend that space for the vista partition.