Windows 10 未出现在 GRUB 中

Windows 10 未出现在 GRUB 中

今天我在笔记本电脑上安装了 Ubuntu 18.04,我通过 liveUSB 安装它,并且它与 Win 10 一起双启动。当我重新启动计算机并且 grub 出现时,没有 Win 10 选项。我尝试了很多在线方法,启动修复,我试过了

sudo update-grub

sudo os-prober

,但它什么都没显示。当你询问时,我会提供进一步的详细信息,但请记住,我是 Ubuntu 的初学者。谢谢。

编辑:当我输入时,SecureBoot 被禁用(这是命令的输出mokutil --sb-state

ls /sys/firmware/efi/

表明

config_table  efivars  esrt  fw_platform_size  fw_vendor  runtime  runtime-map  systab  vars

我认为我没有以传统模式安装 Ubuntu,我之前检查过,但我不确定如何再次检查它以确保无误。

编辑2:命令的结果cat /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

GRUB_TIMEOUT_STYLE=行已被我更改,原始值是hidden,我将其更改以便 GRUB 始终会在重启时出现,在此之前它甚至没有出现。

答案1

步骤1

经确认提问者@kihit0mi的Ubuntu安装已经EFI boot loader通过以下命令:

$ ls /sys/firmware/efi/

其输出为:

config_table  efivars  esrt  fw_platform_size  fw_vendor  runtime  runtime-map  systab  vars

第2步

以下命令没有产生任何输出:

$ sudo os-prober

步骤3

发出以下命令来生成GRUB menu

$ sudo update-grub

系统重新启动,并尝试通过shift命令进入 GRUB 菜单。但结果发现,它并没有进入 GRUB 菜单,而是进入了 Ubuntu 的登录屏幕!

步骤4

要进入 Windows 登录屏幕,唯一的方法是通过BIOS setup屏幕。系统重新启动,然后BIOS setup通过del按键进入屏幕。观察到存在three引导加载程序,列表如下:

Ubuntu
Windows Boot Manager and 
EFI PXE.

设置成Windows Boot Manager最高优先级之后,Windows-10就登录成功了!

步骤5

登录 Windows 10。按Windows+R键,在对话框msinfo32.exe中输入,然后按打开窗口。在 的右侧窗格中,您应该看到该行。如果 BIOS MODE 的值为,则 Windows 以 模式启动。如果 BIOS MODE 的值为,则 Windows 以 模式启动。提问者 @kihit0mi 确认 BIOS 模式行仅包含。这真的很好!RunEnterSystem InfomationSystem SummaryBIOS MODELegacylegacyUEFIUEFIUEFI

步骤6

接下来,固件 BIOS 已更新至最新版本。请参阅如何检查当前 BIOS 版本并更新

再次给出以下命令来生成GRUB menu

$ sudo update-grub

GRUB menu系统重新启动,并尝试通过命令进行访问shift。很高兴看到这次GRUB menu访问成功,但是未发现Windows-10的存在!

步骤7

决定将一个能够生成 Windows 条目的文件放入 GRUB 菜单menuentry/etc/grub.d/40_custom。为了找出与 Windows 引导加载程序相对应的diskpartition数字,重新启动并按“shift”键进入 GRUB 菜单。grub >按 进入命令行c,并给出以下命令:

grub > ls

但没有任何输出。因此,猜测 Windows 加载程序的disk和数字分别为和,这是准备工作所需的。partition02menuentry

menuentry "Windows" {
    set root=(hd0,2)
    chainloader +1
}

menuentry在文件中创建上述内容后/etc/grub.d/40_custom,发出以下命令使脚本40_custom文件可执行:

$ sudo chmod +x /etc/grub.d/40_custom

使用以下命令生成 GRUB 菜单:

$ sudo update-grub

系统重新启动,GRUB menu按下shift键即可进入。这次找到了 Windows 加载程序。但在尝试启动时,出现了以下错误:

The EFI file path is incorrect error

步骤8

我们一次又一次地尝试输入各种磁盘和分区号,但从GRUB 菜单中选择 Windows 引导加载程序后,menuentry都出现了相同的错误消息。the EFI file path is incorrect error

所有这些障碍的发生都是因为提问者@kihit0mi 的笔记本电脑没有响应ls来自 GRUB 菜单命令行的命令:grub > ls

我尝试从桌面的 GRUB 菜单使用命令执行相同操作,grub > ls结果显示以下输出:

(hd0) (hd0.gpt8) (hd0.gpt7) (hd0.gpt6) (hd0.gpt5) (hd0.gpt4) (hd0.gpt3) (hd0.gpt2) (hd0.gpt1) (hd1) (hd2) (hd2,gpt4) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1) (hd3) (hd3,gpt4) (hd3,gpt3) (hd3,gpt2) (hd3,gpt1)

