是否有可能以某种方式让 VirtualBox 直接使用虚拟机的原始分区映像?
通过原始分区映像,我的意思是一个文件,其中包含我想从中启动的分区的逐字节副本。
我不想从原始磁盘映像启动,也不想从 VHD 启动(它不是原始的,因为它包含其他元数据)。
raa*_*cer 11
通过循环设备访问磁盘映像
(在这里找到:http : //blog.mybox.ro/2010/11/03/how-to-use-a-raw-disk-image-file-in-virtualbox/)
步骤 1:将磁盘映像与循环设备相关联。
$ losetup /dev/loop0 /path/to/usb.img
Run Code Online (Sandbox Code Playgroud)
步骤 2:创建一个虚拟磁盘并将其注册到 VirtualBox。
$ VBoxManage internalcommands createrawvmdk -filename /path/to/usb.vmdk -rawdisk /dev/loop0
Run Code Online (Sandbox Code Playgroud)
第 3 步:将虚拟磁盘附加到虚拟机并启动它。虚拟机将访问虚拟磁盘,该磁盘现在链接到 /dev/loop0,后者又链接到磁盘映像文件。
警告:为了使其工作,VirtualBox 需要能够访问您创建的循环设备。这意味着要么将您的用户添加到有权访问磁盘的组(在我的 Ubuntu 机器上,这是组“磁盘”),或者您需要以 root 身份运行 VirtualBox。由于我经常使用磁盘,所以我使用了第一个选项(这就是为什么我的命令以 $ 而不是 # 开头),但我认为以 root 身份运行 VirtualBox 对大多数用户来说是更安全/更好的解决方案。
这里的两个答案都可以帮助您实现大部分目标,但我最终发现以下内容很有帮助:
首先,请注意,固定大小的 VHD 文件仅在文件末尾包含 1 个元数据扇区,这比开头包含元数据的文件更容易处理。对于启动 Linux 分区映像,VHD 就可以很好地工作。曾经有一个微软称为的工具VHDTool
,可以立即附加额外的元数据部分,将原始图像转换为VHD,但现在很难在网上找到副本。但是,我找到了源代码和二进制文件的副本,许可证显然允许重新分发,因此如果您正在寻找它,请告诉我。或者,可能还有其他工具可以执行相同的操作,或者您可以制作相同大小的不同图像并传输附加扇区(浪费,但完成工作)。
否则,VMDK 文件将满足您的需要,因为它只是一个文本文件(至少在我的情况下以 LF 行结尾,但也许 CRLF 也可以工作),可以引用其他文件用作块。这是我的 VMDK 文件之一的格式(在此处阅读更多信息):
# Disk DescriptorFile
version=1
CID=YYYYYYYY
parentCID=ffffffff
createType="partitionedDevice"
# Extent description
RW 1234 FLAT "\\.\C:\Path\To\Image.raw" 5678
# The disk Data Base
#DDB
ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="16383"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="00000000-0000-0000-0000-000000000000"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
ddb.geometry.biosCylinders="1024"
ddb.geometry.biosHeads="255"
ddb.geometry.biosSectors="63"
Run Code Online (Sandbox Code Playgroud)
需要填写的重要部分如下:
YYYYYYYY
:这是内容 ID。创建虚拟磁盘时,就您而言,它是一个随机的十六进制 32 位值。有关详细信息,请参阅 VMDK 规范。
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
是你的磁盘的ID。据我所知,它可以是任何随机 GUID,但我不确定。
1234
是文件中要映射到磁盘的扇区数Image.raw
5678
是文件内您希望映射开始的扇区偏移量Image.raw
据我所知,有关磁盘几何形状的其他部分似乎无关紧要。
请注意,您不需要任何特定的命令来创建 VMDK,但正如其他人所说,VBoxManage internalcommands createrawvmdk
也可以为您创建一个 VMDK,您可能会发现创建 VMDK 更容易或更困难,具体取决于您想要做什么。
另请注意,VMDK 也可以指向实际的分区或磁盘(\\.\PhysicalDriveN
在 Windows 上等),但需要注意的是 VirtualBox 不会锁定使用这些磁盘的卷,因此您会遇到写入错误和/或损坏,具体取决于您的操作系统以及卷是否已安装。
归档时间: |
|
查看次数: |
29464 次 |
最近记录: |