背景和目标
我正处于一种不寻常的情况。
我有两个 HDD。UEFI 模式。
sda 8:0 0 1,8T 0 disk
├─sda1 8:1 0 1,8T 0 part /
├─sda2 8:2 0 15,6G 0 part [SWAP]
└─sda3 8:3 0 500,6M 0 part /boot/efi
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 128M 0 part
└─sdb2 8:18 0 931,4G 0 part
笔记:sdb将被格式化。
我的第一次HDD是这样的:
- 谷氨酰胺磷酸酶分区表
- 重新索引启动管理器(EFI 文件为
/boot/efi/EFI/refind/refind_x64.efi
并且/boot/efi
分区带有sda3
标志boot, esp
) - 曼扎罗(基于 ArchLinux)作为操作系统
我想在第二块硬盘上安装 Windows(Server 2016)以实现双重启动。
我怎样才能安全地做到这一点?
神话和传说
我读到一些人说每个驱动器只需要 1 个 ESP,一些人说在一个驱动器上放置 2 个 ESP,而在另一个驱动器上不放置任何 ESP,一些人说在一个驱动器上只保留 1 个 ESP,而在另一个驱动器上不放置任何 ESP。最后一点对我来说似乎更好,但我可能错了。那么我应该保留多少个 ESP 以及在哪里?我在安装 Windows 时可以选择吗,或者 Windows 会自动在其驱动器上安装一个?
我还听到有人建议拔掉 Linux 硬盘,安全的,有人说 Linux 驱动器不再可启动,因为 NVRAM 已被释放,有人说它可以工作,还有人说即使 Linux 驱动器重新插入,计算机也会自动在 Windows 上启动,绕过启动管理器。
何为真,何为假?我需要安全。
回答
我最终设法解决了这个问题(参见答案)。
现在我的磁盘如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1,8T 0 disk
├─sda1 8:1 0 1,8T 0 part /
├─sda2 8:2 0 15,6G 0 part [SWAP]
└─sda3 8:3 0 500,6M 0 part /boot/efi
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 450M 0 part (Name: Basic data partition, File system: NTFS, Label: Recovery, Flags: hidden, diag)
├─sdb2 8:18 0 100M 0 part (Name: EFI System partition, File system: fat32, Flags: boot, esp)
├─sdb3 8:19 0 16M 0 part (Name: Microsoft reserved partition, Flags: msftres)
└─sdb4 8:20 0 931G 0 part (Name: Basic data partition, File system: NTFS, Flags: msftdata)
答案1
要安全地双启动两个操作系统:
- 我拔掉了 HDD1(带有 Linux)
- 我为 Windows 准备了一个 USB 启动媒体(带有Windows USB/DVD 下载工具但手动复制 NTFS 分区上的文件也可以,而 FAT32 不行,因为一个文件有 4.6GB)从另一台电脑上复制
- 我在启动时按下主板(Asrock B350 Pro4)启动画面上的 F2 键,进入UEFI 设置菜单
- 从那里我检查了快速启动和安全启动被禁用
- 然后我从 USB 启动介质的 UEFI 启动
- 接下来我启动了 Windows 安装设置的第一步
- 我按下
Left Shift + F10
运行cmd.exe
- 接下来我
diskpart
将第二个磁盘(用于 Windows 安装)的分区表从 MBR 转换为 GPT(下面详细介绍了步骤) - 然后我取消了 Windows 的安装并重新启动应用更改
- 所以这次我安装了 Windows
- 我关闭了电脑
- 我重新插上了 HDD1(带有 Linux)
- 启动时它会自动在 Windows 上启动(可能是由于我的启动配置或/和 SATA 顺序)
- 所以我重新启动了
- 我在启动时按下主板启动画面上的 F2 键,转到UEFI 设置菜单
- 我改变了不同分区的启动顺序,并将重新索引第一的
- 我重启了
- 它启动于重新索引这是我最近 3 条记录 + 1 条关于 Windows 的新记录
- 我现在可以在 Manjaro 或 Windows 服务器上启动
使用 diskpart 将分区表从 MBR 转换为 GPT
diskpart
list disk (get the number of the disk to convert)
select disk X (replace X with the disk number)
detail disk (display information, check that you selected the right disk)
clean
convert gpt
exit
答案2
我看到你找到了解决方案,这很好;但我想明确回答你的一些问题:
我读到一些人说每个驱动器只需要 1 个 ESP,一些人说在一个驱动器上放置 2 个 ESP,而在另一个驱动器上不放置任何 ESP,一些人说在一个驱动器上只保留 1 个 ESP,而在另一个驱动器上不放置任何 ESP。最后一点对我来说似乎更好,但我可能错了。那么我应该保留多少个 ESP 以及在哪里?
EFI 规范允许任意数量的 ESP,位于任意位置。不过,如果将多个 ESP 放在一个磁盘上,Windows 7(我不知道后续版本)往往会出现混乱,因此我建议不要这样做。ESP 旨在跨操作系统共享,因此这样做应该没问题,但要注意的是因为由于它是共享的,每个操作系统都可能弄乱对方的文件。当然,即使您有单独的 ESP,也可能会发生同样的事情。出于这个原因,我建议您保留 ESP 的备份。
在安装 Windows 期间我是否可以选择,或者 Windows 是否会自动在其驱动器上安装一个?
如果每个磁盘都有自己的 ESP,那么我不清楚 Windows 在多磁盘环境中会使用哪个 ESP 来做什么。
我还听到有人说要拔掉 Linux 硬盘,以确保安全,有人说 Linux 驱动器不再可启动,因为 NVRAM 已被释放,
一些(但不是全部)EFI 会删除指向不存在文件的 NVRAM 条目。因此,按照您的建议(并确实这样做了)拔下磁盘能导致丢失启动项。这些很容易恢复如果您知道如何做并做好了准备,但对于缺乏必要技能的大多数人来说,这种丢失可能非常具有挑战性。因此,我建议在安装新操作系统时不要拔下磁盘;但是,遵循我的建议确实会增加因粗心或错误而丢失操作系统的风险,因此我还建议在继续安装新操作系统之前注意并进行备份。
另一些人说它可以工作,还有一些人说即使 Linux 驱动器插回去,计算机也会自动在 Windows 上启动,绕过启动管理器。
Windows 会将自己的启动管理器设置为默认启动管理器,因此即使不拔下 Linux 磁盘,启动到 Windows 的现象也很常见。如果 Linux 条目没有被破坏,您可以使用第三方 Windows 启动管理器调整启动顺序简易UEFI工具。
另一个恢复工具是 rEFInd。如果你把它放在 USB 闪存驱动器或 CD-R 上,该介质可以作为紧急恢复工具 - 插入它,启动它,然后你可以使用磁盘上可用的引导加载程序启动任何东西,然后使用它的工具(就像efibootmgr
在 Linux 中一样)添加或重新排序启动条目,甚至完全重新安装引导加载程序。主要的警告是安全启动 - 我在rEFInd 下载页面不支持安全启动。因此,您必须禁用此功能或自行添加安全启动支持,这可能很麻烦。