Yet another "Windows 10 doesn't show up on GRUB"

I recently got a new NVMe drive (in addition to my first NVMe drive w/ Manjaro installed) and installed Windows 10. I first installed Win10 as MBR, but converted it to GPT. It showed up on GRUB a few times after that but then disappeared. I have disabled FASTBOOT on Windows 10. BIOS has boot security disabled and is set to boot UEFI w/o CSM. If I change the primary partition in BIOS, I can boot either OS just fine, but much rather get GRUB working. I’ve tried doing update-grub a few times to no avail. I looked at as many forum posts as I could but couldn’t find a solution. Any help would be greatly appreciated. Thanks. Outputs are as follows:

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0    61M  1 loop /var/lib/snapd/snap/core20/634
loop1         7:1    0  64.4M  1 loop /var/lib/snapd/snap/gtk-common-themes/1513
loop2         7:2    0 142.5M  1 loop /var/lib/snapd/snap/foobillard-plus/3
loop3         7:3    0 162.9M  1 loop /var/lib/snapd/snap/gnome-3-28-1804/145
loop4         7:4    0  63.5M  1 loop /var/lib/snapd/snap/pomatez/2
loop5         7:5    0  55.4M  1 loop /var/lib/snapd/snap/core18/1932
loop6         7:6    0  97.7M  1 loop /var/lib/snapd/snap/core/10185
loop7         7:7    0  55.3M  1 loop /var/lib/snapd/snap/core18/1885
loop8         7:8    0  64.8M  1 loop /var/lib/snapd/snap/gtk-common-themes/1514
loop9         7:9    0  97.9M  1 loop /var/lib/snapd/snap/core/10444
loop10        7:10   0 507.1M  1 loop /var/lib/snapd/snap/fiduswriter/593
loop11        7:11   0 508.5M  1 loop /var/lib/snapd/snap/fiduswriter/627
sda           8:0    1  29.7G  0 disk 
├─sda1        8:1    1   112M  0 part 
└─sda2        8:2    1  29.6G  0 part 
nvme1n1     259:0    0 476.9G  0 disk 
├─nvme1n1p1 259:1    0   501M  0 part /boot/efi
├─nvme1n1p2 259:2    0    32G  0 part [SWAP]
├─nvme1n1p3 259:3    0 316.6G  0 part /home
└─nvme1n1p4 259:4    0 127.8G  0 part /run/timeshift/backup
nvme0n1     259:5    0 476.9G  0 disk 
├─nvme0n1p1 259:6    0    50M  0 part 
├─nvme0n1p2 259:7    0   300G  0 part /run/media/dudemcbro/C6AE0EAEAE0E9759
├─nvme0n1p3 259:8    0   100M  0 part /run/media/dudemcbro/429D-B2A7
├─nvme0n1p4 259:9    0   561M  0 part 
└─nvme0n1p5 259:10   0 176.2G  0 part /home/dudemcbro/d_drive
sudo parted -l
Model: Mass Storage Device (scsi)
Disk /dev/sda: 31.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      16.8MB  134MB   117MB   primary  fat16        lba
 2      134MB   31.9GB  31.8GB  primary  ext4


