You've copied a partition directly onto the target device. That's not a huge problem; the data are there, just in the wrong place. Just make sure you don't edit the partition table on the new drive, as sector 0 (where the partition table normally lives) now contains the boot block from your old drive.
The data will have to be moved from sector 0 to the starting sector of what is to become the first partition, typically sector 2048 (assuming a sector size of 512 bytes). The problem is that the move operation must start with the
last sector to avoid overwriting existing data. I'm not aware of any tool capable of moving a range of sectors to a new location on the same disk, starting with the last block, when no partitions are (or can be) defined.
What you
could do, is create a partition and then move the data with a suitable tool. As I mentioned, creating a partition would overwrite the first sector of the drive, so you'd have to create a small backup first. Here's what I'd suggest:
- Use dd to save the first 2048 blocks to a file (dd if=/dev/sdb of=file.bin bs=1024 count=1)
- Create a partition (/dev/sdb1) starting at block 2048 and covering the remaining data (get the partition size from the old drive and subtract 2048 sectors)
- Use a partitioning tool like gparted to move the partition 2048 blocks (1 Mb) towards the end of the disk so it starts at sector 4096 (gparted is smart enough to realize it has to start the move operation at the end of the partition)
- Delete and recreate /dev/sdb1 so it once again starts at sector 2048 (but ends where where it did after gparted had moved the data)
- Copy back the missing first 2048 sectors (dd if=file.bin of=/dev/sdb1)
Not exactly pretty, but it'll work.
Important: If either drive has 4k sectors, the numbers will have to be adjusted accordingly.