Dual booting two Different OS's on Two different Hard Drives

So I have a 128Gb SSD running Windows 7 and a second 500Gb SSD running Ubuntu Gnome. I am trying to get Grub or even Windows boot manger to find and show that I can boot from either OS when I start up my computer. So far I have done the basic command of " sudo update-grub " but I assume that only searches the SSD the Linux OS is installed on. Is there a way to make Grub search to the other SSD?

DISCLAIMER: DESPITE THE TINY LIKELIHOOD, I TAKE NO RESPONSIBILITY FOR ANY POSSIBLE DAMAGE SHOULD IT OCCUR.

I assume this is a problem with os-prober since that is responsible for finding the OS's. It would be helpful if you could post your grub.cfg in a pastebin and your parted -l output.

What you can do is add a custom boot entry for windows in GRUB.

Note, I am assuming you are using grub in UEFI mode with GPT partitions. The following directions will not work if you are running grub in legacy mode with MBR partitions

I assume you know how to find where your windows efi partition is located so I'll skip over that part.

Find your windows partition using

parted -l

It should output a bunch of text containing something looking like this

[...]
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size   File system  Name                          Flags
 1      1049kB  316MB  315MB  ntfs         Basic data partition          hidden, diag
 2      316MB   420MB  105MB  fat32        EFI system partition          boot
 3      420MB   555MB  134MB               Microsoft reserved partition  msftres
 4      555MB   256GB  256GB  ntfs         Basic data partition          msftdata
[...]

The partition we're looking for will be the EFI system partition, so in this case /dev/sda2.

Open up terminal and log into root using

$ sudo -i

Next, go to /etc/grub.d/

# cd /etc/grub.d

Now, you can do two things. You can either create a new file, or you can add a custom entry in 40_custom. We're going to do the latter.

Open up 40_custom in your favorite edito

# gedit 40_custom

And append the following to the file

menuentry "Windows" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt2)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Notice the line

set root ='(hd0,gpt2)'

This is assuming your EFI partition on windows is on /dev/sda2. If your EFI partition is on, for example /dev/sdc3, you would change the line to

set root = '(hd2,gpt3)'

Edit it accordingly, or else it will not work.

If you have run boot repair, you might have to change bootmgfw.efi to bkpbootmgfw.efi

Next, run

# update-grub

after saving the file and closing gedit. Make sure it successfully updates grub.cfg.

Reboot your computer and make sure GRUB is the primary boot option in your BIOS, then windows should show up in your boot entry.

Good luck and have fun.

Edits: clarification

grub.cfg file below

http://pastebin.com/ypAJvJGQ

The parted -l doesn't pull the second SSD because of an error. I also have two 1TB hard drives currently connected.

EDIT: Never mind I just ignored the error and it posted everything below.

Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system     Name  Flags
 1      1049kB  538MB  537MB   fat32
 2      538MB   492GB  491GB   ext4
 3      492GB   500GB  8467MB  linux-swap(v1)


Model: ATA ST1000DM003-1CH1 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size   Type     File system  Flags
 1      1049kB  320GB   320GB  primary  ntfs
 2      320GB   1000GB  680GB  primary  ntfs         boot


Error: /dev/sdc: unrecognised disk label
Warning: Error fsyncing/closing /dev/sdc: Input/output error
Retry/Ignore? Ignore                                                      
Model: ASUS DRW-24B1ST c (scsi)
Disk /dev/sdc: 4325MB
Sector size (logical/physical): 2048B/2048B
Partition Table: unknown
Disk Flags: 

Model: ATA Samsung SSD 840 (scsi)
Disk /dev/sdd: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  106MB  105MB  primary  ntfs         boot
 2      106MB   120GB  120GB  primary  ntfs


Model: ATA WDC WD10EZEX-00R (scsi)
Disk /dev/sde: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1000GB  1000GB  primary  ntfs


Model: WD My Passport 0748 (scsi)
Disk /dev/sdf: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1000GB  1000GB  primary  fat32        boot, lba

Hmm, interesting. The reason why it isn't showing up is because windows is installed in legacy mode with a msdos partition table. So do not use the directions I gave above.

At this point I'd recommend just wiping the drive using gparted and create a gpt table, then reinstall windows on that. It's just nearly impossible to run an OS in legacy mode alongside one in UEFI mode.

Yeah the SSD I just bought is 500 Gb so if I am forced to wipe it anyways ill just put them on the same drive. I have no data needed saving on the windows drive. This was mostly to understand how it would be done and I am very grateful you posted such an awesome reply as I have been using Linux for about 2 weeks.