manjaro+Windows双系统,grub显示Windows但不能引导

我有两个固态,分别装着Windows和manjaro。现在的问题是在开机默认启动的grub里显示Windows然而不能引导,点一下就黑一下屏,然后就无事发生了。还有UEFI菜单里进入grub却两个都能引导,这是什么原因,新人求教。

此前我其实已经成功过了,但是听说refind比较高级就想试试,然后就成现在这样了 :upside_down_face: 之后我把两个系统都重装了一遍,然而并没有用

所以到底是grub还是refind呢?bootctl命令的输出看看?

现在是懒得搞refind了,下面是输出

System:
      Firmware: n/a (n/a)
 Firmware Arch: x64
   Secure Boot: disabled
  TPM2 Support: yes
  Measured UKI: no
   Measured OS: no
  Boot into FW: supported
 Platform Lang: zh_CN.UTF-8

Current Boot Loader:
        Product: GRUB 2.14
       Features: ✗ Boot counting
                 ✗ Menu timeout control
                 ✗ One-shot menu timeout control
                 ✗ Default entry control
                 ✗ One-shot entry control
                 ✗ Support for XBOOTLDR partition
                 ✗ Support for passing random seed to OS
                 ✗ Load drop-in drivers
                 ✗ Support Type #1 sort-key field
                 ✗ Support @saved pseudo-entry
                 ✗ Support Type #1 devicetree field
                 ✗ Enroll SecureBoot keys
                 ✗ Retain SHIM protocols
                 ✗ Menu can be disabled

后边应该还有?

额,确实,第一次见这种输出,不知道能往下翻...

System:
      Firmware: n/a (n/a)
 Firmware Arch: x64
   Secure Boot: disabled
  TPM2 Support: yes
  Measured UKI: no
   Measured OS: no
  Boot into FW: supported
 Platform Lang: zh_CN.UTF-8

Current Boot Loader:
        Product: GRUB 2.14
       Features: ✗ Boot counting
                 ✗ Menu timeout control
                 ✗ One-shot menu timeout control
                 ✗ Default entry control
                 ✗ One-shot entry control
                 ✗ Support for XBOOTLDR partition
                 ✗ Support for passing random seed to OS
                 ✗ Load drop-in drivers
                 ✗ Support Type #1 sort-key field
                 ✗ Support @saved pseudo-entry
                 ✗ Support Type #1 devicetree field
                 ✗ Enroll SecureBoot keys
                 ✗ Retain SHIM protocols
                 ✗ Menu can be disabled
                 ✗ Multi-Profile UKIs are supported
                 ✗ Loader reports network boot URL
                 ✗ Support Type #1 uki field
                 ✗ Support Type #1 uki-url field
                 ✗ Loader reports active TPM2 PCR banks
                 ✗ Loader reports firmware keyboard layout
lines 1-33/63 55%
✗ Loader measures SMBIOS information
      Partition: /dev/disk/by-partuuid/afeee102-2730-4b2c-8a11-4c7992d1bc6c

Random Seed:
 System Token: not set
       Exists: no

Available Boot Loaders on ESP:
          ESP: /boot/efi (/dev/disk/by-partuuid/afeee102-2730-4b2c-8a11-4c7992d1bc6c)
         File: └─/boot/efi//EFI/BOOT/bootx64.efi

Boot Loaders Listed in EFI Variables:
        Title: Manjaro
           ID: 0x0002
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/afeee102-2730-4b2c-8a11-4c7992d1bc6c
         File: └─/boot/efi//EFI/Manjaro/grubx64.efi

        Title: Windows Boot Manager
           ID: 0x0001
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/d022db68-90ca-42c6-bfa5-7de13e6264b3
         File: └─/boot/efi//EFI/Microsoft/Boot/bootmgfw.efi

Boot Loader Entry Locations:
          ESP: /boot/efi (/dev/disk/by-partuuid/afeee102-2730-4b2c-8a11-4c7992d1bc6c, $BOOT)
       config: /boot/efi//loader/loader.conf: 没有那个文件或目录
        token: manjaro

0 entries, no entry could be determined as default.

你进入的应该是主板的启动菜单(Boot menu),不是grub。

看看/boot/efi/grub/grub.cfg文件的内容?

