今天我在笔记本电脑上安装了 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 模式行仅包含。这真的很好!Run
EnterSystem Infomation
System Summary
BIOS MODE
Legacy
legacy
UEFI
UEFI
UEFI
步骤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 引导加载程序相对应的disk
和partition
数字,重新启动并按“shift”键进入 GRUB 菜单。grub >
按 进入命令行c
,并给出以下命令:
grub > ls
但没有任何输出。因此,猜测 Windows 加载程序的disk
和数字分别为和,这是准备工作所需的。partition
0
2
menuentry
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
命令的上述输出?
发出以下命令
(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
代表分区,分别为efi
、swap
、/
、/usr
、/opt
、/tmp
和。/var
/home
- 现在,发出以下命令
(hd1)
:
grub > ls (hd1)
其输出为:
Device hd1: No known file system detected - Search size 2048 B - Total size 514 KiB.
- 现在,发出以下命令
(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 分区unknown
、CodeWrite
和。ShareMe
Warehouse
- 现在,发出以下命令
(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)
gpt1
gpt4
EFI
unknown
WindowsOS
WinRE
步骤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
会话中出席才能完成待处理的任务,即删除extraneous
BIOS 设置屏幕中的引导加载程序。