我正在尝试将 Ubuntu 20.04 作为双启动安装到预装了 Windows 10 的 Toshiba Dynabook Satellite Pro L50-G-182 上。我使用 Ubuntu live USB 棒将 Ubuntu 安装到 SSD 的最后一部分。图片显示了磁盘布局(从 USB live 棒启动时截取的屏幕截图):
安装 Ubuntu 后,当我重新启动时,Windows 自动启动,而 grub/Ubuntu 未出现。我没能修复这个问题。
这里有很多关于这个主题的帖子和文章,但是都没有帮助。以下是我尝试修复此问题的简短版本。
我检查了 UEFI/BIOS。没有关于 grub 或 Ubuntu 的任何信息。
我尝试通过以下方式修复 Windows 的双启动BCD编辑:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
我尝试使用 Boot-Repair 来修复启动顺序。
我尝试更改启动顺序。因此,我从 Ubuntu Live USB 启动。以下是输出
efibootmgr
:BootCurrent: 0005 Timeout: 5 seconds BootOrder: 2004,0005,2005,2001,2003 Boot0000* Linpus lite Boot0001* ubuntu Boot0002* EFI PXE 0 for IPv4 (7C-D3-0A-90-C7-AB) Boot0003* EFI PXE 0 for IPv6 (7C-D3-0A-90-C7-AB) Boot0004* Windows Boot Manager Boot0005* Linpus lite Boot2001* EFI USB Device Boot2004* EFI Network Boot2004* HDD1/SSD1 Boot2005* HDD2/SSD2
该ubuntu
条目可能是 USB 记忆棒?看来我的 Ubuntu 分区不可见。这是带有详细输出的终端图片:
- 我复制“Windows 启动管理器”的 UEFI 条目为 Ubuntu 创建新条目。
BIOS,Boot 选项卡(按 F2 键访问)e:
安全选项卡:
“安全”选项卡 >“三星”... 如下所示:
“高级”选项卡如下所示:
高级选项卡 -> 系统配置:
启动管理器(按 F12 键访问):
EFI 系统分区:
- 以下是当前文件夹结构(2021 年 1 月 13 日)的样子,屏幕截图取自正在加载的 Boot Repair USB 实时棒:
一切都不同了。我正要恢复机器的第一个完整磁盘备份。我偶然选择了另一台运行 Ubuntu 的机器的备份。令我大吃一惊的是 - 当我在克隆过程完成后重新启动机器时 - Grub 出现了,Ubuntu 启动没有任何问题。
之后,我将旧版 Ubuntu 安装更新为当前版本,这就是我现在正在运行的版本。是的,我丢失了 Windows 安装,但我仍然保留原始备份以防万一。
答案1
我建议格式化整个磁盘,进入 BIOS 并禁用“安全启动”或其中的某些选项,这样可以防止安装和/或启动任何不在 NTFS(Windows 文件系统)上的操作系统。通过禁用该选项,您可以安装 GRUB,它是 Linux 的启动管理器。然后,在禁用“安全启动”后,您可以继续将磁盘分区为两个分区,一个用于 Linux,另一个用于 Windows,然后安装 Windows,请注意 Windows 将尝试使用整个磁盘,因此您需要在询问时选择“自定义安装”并告诉它使用其中一个分区,正常安装 Windows。然后,从装有 Linux 的 USB 启动,如果它检测到您已安装 Windows 10,它将自动选择可用分区作为安装分区并节省您的工作(这就是您首先安装 Windows 的原因)但是,如果它没有检测到并安装 Windows 10,请选择“手动分区”并选择您创建的可用分区,使用自动分区程序并继续安装 Linux,但请注意不要选择任何 Windows 分区,否则您将放弃 Windows 安装。Linux 将正常安装,然后询问您是否要在主引导扇区上安装 Grub,请回答是并让它执行操作。然后移除安装 USB 并重新启动 PC。它将向您显示一个启动选项列表,选择您要启动的内容,然后瞧,您拥有双启动的 Win10 和 Linux。如果您想更改默认启动选项,请阅读这
答案2
我经常这样做,我建议换个方向。Windows 引导加载程序根本不适合你用另一个操作系统加载它。你可以让它工作,但使用 GRUB 到 Windows 要容易得多。你白白花了这么多时间。
因此,您应该直接在主驱动器上安装干净的 Ubuntu(从而擦除窗口)
只需按照以下步骤操作即可:
备份 Windows 中的重要文件或进行完整的系统映像备份。
准备一个与你的 Windows 版本完全相同的 Windows 安装程序映像(许可证将通过 MOBO 自动检测)
再次准备 Ubuntu USB 安装程序
关闭安全启动(BIOS 中没有 GRUB 这个东西,这只是一个 UNIX 术语,不要试图寻找它。)然后关闭安全启动。暂时禁用 TPM(可信平台模块)。如果这些设置确实都没有,它仍然可以正常工作。
问题不在于操作系统无法启动,问题只是在于 Windows 拒绝检测它。
- 正常安装 Ubuntu 版本 XX 并使用主完整驱动器,您可能应该删除您在此处创建的所有分区并仅从干净的驱动器开始并仅安装 ubuntu。从主驱动器中删除所有与 Windows 或 ubuntu 相关的内容。
6.完成安装,移除 Ubuntu USB,然后快速执行 apt-get 更新和升级,以使最基本的内容井然有序。再次重启。
- 例如,在 Ubuntu gparted 中为 Windows 的空间创建一个分区,查找有关如何执行此操作的指南,因为该说明太长,但并不难。(就我个人而言,如果可能的话,我会尝试安装或使用另一个驱动器。)仔细检查分区是否正常。
8 现在插入 Windows USB,您的 Linux 将无法识别它,这没关系。
9.重新启动。选择从 Windows USB 启动或再次更改顺序。
启动 Windows 安装,然后选择分区。
完成安装并让它创建您的本地用户配置文件等。
重新启动电脑,如果您保持顺序相同,则如果在不同的驱动器上,现在更改为 Ubuntu。否则很可能它现在只会启动到 ubuntu,因为这是您可以选择的驱动器。
修改 GRUB 条目
查看 Windows 10 分区的 UUID,例如:
sudo blkid /dev/sda2
然后编辑/etc/grub.d/40_custom
,并在文件末尾添加:
menuentry "Windows 10" --class windows --class os {
insmod ntfs
search --no-floppy --set=root --fs-uuid $your_uuid_here$
ntldr /bootmgr
}
不要忘记更改 UUID。
最后更新你的 grub 配置文件:
sudo update-grub
此 KBA 引用:将 Windows 10 添加到 GRUB OS 列表
- 现在您有几种不同的启动方法可供选择。
即时 Ubuntu、即时 Windows 或延迟启动,或者在 grub 菜单上暂停以提示您做出选择。这可以通过手动编辑 grub 文件或使用 Ubuntu 中的 grub 编辑器应用程序来完成。
希望这对您有用。分区有点棘手(而且可怕),但并非不可能。不过……也许您可以买一个大容量的 USB 棒 :P。
答案3
@JJD - 我已经经历过几次了...这是最适合我的方法,假设你试图在日常使用中远离 Windows。
这是我所做的:
- 使用 Windows 工具从现有 Windows 安装创建 VM。显然,VM 将包含所有已安装的软件 - 但它也会保留所有垃圾和无用的东西,因此我建议在创建 VM 之前进行清理。
- UEFI 启动会产生各种问题,您不想浪费时间(我知道这可能会引起轩然大波)。因此,只需在 BIOS 设置中将其关闭,然后使用“传统启动”即可。
- 在系统上执行 Ubuntu 的全新安装(确保在单独的存储上保留旧 Windows 系统的 VM 的副本!) - “清理”的意思是清除系统上所有现有分区 - 在执行此操作之前,请确保您有备份!
- 每当我需要时,我都会使用本机 QEMU 来启动 Windows VM。目前只有两种用例 (a) 使用 Linux 上没有的 Windows 工具进行所得税准备和 (b) 在旧的 Windows 安装中查找内容 - 我至少有一年没有碰过它了。当然,任何虚拟化 GUI 工具也可以正常工作。
希望这有帮助 -mgw
答案4
列出 /boot/efi 的内容。如果找不到,则说明您已将 Ubuntu 安装为 Legacy,然后将其关闭。您可能需要重新安装它。