[ 目录“/boot/efi/grub”不存在 ]
我可以确定我进的是grub,我是在boot menu里点击UEFI-manjaro这个选项进入了grub,这个grub是两个系统都能正常进的(至少这俩界面是一样的,也都标注自己是grub了,我应该不能认错

诶?但是你看上去只有一个grub啊,难道bootctl的输出不可靠?那你看看efibootmgr的输出。

另外你知道你的grub.cfg在哪里吗?也看看。

然后lsblk -o+FSTYPE,FSSIZE,PARTLABEL,LABEL,UUID,PARTTYPENAME看看你是不是有多个ESP。

efibootmgr如下

BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0001,0004,0007,0005,0006,0008
Boot0001* Windows Boot Manager  HD(1,GPT,d022db68-90ca-42c6-bfa5-7de13e6264b3,0x800,0x64000)/\EFI\Microsoft\Boot\bootmgfw.efi57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000000000100000010000000040000007fff04000400000049535048
Boot0002* Manjaro       HD(3,GPT,afeee102-2730-4b2c-8a11-4c7992d1bc6c,0x800,0xfa000)/\EFI\Manjaro\grubx64.efi0400000049535048
Boot0004* Wi-Fi IPV4 Network    PciRoot(0x0)/Pci(0x14,0x3)/MAC(58ce2ae5dbca,1)/Wi-Fi(00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00)/IPv4(0.0.0.0,0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0)4eac0881119f594d850ee21a522c59b20000000049535048
Boot0005* Wi-Fi IPV6 Network    PciRoot(0x0)/Pci(0x14,0x3)/MAC(58ce2ae5dbca,1)/Wi-Fi(00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00)/IPv6([::],0,Static,[::],[::],64)4eac0881119f594d850ee21a522c59b20000000049535048
Boot0006* IPV4 Network - Realtek PCIe GBE Family Controller     PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(5c60badbe807,0)/IPv4(0.0.0.0,0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0)4eac0881119f594d850ee21a522c59b20000000049535048
Boot0007* IPV6 Network - Realtek PCIe GBE Family Controller     PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(5c60badbe807,0)/IPv6([::],0,Static,[::],[::],64)4eac0881119f594d850ee21a522c59b20000000049535048
Boot0008* Kingston DataTraveler 3.0 60A44C3FAC2DB35119990034    PciRoot(0x0)/Pci(0x14,0x0)/USB(12,0)4eac0881119f594d850ee21a522c59b20980010049535048
Boot000C  USB NETWORK BOOT:     PciRoot(0x0)/Pci(0x0,0x0)/IPv4(0.0.0.0,0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0)4eac0881119f594d850ee21a522c59b21b08020049535048
Boot000D  USB NETWORK BOOT:     PciRoot(0x0)/Pci(0x0,0x0)/IPv6([::],0,Static,[::],[::],0)4eac0881119f594d850ee21a522c59b21b10020049535048

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 [ "${env_block}" ] ; then
  set env_block="(${root})${env_block}"
  export env_block
  load_env -f "${env_block}"
fi

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   if [ "${env_block}" ] ; then
     save_env -f "${env_block}" next_entry
   else
     save_env next_entry
   fi
   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}"
    if [ "${env_block}" ] ; then
      save_env -f "${env_block}" saved_entry
    else
      save_env saved_entry
    fi

  fi
}

function load_video {
  if [ x$grub_platform = xefi ]; then
    insmod efi_gop
    insmod efi_uga
  elif [ 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=light-gray/black
set menu_color_highlight=green/black

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root d5c7056b-cbd1-4806-84aa-dd6f76285ce7
    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=zh_CN
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root d5c7056b-cbd1-4806-84aa-dd6f76285ce7
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=hidden
  set timeout=5
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 5 ; then
  set timeout=0
fi
### 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-d5c7056b-cbd1-4806-84aa-dd6f76285ce7' {
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        search --no-floppy --fs-uuid --set=root d5c7056b-cbd1-4806-84aa-dd6f76285ce7
        linux   /boot/vmlinuz-6.18-x86_64 root=UUID=d5c7056b-cbd1-4806-84aa-dd6f76285ce7 rw  quiet splash udev.log_priority=3
        initrd  /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-6.18-x86_64.img
}
submenu 'Manjaro Linux 的高级选项' $menuentry_id_option 'gnulinux-advanced-d5c7056b-cbd1-4806-84aa-dd6f76285ce7' {
        menuentry 'Manjaro Linux (Kernel: 6.18.39-1-MANJARO x64)' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.18.39-1-MANJARO x64-advanced-d5c7056b-cbd1-4806-84aa-dd6f76285ce7' {
        savedefault
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod ext2
                search --no-floppy --fs-uuid --set=root d5c7056b-cbd1-4806-84aa-dd6f76285ce7
                linux   /boot/vmlinuz-6.18-x86_64 root=UUID=d5c7056b-cbd1-4806-84aa-dd6f76285ce7 rw  quiet splash udev.log_priority=3
                initrd  /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-6.18-x86_64.img
        }
}

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

