Grub does not detect Windows 11 from a second disk


I’m trying to figure out what could happen with my Grub which is not able to detect my Windows. I read some forum posts already, but solutions like GRUB_DISABLE_OS_PROBER didn’t work for me.

I have 2 SDDs, sda has only Windows 11 installed, and sdb has only Manjaro installed.
My BIOS is configured for UEFI and Legacy, so I can startup Windows from the boot menu.

So far, I have some information which I hope can give some hint:

cat /etc/fstab                                                   ✔ 
# /etc/fstab: static file system information.
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=2E99-07DE                            /boot/efi      vfat    umask=0077 0 2
UUID=278a0ae4-d698-4b7d-8246-c4bd2200920b /              ext4    defaults,noatime 0 1
UUID=af195bdf-38dd-4e2b-855b-e59fd98c88f2 swap           swap    defaults,noatime 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
lsblk -f                                                         ✔ 
│    ntfs         Reservado pelo Sistema
│                       795452506159F4AD                                    
│    ntfs         AMD   0E78E4E4DDEDF25E                       53,7G    94% /mnt/windows
│    ntfs               42662282662276B7                                    
     vfat   FAT32       80B5-8621                                           
│    vfat   FAT32 NO_LABEL
│                       2E99-07DE                             299,1M     0% /boot/efi
│    ext4   1.0         278a0ae4-d698-4b7d-8246-c4bd2200920b  378,4G     7% /
     swap   1     swap  af195bdf-38dd-4e2b-855b-e59fd98c88f2                [SWAP]
sudo parted -l                                                                                                                                                                                      ✔ 
Model: ATA KINGSTON SA400S3 (scsi)
Disk /dev/sda: 960GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  2813MB  2812MB  primary   ntfs
 2      2813MB  960GB   957GB   primary   ntfs         boot
 3      960GB   960GB   559MB   primary   ntfs         msftres
 4      960GB   960GB   109MB   extended
 5      960GB   960GB   109MB   logical   fat32        lba

Model: ATA CT480BX500SSD1 (scsi)
Disk /dev/sdb: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system     Name  Flags
 1      2097kB  317MB  315MB   fat32                 boot, esp
 2      317MB   471GB  470GB   ext4            root
 3      471GB   480GB  9449MB  linux-swap(v1)        swap
sudo fdisk -l                                                                                                                                                                                     1 ✘ 
Disk /dev/sda: 894,25 GiB, 960197124096 bytes, 1875385008 sectors
Disk model: KINGSTON SA400S3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7afad07f

Device     Boot      Start        End    Sectors  Size Id Type
/dev/sda1             2048    5494229    5492182  2,6G  7 HPFS/NTFS/exFAT
/dev/sda2  *       5494784 1874074356 1868579573  891G  7 HPFS/NTFS/exFAT
/dev/sda3       1874075648 1875167231    1091584  533M 27 Hidden NTFS WinRE
/dev/sda4       1875171326 1875384319     212994  104M  5 Extended
/dev/sda5       1875171328 1875384319     212992  104M  c W95 FAT32 (LBA)

Disk /dev/sdb: 447,13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: CT480BX500SSD1  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D13B3E4E-C771-C243-A49E-A9AFA787E284

Device         Start       End   Sectors  Size Type
/dev/sdb1       4096    618495    614400  300M EFI System
/dev/sdb2     618496 919243046 918624551  438G Linux filesystem
/dev/sdb3  919243047 937697984  18454938  8,8G Linux swap
sudo update-grub                                                                                                                                                                                  1 ✘ 
Generating grub configuration file ...
Found theme: /boot/grub/themes/openbox/theme.txt
Found linux image: /boot/vmlinuz-5.15-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-5.15-x86_64.img
Found initrd fallback image: /boot/initramfs-5.15-x86_64-fallback.img
fgrep: warning: fgrep is obsolescent; using grep -F
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
cat /etc/default/grub                                                                                                                                                                           INT ✘ 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=1 security=apparmor resume=UUID=af195bdf-38dd-4e2b-855b-e59fd98c88f2 udev.log_priority=3"
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

That seems to be Windows’s EFI Partition.

But it is not flagged with boot,esp like for Manjaro:

When I look at that:

Then this partition is marked for boot. So I guess Windows is installed in BIOS mode and Manjaro in EFI mode. Grub will not find any non-efi bootloader that way. Both have to be installed in the same mode.

1 Like

My desktop at home detects both, but my laptop doesn’t. When I need to get into Windows, I go in through the BIOS and change which drive boots first for that run.

It a limitation/poorly written code built into all versions of Windows, it needs to be first, in the list so that it can find itself or it gets completely lost and has no idea as to where it’s at.

I doubt that “explanation”. :man_shrugging:

From gHacks:

There’s no hard and fast rule here that says you absolutely must install Windows on the disk0, in fact it will boot merrily from any hard disk in your PC and from any partition on that drive. Windows often places a 100Mb System partition at the beginning of Disk 0 though. This hidden partition stores the boot information for your PC. It’s completely separate from your Windows installation but absolutely critical.

The boot menu resides here, if you don’t have this partition you won’t be able to start your PC without detailed rebuilding of the boot system, if it’s even possible to do so as sometimes it’s not.

If you install Windows AFTER installing Linux, it will overwrite GRUB also updating Windows will require a redo of GRUB.