如何解释 GRUBls命令的上述输出?

  1. 发出以下命令(hd0)

    grub > ls (hd0)

其输出为:

    Device hd0: No known file system detected - Search size 512 B - Total size 117220824 KiB.

输出虽然显示为,No known file system但它实际上代表了/dev/sda(查看总大小)。如果您继续探测诸如ls (hd0,gpt8)ls (hd0,gpt7)等等直到ls (hd0,gpt1),它将显示与设备相对应的分区,例如/dev/sda8/dev/sda7等等直到/dev/sda1

上述设备/dev/sda(120 GB SSD)包含我的 Ubuntu 安装,如(hd0)grub 命令行所示。 中gpt1划线gpt8代表分区,分别为efiswap//usr/opt/tmp和。/var/home

  1. 现在,发出以下命令(hd1)

grub > ls (hd1)

其输出为:

    Device hd1: No known file system detected - Search size 2048 B - Total size 514 KiB.
  1. 现在,发出以下命令(hd2)

grub > ls (hd2)

其输出为:

    Device hd2: No known file system detected - Search size 512 B - Total size 976762584 KiB.

虽然输出是No known file system但它确实代表了/dev/sdb(看看总大小)。如果你继续探测,例如ls (hd2,gpt4),等等,直到ls (hd2,gpt1)它显示与设备相对应的分区,例如,/dev/sdb4等等,直到/dev/sdb1

上面的设备是我的 1 TB HDD ,/dev/sdb具有 NTFS 文件系统,在 grub 命令行中显示为(hd2)。gpt1 到 gpt4 分别代表 NTFS 分区unknownCodeWrite和。ShareMeWarehouse

  1. 现在,发出以下命令(hd3)

grub > ls (hd3)

其输出为:

    Device hd3: No known file system detected - Search size 512 B - Total size 244198584 KiB.

虽然输出显示为,No known file system但它确实代表了/dev/sdc(查看总大小)。如果你继续探测,例如ls (hd3,gpt4),等等,直到ls (hd3,gpt1),它将显示与设备相对应的分区,例如,/dev/sdc4等等,直到/dev/sdc1

上面的设备(250 GB SSD)包含我的 Windows-10 安装,在 grub 命令行中/dev/sdc显示为。中划线代表分区 ,分别为、和。(hd3)gpt1gpt4EFIunknownWindowsOSWinRE

步骤9

笔记:提问者@kihit0mi 的 ubuntu:没有输出命令sudo os-probed。请参阅第2步

再次,我尝试sudo os-probed从我的 Ubuntu 终端执行命令,结果显示如下:

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

从上述命令的输出中可以得出一个线索os-probed。为了避免使用反复试验的方法来查找磁盘和分区号,在 中加入了以下搜索字符串/etc/grub.d/40_custom

search --set=root --file /efi/Microsoft/Boot/bootmgfw.efi

笔记:要了解有关 Grub 菜单search命令的更多信息,参考此链接

现在新的menuentry能够自动搜索与windows-10 EFI bootloader对应的磁盘和分区号,如下所示:

menuentry "Windows" {
    search --set=root --file /efi/Microsoft/Boot/bootmgfw.efi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

menuentry在文件中创建上述内容后/etc/grub.d./40_custom,给出以下命令来生成 GRUB 菜单:

$ sudo update-grub

系统已重新启动,GRUB menu按下shift键即可进入。

这次选择了Windows-10 EFI bootloader,并成功启动到Windows-10系统。

步骤10:

尚未完成。

提问者@kihit0mi 需要在chat会话中出席才能完成待处理的任务,即删除extraneousBIOS 设置屏幕中的引导加载程序。

相关内容