### BEGIN /etc/grub.d/15_ostree ###
### END /etc/grub.d/15_ostree ###

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

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
# This menu entry is supported only on EFI platforms.
if [ "$grub_platform" = "efi" ]; then
menuentry 'Windows Boot Manager (位于 /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-94C6-5D83' {
        savedefault
        insmod part_gpt
        insmod fat
        search --no-floppy --fs-uuid --set=root 94C6-5D83
        chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
fi
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
        menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
                fwsetup
                }
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/35_fwupd ###
### END /etc/grub.d/35_fwupd ###

### 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/41_snapshots-btrfs ###
### END /etc/grub.d/41_snapshots-btrfs ###

### 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  d5c7056b-cbd1-4806-84aa-dd6f76285ce7
        linux16 /boot/memtest86+/memtest.bin 
    }
fi
### END /etc/grub.d/60_memtest86+ ###

### BEGIN /etc/grub.d/60_memtest86+-efi ###
if [ "${grub_platform}" == "efi" ]; then
    menuentry "Memory Tester (memtest86+)" --class memtest86 --class gnu --class tool {
        if loadfont unicode ; then
            set gfxmode=1024x768,800x600,auto
            set gfxpayload=800x600,1024x768
            terminal_output gfxterm
        fi
        search --fs-uuid --no-floppy --set=root  d5c7056b-cbd1-4806-84aa-dd6f76285ce7
        linux /boot/memtest86+/memtest.efi 
    }
fi
### END /etc/grub.d/60_memtest86+-efi ###

这是lsblk的输出

NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS FSTYPE FSSIZE PARTLABEL                    LABEL                  UUID                                 PARTTYPENAME
sda    8:0    1  28.9G  0 disk                                                                                                                    
├─sda1
│      8:1    1  28.9G  0 part             exfat         Ventoy                       Ventoy                 B8EA-82F7                            Microsoft basic data
└─sda2
       8:2    1    32M  0 part             vfat          VTOYEFI                      VTOYEFI                7F97-3D1F                            Microsoft basic data
nvme1n1
│    259:0    0 476.9G  0 disk             udf                                        PCHA_X64FREO_ZH-CN_DV9 81c480004d532055                     
├─nvme1n1p1
│    259:1    0   200M  0 part             vfat          Basic data partition                                94C6-5D83                            EFI System
├─nvme1n1p2
│    259:2    0    16M  0 part                           Microsoft reserved partition                                                             Microsoft reserved
├─nvme1n1p3
│    259:3    0 124.3G  0 part             ntfs          Basic data partition                                B45CC6CE5CC68B16                     Microsoft basic data
├─nvme1n1p4
│    259:4    0 351.6G  0 part             ntfs          Basic data partition         新加卷                 0616E8E116E8D2AB                     Microsoft basic data
└─nvme1n1p5
     259:5    0   841M  0 part             ntfs                                                              A2CE6BD4CE6B9F73                     Windows recovery environment
nvme0n1
│    259:6    0 238.5G  0 disk                                                                                                                    
├─nvme0n1p1
│    259:7    0    84G  0 part /           ext4    82.1G                                                     d5c7056b-cbd1-4806-84aa-dd6f76285ce7 Linux filesystem
├─nvme0n1p2
│    259:8    0   154G  0 part /home       ext4   150.5G                                                     b690bc49-5fef-4ef4-93c5-d98f3d4f9978 Linux filesystem
└─nvme0n1p3
     259:9    0   500M  0 part /boot/efi   vfat     499M                                                     422B-355E                            EFI System

你有两个ESP:一个Manjaro的,一个Windows的,分别位于两块硬盘上。这本身没什么问题。

这里还有一个位于默认位置的引导项,和你的「Manjaro」引导项位于同一个ESP上,但是是另外的文件。

推测这个bootx64.efi也是grub的,但是和当前安装到ESP的grub版本不匹配,从而引导出现问题。建议删掉这个文件,改成UEFI变量里写的那个grub;负面影响是这块硬盘插到机器上之后不能直接引导、需要写入UEFI变量。不是移动硬盘的话无所谓。

没有使情况变得更好,目前状况与操作前完全相同,不清楚是否是我操作的问题

大不了把引导什么删掉重装

确实,但我已经重装两边了。每次都是先win后manjaro,但是不清楚什么原因,此前成功过一次,但现在还是这样

这个好像表述的不太清楚,”然而没有用“指的是我整refind又把系统整坏之后又重装了一遍系统,然后还是坏着

补充一个信息,不能进win的那个grub连命令行都打不开

啊,不应该把引导分区抹掉,再重装grub。重装系统?

症状对得上。你找到所有的bootx64.efi并把它删掉吧。

感谢建议,但好像不是因为这个。刚刚把快速引导关了,然后就一切正常了。碰碰运气结果真碰对了。。。 :sweat_smile: