启动 VMDK 原始磁盘时出错,但不是从同一物理驱动器创建的 VHD 启动

启动 VMDK 原始磁盘时出错,但不是从同一物理驱动器创建的 VHD 启动

我在虚拟机上遇到了一个不寻常的问题。我在辅助物理驱动器上安装了多重引导(Windows XP 和 Linux From Scratch),并且创建了一个指向该驱动器的 .vmdk 以供直接使用(原始磁盘)。我在创建虚拟机后立即对其初始状态进行了快照。我设法在驱动器中启动了两个操作系统,一切正常。然后我决定删除快照,因为我不再需要它了。当我重新启动机器时,它不再启动 XP。引导加载程序没有问题,因为 LFS 仍然可以正常启动,XP 加载驱动程序并显示 Windows 徽标,但几秒钟后它会抛出以下错误:

UNMOUNTABLE_BOOT_VOLUME 停止:0x000000ED (0x8679D900、0xC0000015、0x00000000、0x00000000)

奇怪的部分来了:我用 disk2vhd 创建了一个 windows 分区的 .vhd 文件,在尝试物理磁盘之前,先在虚拟驱动器中尝试解决方案。我将此 .vhd 附加到同一个 VM,XP 完美启动!它一直进入桌面,运行良好。再次尝试物理驱动器(通过 .vmdk 文件),并得到与之前相同的错误。

语境:

主机:Windows 10 Pro(2004 年)

VirtualBox(6.1)-始终以管理员身份运行以直接访问物理磁盘。

客户机:Windows XP 和 Linux From Scratch 7.10。vmdk 指向物理驱动器。初始引导加载程序来自 Windows,选择 LFS 时由 Grub 接管。

我尝试过从恢复控制台(从 XP 安装盘启动)使用 chkdsk,从 Hiren 的 Boot CD 15.2 以及从 Windows 10 直接到物理驱动器。还尝试过从 LFS 使用 ntfsfix。这些都不起作用。

有人知道是什么原因造成的吗?我想避免使用 V2P,因为它看起来风险太大。

我希望描述有意义。如果不合理,请告诉我。

提前致谢。

编辑:

我已经尝试了 rfmodulator 发布的想法。

  1. 无法在 Linux 中挂载该分区。我收到以下错误:

磁盘包含不干净的文件系统 (0, 0)。元数据保存在 Windows 缓存中,拒绝挂载。无法挂载“/dev/sda1”:操作不允许。NTFS 分区处于不安全状态。请恢复并完全关闭 Windows(不休眠或快速重启),或使用“ro”挂载选项以只读方式挂载卷。

由于无法加载 XP,因此无法再次尝试将其关闭。
尝试了 ntfs 和 ntfs-3g。
使用“-o force”安装它产生了相同的输出。

  1. 当选择“启用启动日志”选项(通过 F8)时,XP 启动期间不会创建 ntbtlog.txt 或 bootlog.txt。

  2. 附加了 vmdk 文件的新 VM 启动时间稍微长一些,但最终显示相同的错误:

UNMOUNTABLE_BOOT_VOLUME
...
停止:0x000000ED(0x8679D900、0xC0000015、0x00000000、0x00000000)

该卷可从 Windows 10 访问。我可以对其进行读取和写入。

我真的不知道 disk2vhd 是如何工作的,但是我认为也许在用它创建 .vhd 时会对文件进行某种排序或重新排列,以留下空白区域并将卷“压缩”为单个文件,所以我对物理驱动器进行了碎片整理,但是从 .vmdk 启动时没有任何变化。

我也考虑过权限,但我认为没有什么可改变的,因为在删除快照之前一切都正常。

答案1

好的,我找到了部分解决方案,感谢这个帖子在 VirtualBox 论坛中。由于某种原因,当磁盘在 Windows 10 中处于联机状态时,virtualbox 无法写入其中的 NTFS 分区(但 ext4 没有问题)。因此,通过从磁盘管理器将其标记为脱机,我能够在 VM 中启动 XP。它运行速度明显较慢,但可以正常工作。

问题是我无法同时从 W10 和 XP 访问磁盘,因为前者必须处于在线状态,而后者必须处于离线状态。此外,当再次将其置于在线状态时,它会将其标记为只读,我需要使用 diskpart 清除该属性。

有谁知道如何保持磁盘在线,但又拥有 VirtualBox 的写权限?

相关内容