Windows 11 Boot Manager not showing in GRUB2

I’ve been running Fedora42 for a while now. I recently decided to install Windows 11 to a separate drive, and would like to conveniently boot it through GRUB2 installed on my existing Linux drive.
Beforehand, I re-enabled UEFI and Secure Boot in my PC’s UEFI menu, created an EFI partition and installed grub2-efi. Fedora 42 itself works well and (see update below) now boots as expected in UEFI through grub2-efi. I followed the actions described in this blog post. I also applied a few mods to the Windows install media suggested by Rufus, including a bypass for some of Windows 11’s requirements. Despite that I still enabled Secure Boot and UEFI as I want the certainty of getting future Windows updates because I want to use it securely for school in the near future.

Windows Boot Manager is not showing up in GRUB as a boot option.
Strangely, there is an entry for Windows Boot Manager in /boot/grub2/grub.cfg after using grub2-mkconfig -o /boot/grub2/grub.cfg or grub2-mkconfig -o /etc/grub2-efi.cfg as superuser (I tried both), and it says it detected Windows Boot Manager when I did, but it still won’t show up in the boot menu despite that (copying the contents of the entry after ### BEGIN... into /etc/grub.d/40_custom didn’t work either):

...

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9065-6A34' {
        insmod part_gpt
        insmod fat
        set root='hd0,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9065-6A34
        else
          search --no-floppy --fs-uuid --set=root 9065-6A34
        fi
        chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

...

I also tried booting into the BIOS version of GRUB2 (grub2-pc), where Windows Boot Manager actually did show up. But when trying to select and boot it, it threw the following error:

error: ../../grub-core/loader/i386/pc/chainloader.c:213:invalid signature.

I also tried dnf remove grub2-pc and then regenerating the config file as described above, but that didn’t work either.


Maybe it’s a complicated problem, maybe I just missed something. Either way, let me know if you need any other information. Any info I’m missing, directions or tips are appreciated. Thank you! <3

UPDATE: In my Fedora42 install, this is the output of journalctl -p 3 -xb. Who would’ve guessed that switching to UEFI with Secure Boot enabled would cause a myriad of other problems, like Steam not launching anymore. This may provide additional info for the original question, so here you go.

May 17 22:41:16 pc-joani kernel: x86/cpu: SGX disabled or unsupported by BIOS.
May 17 22:41:16 pc-joani systemd-modules-load[297]: Failed to find module 'v4l2loopback'
May 17 20:41:21 pc-joani systemd-modules-load[600]: Failed to find module 'v4l2loopback'
May 17 20:41:21 pc-joani systemd-udevd[650]: /usr/lib/udev/rules.d/75-davincipanel.rules:2 Unknown group 'resolve', ignoring.
May 17 20:41:22 pc-joani kernel: nvidia-gpu 0000:01:00.3: i2c timeout error e0000000
May 17 20:41:22 pc-joani kernel: ucsi_ccg 0-0008: i2c_transfer failed -110
May 17 20:41:22 pc-joani kernel: ucsi_ccg 0-0008: ucsi_ccg_init failed - -110
May 17 20:41:22 pc-joani kernel: ucsi_ccg 0-0008: probe with driver ucsi_ccg failed with error -110
May 17 20:41:24 pc-joani systemd[1]: Failed to start vboxdrv.service - Linux kernel module init script.
░░ Subject: A start job for unit vboxdrv.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ A start job for unit vboxdrv.service has finished with a failure.
░░ 
░░ The job identifier is 337 and the job result is failed.
May 17 20:41:24 pc-joani /usr/bin/nvidia-powerd[958]: Allocate client failed 89
May 17 20:41:24 pc-joani /usr/bin/nvidia-powerd[958]: Failed to initialize RM Client
May 17 20:41:31 pc-joani kernel: ata2.00: exception Emask 0x10 SAct 0x7ff00 SErr 0x280100 action 0x6 frozen
May 17 20:41:31 pc-joani kernel: ata2.00: irq_stat 0x08000000, interface fatal error
May 17 20:41:31 pc-joani kernel: ata2: SError: { UnrecovData 10B8B BadCRC }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/70:40:90:e7:ec/05:00:0a:00:00/40 tag 8 ncq dma 712704 in
                                          res 40/00:ff:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/50:48:c8:dc:66/00:00:07:00:00/40 tag 9 ncq dma 40960 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/28:50:68:df:66/01:00:07:00:00/40 tag 10 ncq dma 151552 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/78:58:90:cf:6a/01:00:07:00:00/40 tag 11 ncq dma 192512 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/60:60:c0:e1:70/01:00:07:00:00/40 tag 12 ncq dma 180224 in
                                          res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/00:68:90:fe:ec/04:00:0a:00:00/40 tag 13 ncq dma 524288 in
                                          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/30:70:d0:38:66/00:00:07:00:00/40 tag 14 ncq dma 24576 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/b8:78:48:3b:66/02:00:07:00:00/40 tag 15 ncq dma 356352 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/b8:80:00:3e:66/00:00:07:00:00/40 tag 16 ncq dma 94208 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/68:88:90:e0:66/00:00:07:00:00/40 tag 17 ncq dma 53248 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:41:31 pc-joani kernel: ata2.00: cmd 60/18:90:78:9d:7f/01:00:07:00:00/40 tag 18 ncq dma 143360 in
                                          res 40/00:01:00:4f:c2/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:41:31 pc-joani kernel: ata2.00: status: { DRDY }
May 17 20:41:31 pc-joani kernel: I/O error, dev sdb, sector 183297936 op 0x0:(READ) flags 0x80700 phys_seg 11 prio class 2
May 17 20:41:31 pc-joani kernel: I/O error, dev sdb, sector 183303824 op 0x0:(READ) flags 0x80700 phys_seg 8 prio class 2
May 17 20:41:33 pc-joani dbus-broker-launch[1692]: Invalid D-Bus name 'hyprpolkitagent' in service file '/usr/share//dbus-1/services/hyprpolkitagent.service'
░░ Subject: Invalid service file
░░ Defined-By: dbus-broker
░░ Support: https://groups.google.com/forum/#!forum/bus1-devel
░░ 
░░ A service file is a ini-type configuration file.
░░ 
░░ It has one required section
░░ named [D-BUS Service]. The section contains the required key 'Name', which
░░ must be a valid D-Bus name that is unique across all service files. It also
░░ contains at least one of the two optional keys 'SystemdService' and 'Exec',
░░ as well as optionally the key 'User'. Exec must be a valid shell command and
░░ User must be a valid user on the system.
░░ 
░░ A service file should be named after the D-Bus name it configures. That is
░░ a file containing Name=org.foo.bar1 should be named org.foo.bar1.service.
░░ For backwards compatibility, we only warn when files do not follow this
░░ convention when run as a user bus. The system bus considers this an error
░░ and ignores the service file.
May 17 20:42:01 pc-joani kernel: ata2.00: exception Emask 0x10 SAct 0x1 SErr 0x280100 action 0x6 frozen
May 17 20:42:01 pc-joani kernel: ata2.00: irq_stat 0x08000000, interface fatal error
May 17 20:42:01 pc-joani kernel: ata2: SError: { UnrecovData 10B8B BadCRC }
May 17 20:42:01 pc-joani kernel: ata2.00: failed command: READ FPDMA QUEUED
May 17 20:42:01 pc-joani kernel: ata2.00: cmd 60/50:00:10:b1:25/06:00:01:00:00/40 tag 0 ncq dma 827392 in
                                          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
May 17 20:42:01 pc-joani kernel: ata2.00: status: { DRDY }

EDIT: Disabling Secure Boot solved all these issues in Fedora 42, so I may keep it disabled if there’s no other way of making it work. Would still prefer a way of making everything work while it’s enabled though, but that’s mostly off topic here.

What does sudo os-prober report?
It should be able to find the Windows 11 install.

This looks like a failing disk or bad cabling issue.

What is the output of sudo smartctl -x /dev/<disk>?
The counter may provide evidence of drive health.

sudo os-prober seemingly finds the Windows 11 install just fine;

/dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

As for the output of sudo smartctl -x /dev/sdb, in case it may be relevant:

smartctl 7.5 2025-04-30 r5714 [x86_64-linux-6.14.6-300.fc42.x86_64] (local build)
Copyright (C) 2002-25, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron Client SSDs
Device Model:     CT240BX500SSD1
Serial Number:    2011E3F08F8A
LU WWN Device Id: 0 000000 000000000
Firmware Version: M6CR013
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.5/5706
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue May 20 15:45:55 2025 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
AAM feature is:   Unavailable
APM level is:     254 (maximum performance)
Rd look-ahead is: Enabled
Write cache is:   Enabled
DSN feature is:   Unavailable
ATA Security is:  Disabled, frozen [SEC2]

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(  120) seconds.
Offline data collection
capabilities: 			(0x11) SMART execute Offline immediate.
					No Auto Offline data collection support.
					Suspend Offline collection upon new
					command.
					No Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					No Selective Self-test supported.
SMART capabilities:            (0x0002)	Does not save SMART data before
					entering power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	(   2) minutes.
Extended self-test routine
recommended polling time: 	(  10) minutes.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     POSR-K   100   100   050    -    0
  5 Reallocate_NAND_Blk_Cnt -O--CK   100   100   010    -    0
  9 Power_On_Hours          -O--CK   100   100   050    -    6805
 12 Power_Cycle_Count       -O--CK   100   100   050    -    3337
171 Program_Fail_Count      -O--CK   100   100   050    -    0
172 Erase_Fail_Count        -O--CK   100   100   050    -    0
173 Ave_Block-Erase_Count   -O--CK   100   100   050    -    384
174 Unexpect_Power_Loss_Ct  -O--CK   100   100   050    -    334
180 Unused_Reserve_NAND_Blk -O--CK   100   100   050    -    100
183 SATA_Interfac_Downshift -O--CK   100   100   050    -    0
184 Error_Correction_Count  -O--CK   100   100   050    -    0
187 Reported_Uncorrect      -O--CK   100   100   050    -    0
194 Temperature_Celsius     -O---K   064   030   050    Past 36 (Min/Max 22/70)
196 Reallocated_Event_Count -O--CK   100   100   050    -    0
197 Current_Pending_ECC_Cnt -O--CK   100   100   050    -    0
198 Offline_Uncorrectable   ----CK   100   100   050    -    0
199 UDMA_CRC_Error_Count    -O--CK   100   100   050    -    0
202 Percent_Lifetime_Remain ----CK   075   075   001    -    75
206 Write_Error_Rate        -OSR-K   100   100   050    -    0
210 Success_RAIN_Recov_Cnt  -O--CK   100   100   050    -    0
246 Total_LBAs_Written      -O--CK   100   100   050    -    111588456123
247 Host_Program_Page_Count -O--CK   100   100   050    -    3487139253
248 FTL_Program_Page_Count  -O--CK   100   100   050    -    4444377504
                            ||||||_ K auto-keep
                            |||||__ C event count
                            ||||___ R error rate
                            |||____ S speed/performance
                            ||_____ O updated online
                            |______ P prefailure warning

General Purpose Log Directory Version 1
SMART           Log Directory Version 1 [multi-sector log support]
Address    Access  R/W   Size  Description
0x00       GPL,SL  R/O      1  Log Directory
0x01           SL  R/O      1  Summary SMART error log
0x02           SL  R/O      1  Comprehensive SMART error log
0x03       GPL     R/O      1  Ext. Comprehensive SMART error log
0x04       GPL,SL  R/O      8  Device Statistics log
0x06           SL  R/O      1  SMART self-test log
0x07       GPL     R/O      1  Extended self-test log
0x10       GPL     R/O      1  NCQ Command Error log
0x11       GPL     R/O      1  SATA Phy Event Counters log
0x24       GPL     R/O     88  Current Device Internal Status Data log
0x25       GPL     R/O     32  Saved Device Internal Status Data log
0x30       GPL,SL  R/O      9  IDENTIFY DEVICE data log
0x80-0x9f  GPL,SL  R/W     16  Host vendor specific log

SMART Extended Comprehensive Error Log Version: 1 (1 sectors)
Invalid Error Log index = 0x0000 (reserved = 0x00)
Device Error Count: 12 (possibly also invalid)

SMART Extended Self-test Log Version: 1 (1 sectors)
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

Selective Self-tests/Logging not supported

SCT Commands not supported

Device Statistics (GP Log 0x04)
Page  Offset Size        Value Flags Description
0x01  =====  =               =  ===  == General Statistics (rev 1) ==
0x01  0x008  4            3337  ---  Lifetime Power-On Resets
0x01  0x010  4            6805  ---  Power-on Hours
0x01  0x018  6      4214273723  ---  Logical Sectors Written
0x01  0x020  6       864836263  ---  Number of Write Commands
0x01  0x028  6       174176722  ---  Logical Sectors Read
0x01  0x030  6      1004445578  ---  Number of Read Commands
0x07  =====  =               =  ===  == Solid State Device Statistics (rev 1) ==
0x07  0x008  1              64  ---  Percentage Used Endurance Indicator
                                |||_ C monitored condition met
                                ||__ D supports DSN
                                |___ N normalized value

Pending Defects log (GP Log 0x0c) not supported

SATA Phy Event Counters (GP Log 0x11)
ID      Size     Value  Description
0x0001  4            0  Command failed due to ICRC error
0x0002  4            0  R_ERR response for data FIS
0x0005  4            0  R_ERR response for non-data FIS
0x000a  4            2  Device-to-host register FISes sent due to a COMRESET

I don’t see anything to worry about in the smart data.

It would be worth checking that cables to the SSD are making good connections. I would unplug the cables and then plug them back in that can clean up pins on the connectors.

Is grub installed on sda or sdb?
I wonder if the issue to do with where the boot code pieces are installed.

Checking the cabling actually made me discover a SATA cable connected at a concerning angle, so I changed the routing. I tried regenerating the GRUB2 config just in case and it unsurprisingly didn’t do anything by itself, though.
I also forgot to mention that Windows 11 boots just fine through boot override in the UEFI BIOS menu, it’s just not showing up in GRUB2.


sda is my Windows drive, sdb is my Linux drive. I installed GRUB2 to sdb as far as I’m aware. Maybe it is possible it has something to do with things getting installed to the wrong places when I ran dnf install grub2-efi shim? I’m not sure how to double check though…