I'm not sure if this is the exact line you had used or if it was just a typo posting to the forums...
dd if=/dev/sda11 /mnt/sda1/linux.bin bs=512 count=1
You're missing the outfile parameter, you need an 'of='... It should instead look something more like:
- Code: Select all
dd if=/dev/<linboot> of=<winroot>/linux.bin bs=512 count=1
Replacing <linboot> with the partition that has grub installed to it's superblock, and <winroot> with a mount point of the partition that has the windows kernel on it.
From there you edit 'boot.ini,' or run 'bcdedit.exe' if you're using Windows Vista or later, to point the Windows Bootloader to the location of the grub bootloader file.
It seems that grub confuses the order of the disk, and that's why doesn't start. If windows boots, then windows disk is sda (hd0,0) and linux is sdb(hd1,0) and when i boot with linux disk, the 30gb disk is sda and windows is sdb.
Some BIOS handle drive numbering different than others. Some go by distance from the bridge, others consider master/slave, and others put the boot drive first. It may even be any combination of those and more. My best guess for the drives changing is either that Windows is Drive 1 the whole time and pretends to see itself as Drive 0 for it's own sanity purposes... Or, when the bootloader loads into memory and then is replaced by another by another bootloader's stage on another MBR the BIOS takes the drive with the most recently accessed MBR and calls that Drive 0. The second scenario is the least likely of the two I had mentioned.