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
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.