![在物理磁盘上启动操作系统 - p2v](https://linux22.com/image/1590816/%E5%9C%A8%E7%89%A9%E7%90%86%E7%A3%81%E7%9B%98%E4%B8%8A%E5%90%AF%E5%8A%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20p2v.png)
我有一台双启动机器。两个操作系统都运行在不同的磁盘上。Linux 位于内部 HDD 上,而 Windows 位于内部 SSD 上。
我只是希望能够同时运行两者。我认为从 Windows 虚拟化现有的 Linux 比反过来做要容易得多。
BIOS 上启用了虚拟化功能。
我正在尝试这个帖子。并成功启动了 Supergrub ISO,但找不到我的磁盘。我将磁盘置于离线状态,并将其添加到 VM 中,然后将其置于在线状态,但没有任何效果。
我愿意接受任何解决方案,Hyper-V、VMWare、Oracle Virtualbox 或其他任何解决方案。
答案1
几年前我也做过类似的事情。查看该帖子以了解当时我的设置的一些详细信息。我对结果非常满意。不过,更新 GRUB 很麻烦,因为我希望能够在 Windows 主机上的 VM 中或直接从裸机启动 Linux。如果您想要典型的 P2V,事情会容易一些。
我选择 Windows 作为主机,Linux 作为客户机,因为 Windows 当时是我每天使用的驱动程序。今天我会考虑用另一种方法,但我没有这种方法的实际经验,所以在这个答案中我不会关注它。如果你想用 Windows 玩游戏等,那么就把它当作主机 - VirtualBox 对 PCI 直通的支持非常有限,它有不同寻常的硬件要求,你需要第二个 GPU + 第二个屏幕。为什么选择 VirtualBox:没有特别的原因,我对它很熟悉。
VirtualBox 支持将物理磁盘分区映射到虚拟机。请注意,此功能是实验性的。据我所知,它多年来一直没有改变,因此相当稳定,但要小心:每次更改分区边界后都必须重新创建 VMDK 文件,否则 VM 会破坏您的分区(不太好)。
将磁盘映射到 VMDK 文件中后,您需要创建一个单独的/boot
分区 - 可能位于存储在主机分区上的虚拟磁盘上 - 大小约为 300 MB。您不需要 EFI 系统分区,因为 VBox 对 EFI 的支持……嗯,不令人满意,所以您想通过 MBR 启动。因此,将这个小虚拟磁盘作为第一个磁盘附加,将您创建的物理 VMDK 作为第二个磁盘附加。
从 Linux ISO 启动 VM 并 chroot 到您的 P2V 安装。移动/boot
到新分区:简单 rsync 其内容 + 更新/etc/fstab
即可。将 GRUB2 安装到小磁盘的 MBR 中。/boot
先不要从原始分区中删除,您要先从主机中清除 GRUB。从 Windows ISO 启动主机并按Shift+ F10,将弹出命令提示符。bootrec /fixboot
+bootrec /fixmbr
应该将其从 MBR 设置中删除,对于 UEFI 您必须删除 EFI 条目(在 UEFI 设置中或efibootmgr
从 Linux 使用),然后从 EFI 系统分区(隐藏在 Windows 磁盘管理中,但您可以使用 为其分配一个字母diskpart
)中删除相关文件。确保 Windows 可以启动。如果没有,请从备份中恢复。我有没有提到过你应该事先备份?首先做好一些备份。
基本上就是这样。你也许可以写一本关于 Linux 启动设置和所有可能出现的问题的书,但我现在没时间这样做,所以我只留下这个答案。希望这会有所帮助。祝你好运!