Model: SAMSUNG MZVLV512HCJH-000L2 (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  53.5MB  52.4MB  ntfs                  boot, esp
 2      53.5MB  322GB   322GB   ntfs         c_drive  msftdata
 5      322GB   511GB   189GB   ntfs         d_drive  msftdata
 3      511GB   512GB   105MB   fat32                 msftdata
 4      512GB   512GB   588MB   ntfs                  hidden, diag


Model: WDC PC SN530 SDBPNPZ-512G-1032 (nvme)
Disk /dev/nvme1n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      17.4kB  525MB   525MB   fat32                 boot, esp
 2      525MB   34.9GB  34.4GB  linux-swap(v1)        swap
 4      34.9GB  172GB   137GB   ext4
 3      172GB   512GB   340GB   ext4
efibootmgr -v
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0001,0000,000A,000B,0008,0009
Boot0000* manjaro	HD(1,GPT,73ca24d2-5bfc-aa46-8df0-1ad5b36e59bb,0x22,0xfa7de)/File(\EFI\manjaro\grubx64.efi)
Boot0001* Windows Boot Manager	HD(3,GPT,c3758df9-3505-11eb-92ab-dc83b8fa5dcc,0x3b895800,0x32000)/File(\EFI\MANJARO\GRUBX64.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...l................
Boot0008* UEFI: PXE IP4 Realtek PCIe GBE Family Controller	PciRoot(0x0)/Pci(0x1d,0x4)/Pci(0x0,0x0)/MAC(00d861e37da0,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0009* UEFI: PXE IP6 Realtek PCIe GBE Family Controller	PciRoot(0x0)/Pci(0x1d,0x4)/Pci(0x0,0x0)/MAC(00d861e37da0,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot000A* Windows Boot Manager	HD(3,GPT,c3758df9-3505-11eb-92ab-dc83b8fa5dcc,0x3b895800,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)..BO
Boot000B* UEFI: Mass Storage Device 1.00, Partition 1	PciRoot(0x0)/Pci(0x14,0x0)/USB(3,0)/HD(1,MBR,0x2f2091f1,0x8000,0x38000)..BO

Hello @dudemcbro :wink:

So no menu entry has been generated for win10?

Please post also: cat /boot/grub/grub.cfg

What says sudo os-prober ?

You mean the thing where windoze doesnt shut all the way down (and calls it ‘fastboot’ :laughing:) ?
You cant leave that on. And you probably dont want to for a myriad of reasons…

Yet another

Why do people label threads this way?

sudo os-prober returns nothing. It just brings me right back to the prompt. This is new. Earlier today it did return some stuff, but I don’t remember what exactly. Something about Arch Linux I think.

cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

set menu_color_normal=purple/black
set menu_color_highlight=pink/black

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 9ce0d192-74cb-480c-a301-5218e56ae9d2
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 9ce0d192-74cb-480c-a301-5218e56ae9d2
insmod gfxmenu
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_12.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_14.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_16.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_24.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_48.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_bold_16.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/dejavu_sans_mono_12.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-12.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-14.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-16.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-18.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-b12.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-b14.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-b16.pf2
loadfont ($root)/usr/share/grub/themes/manjaro/terminus-b18.pf2
insmod png
set theme=($root)/usr/share/grub/themes/manjaro/theme.txt
export theme
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=4
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=4
fi
play 480 440 1
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Manjaro Linux' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9ce0d192-74cb-480c-a301-5218e56ae9d2' {
	savedefault
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	search --no-floppy --fs-uuid --set=root 9ce0d192-74cb-480c-a301-5218e56ae9d2
	linux	/boot/vmlinuz-5.8-x86_64 root=UUID=9ce0d192-74cb-480c-a301-5218e56ae9d2 rw  quiet apparmor=1 security=apparmor resume=UUID=5b9fd5b9-6a63-41d5-977e-336d40f2ebaf udev.log_priority=3
	initrd	/boot/intel-ucode.img /boot/initramfs-5.8-x86_64.img
}
submenu 'Advanced options for Manjaro Linux' $menuentry_id_option 'gnulinux-advanced-9ce0d192-74cb-480c-a301-5218e56ae9d2' {
	menuentry 'Manjaro Linux (Kernel: 5.8.18-1-MANJARO x64)' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.18-1-MANJARO x64-advanced-9ce0d192-74cb-480c-a301-5218e56ae9d2' {
	savedefault
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod ext2
		search --no-floppy --fs-uuid --set=root 9ce0d192-74cb-480c-a301-5218e56ae9d2
		linux	/boot/vmlinuz-5.8-x86_64 root=UUID=9ce0d192-74cb-480c-a301-5218e56ae9d2 rw  quiet apparmor=1 security=apparmor resume=UUID=5b9fd5b9-6a63-41d5-977e-336d40f2ebaf udev.log_priority=3
		initrd	/boot/intel-ucode.img /boot/initramfs-5.8-x86_64.img
	}
	menuentry 'Manjaro Linux (Kernel: 5.8.18-1-MANJARO x64 - fallback initramfs)' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.18-1-MANJARO x64-fallback-9ce0d192-74cb-480c-a301-5218e56ae9d2' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod ext2
		search --no-floppy --fs-uuid --set=root 9ce0d192-74cb-480c-a301-5218e56ae9d2
		linux	/boot/vmlinuz-5.8-x86_64 root=UUID=9ce0d192-74cb-480c-a301-5218e56ae9d2 rw  quiet apparmor=1 security=apparmor resume=UUID=5b9fd5b9-6a63-41d5-977e-336d40f2ebaf udev.log_priority=3
		initrd	/boot/initramfs-5.8-x86_64-fallback.img
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
	fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/60_memtest86+ ###
if [ "${grub_platform}" == "pc" ]; then
    menuentry "Memory Tester (memtest86+)" --class memtest86 --class gnu --class tool {
        search --fs-uuid --no-floppy --set=root  9ce0d192-74cb-480c-a301-5218e56ae9d2
        linux16 /boot/memtest86+/memtest.bin 
    }
fi
### END /etc/grub.d/60_memtest86+ ###

If your UEFI setup allows you to create a boot menu entry then create one by locating manjaro efi file. Then boot into manjaro and sudo update-grub

So, @dudemcbro, you have 2 efi partition… grub is searching for the *.efi of win10. If the second efi partition is not mounted, then i guess it will not find it by update-grub.

Also it seems that windows has ntfs formated efi partition:

while Manjaro uses fat32:

This is also a reason why is doesn’t find it. I guess you have to convert the windows boot partition to a fat32 efi partition.

That one is wrong, it points to Manjaro:

I would just delete it:

efibootmgr --delete-bootnum 0001

and set the boot order:

efibootmgr --bootorder 0000,000A,0008,0009,000B

In my opinion grub can only find OS’s automatically which uses the same efi partition, otherwise you have to configure the menu entry yourself. I have no idea, how it did work for you before, but that is my experience.

Create a new file in /etc/grub.d/ with a content like this (not a solution, but an example):

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

Good success :wink:

I fixed it! So it turns out that some flags were set wrong in the partitioning scheme. Number 1 was the old boot partition when Windows was in MBR mode. When I converted to GPT, number 3 was created and set as the BOOT and ESP partition. This is probably why Windows showed in GRUB at first. However, those flags were assigned to Number 1 at some point (no clue how) and that is when the troubles started. Once I flagged number 3 as the boot partition, GRUB worked like a charm. Thanks, everyone for your input!

1 Like

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