GRUB/os-prober cannot find Windows 10

I installed arch (manjaro) on my SSD (sda1 system, sda3 LUKS home) and now installed Windows 10 on my HDD (sdb2, sdb1 is a mass storage "Attic") on top of it. Afterwards I booted into a live disk to reinstall grub, ran

grub-install /dev/sda
update-grub

Now I was able to boot my Linux again, but grub did not detect the Windows installation. Most of what I found online suggested simply running os-prober, but even after I mounted the Windows partition using nautilus, it would not return an entry, neither does update-grub.

# lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda        8:0    0 447,1G  0 disk  
├─sda1     8:1    0  93,5G  0 part  /
└─sda3     8:3    0 353,6G  0 part  
  └─home 254:0    0 353,6G  0 crypt /home
sdb        8:16   0 931,5G  0 disk  
├─sdb1     8:17   0 830,9G  0 part  /mnt/attic
└─sdb2     8:18   0 100,6G  0 part  /run/media/phistep/Windows
sr0       11:0    1  1024M  0 rom   

After some further digging I tried to manually create the menu entry

# cat /boot/grub/custom.cfg
menuentry 'Windows 10' {
	insmod part_msdos
	insmod ntfs
	insmod ntldr
	search --fs-uuid --no-floppy --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 7BD535C4264A2727
	ntldr /bootmgr
}

But upon selecting it, I only get /bootmgr not found. (7BD535C4264A2727 being the ID for sdb2 returned by blkid)

As far as I can tell, this might be a problem with BIOS/UEFI. I'm almost certain I installed arch/manjaro using a BIOS, but you might want to tell me how to confirm it. I have no idea which way Windows was installed, but some people online suggest the problem might be caused by it being installed in UEFI. I do in fact find some UEFI related files on the Windows partition

% find /run/media/phistep/Windows -iname '*bootmgr*'    
./Windows/Boot/EFI/bootmgr.efi
./Windows/Boot/EFI/cs-CZ/bootmgr.efi.mui
...
./Windows/Boot/PCAT/bootmgr
./Windows/Boot/PCAT/cs-CZ/bootmgr.exe.mui
...
./Windows/WinSxS/amd64_microsoft-windows-b..nager-efi.resources_31bf3856ad364e35_10.0.18362.1_bg-bg_62d5a2e191a324c6/bootmgr.efi.mui
...

(I left out some of the localized versions for clarity)

So when I tried to create a manual UEFI grub entry, I did not find a EFI System Partition, as you can see in the output of lsblk and parted:

# parted -l           
Model: ATA SanDisk SSD PLUS (scsi)
Disk /dev/sda: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  100GB  100GB  primary  ext4
 3      100GB   480GB  380GB  primary


Model: ATA WDC WD10JPVT-22A (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  892GB   892GB  primary  ntfs
 2      892GB   1000GB  108GB  primary  ntfs

How do I proceed to boot Windows using GRUB (ideally without having to reinstall Linux or Windows)?

(new post to circumvent the 2-links-limit)

Update: Following this guide, I think I can verify that my Windows was actually installed in BIOS mode!

% grep "Callback_BootEnvironmentDetect" /run/media/phistep/Windows/Panther/setupact.log
2020-03-16 22:50:45, Info                  IBS    Callback_BootEnvironmentDetect:FirmwareType 1.
2020-03-16 22:50:45, Info                  IBS    Callback_BootEnvironmentDetect: Detected boot environment: BIOS

Then why does os-prober not find it?

First of all:

Make sure to have a Recovery Disk for your Windows in case you would need to repair its MBR.

Then, boot into your Manjaro system (or was it Arch?) and install grub to the disk where Windows is installed. that would be /dev/sdb according the output from fdisk:

sudo grub-install --target=i386-pc --recheck /dev/sdb

Next, update grub:

sudo update-grub

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by