Azh*_*har 2 linux dual-boot windows bios uefi
我正在尝试在我的 Windows 10 笔记本电脑上安装 Ubuntu 双引导。Windows 10 使用旧版 BIOS 设置。
当我开始安装 Ubuntu 时,我收到一条关于 BIOS 和 UEFI 的警告,其他操作系统无法启动,只有在确定时才继续,等等。但是由于没有提供替代方案(除了简单地放弃和不安装 Linux),我决定继续,发现安装后,GRUB只提供了一个Linux选项。
有没有办法让我再次从 Windows 启动?我不介意卸载 ubuntu
根据警告的确切内容以及您在安装 Ubuntu 时所做的确切选择,安装过程可能会执行以下操作之一:
它可能已将分区从 MBR 转换为 GPT 样式以安装 UEFI 样式,保留(或调整)现有分区的大小。这是最好的选择:您只需要安装一个 UEFI 风格的引导加载程序,然后您就可以返回到 Windows。一旦 Windows UEFI 引导加载程序位于磁盘上,Ubuntu 甚至可能会在您下次运行时自动检测到它sudo update-grub
并将其添加到 GRUB 引导菜单中。
它可能刚刚在 MBR 分区的磁盘上设置了 UEFI 风格的引导加载程序。这是一个问题,因为虽然 Linux 可以做到这一点,但微软表示 Windows 不会支持这种组合。但是,在这种情况下,返回到传统风格的仅 Windows 启动应该是相当容易的。
它可能占用了 Ubuntu 的整个磁盘,因此您的 Windows 安装被覆盖并且不再存在。这是最坏的情况:如果您想要恢复 Windows,您需要完全重新安装它,并且您现有的 Windows 文件将消失。
在 Linux 中,运行sudo fdisk -l /dev/sda
. 如果您的系统磁盘不是/dev/sda
,请将其替换为适当的设备名称。例如,在带有 NVMe SSD 的新系统上,它可能是/dev/nvme0n1
相反的。
输出应该类似于:
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2B05CCE8-92BC-4308-B770-174CE63D044F
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1550335 499712 244M Linux filesystem
<... other partitions listed here...>
Run Code Online (Sandbox Code Playgroud)
如果您的 Linux 版本fdisk
不是太旧,则输出应包含一行说明
Disklabel type: gpt
Run Code Online (Sandbox Code Playgroud)
或者
Disklabel type: mbr
Run Code Online (Sandbox Code Playgroud)
这标识了系统磁盘上当前使用的分区样式。
由于Linux安装程序已经为我们设置了一个UEFI引导加载程序,所以磁盘上也应该有一个EFI系统分区(简称ESP)。在fdisk -l
输出中,Type
列出的是分区,EFI System
其大小通常在 100M 到 512M 之间。在 Linux 中,它可能安装在/boot/efi
. 您可能希望sudo ls -l /boot/efi
使用某个 GUI 文件管理器运行或查看它,以便您识别该分区的内容 - 您将在 Windows 命令提示符下看到它。通常,如果 ESP 安装在/boot/efi
,则应该有一个子目录/boot/efi/EFI/ubuntu
,其中包含 Ubuntu 的实际 UEFI 引导加载程序。
现在,为自己准备一个 Windows 10 安装介质。您不需要许可证代码。从该安装介质启动您的计算机。由于您的 Ubuntu 安装在 UEFI 模式下,您的计算机也可能会自动以 UEFI 模式启动 Windows 安装程序,但如果您看到安装介质的两个启动选项,则只有其中一个选项会在 UEFI 模式下启动它,这就是一个你应该选择。(希望引导菜单会说明哪个是哪个 - 这取决于您系统的 UEFI 固件。)
当 Windows 安装程序在屏幕中间显示带有“立即安装”按钮的初始屏幕时,请选择靠近底部的“修复您的计算机”。
从下一个菜单中,选择“疑难解答”,然后选择“命令提示符”。
现在,输入这些命令:
diskpart
list vol
Run Code Online (Sandbox Code Playgroud)
这应该显示一个分区列表。在“Fs”列中找到具有 FAT32 的分区 - 它应该是您之前在 Linux 中看到的 ESP。记下它的卷号(Volume ###
在最左边的列中)并为其分配一个未使用的驱动器号(如 X:)。例如,如果 ESP 被列为Volume 2
:
sel vol 2
assign letter=x:
Run Code Online (Sandbox Code Playgroud)
DiskPart successfully assigned the drive letter or mount point.
这个时候应该说。然后键入exit
以退出 DiskPart 实用程序。
切换到ESP上的EFI目录:
cd /d x:\EFI
dir
Run Code Online (Sandbox Code Playgroud)
如果您看到该ubuntu
目录,那么您来对地方了。
现在为 Windows UEFI 引导加载程序创建一个或两个目录:
mkdir Microsoft
cd Microsoft
mkdir Boot
cd Boot
Run Code Online (Sandbox Code Playgroud)
将 Windows UEFI 引导加载程序安装到 ESP 并重新创建 Windows BCD 注册表:
bcdboot c:\Windows /l en-us /s x: /f UEFI /addlast
Run Code Online (Sandbox Code Playgroud)
如果您希望 Windows 引导加载程序使用英语以外的语言,请将en-us
上面的命令替换为适当的 Windows 语言代码。
现在键入exit
,删除 Windows 安装介质并重新启动系统。它应该像以前一样出现在 Ubuntu 中。运行sudo update-grub
以更新 GRUB 启动菜单。如果一切顺利,它现在应该会自动检测 UEFI Windows 引导加载程序的存在并将其添加到 GRUB 引导菜单中。
现在在 BIOS 启动顺序菜单中,应该有一个名为“Windows 启动管理器”的项目。如果你想删除 Ubuntu 并返回到仅 Windows 系统,只需将其切换为主要启动选项,系统将默认跳过 GRUB 并启动到 Windows。然后您可以使用 Windows 磁盘管理删除 Linux 分区。不要删除 EFI 系统分区,因为现在 Windows 也需要它来启动。
(正在进行中 - 我稍后会添加 MBR 恢复选项)