Ambas as respostas aqui chegam até você, mas aqui está o que acabei achando útil:
-
Primeiro, observe que um arquivo VHD de tamanho fixo contém apenas 1 setor de metadados no end do arquivo, que é muito mais fácil de lidar do que um arquivo com metadados o começo. Para inicializar imagens de partição do Linux, um VHD funcionaria muito bem. Costumava haver uma ferramenta chamada
VHDTool
da Microsoft que poderia acrescentar instantaneamente o setor extra de metadados para transformar uma imagem bruta em um VHD, mas é difícil encontrar uma cópia online agora. Existem provavelmente outras ferramentas que poderiam fazer o mesmo, ou você poderia fazer uma imagem diferente do mesmo tamanho e transferir o setor anexado (desperdício, mas faz o trabalho). -
Caso contrário, um arquivo VMDK fará o que você precisa, porque é apenas um arquivo de texto (com terminações de linha LF pelo menos no meu caso, mas talvez o CRLF também funcione) que pode referenciar outros arquivos para usar como o fragmento. Aqui está o formato que um dos meus arquivos VMDK tinha (leia mais aqui ):
# 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"
Os bits importantes a serem preenchidos são os seguintes:
-
YYYYYYYY
: esse é o ID do conteúdo. Quando o disco virtual é criado, é um valor de 32 bits hexadecimal aleatório, tanto quanto você está preocupado. Para detalhes, consulte a especificação VMDK. -
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
é o ID do seu disco. Tanto quanto eu sei, pode ser qualquer GUID aleatório, mas não tenho certeza. -
1234
é o número de setores no arquivoImage.raw
que você deseja mapear para o disco -
5678
é o deslocamento setor dentro do arquivoImage.raw
no qual você deseja que o mapeamento comece
As outras partes sobre a geometria do disco parecem irrelevantes, tanto quanto eu posso dizer.
-
Note que você não precisa de nenhum comando específico para fazer uma VMDK, mas como outros afirmaram, VBoxManage internalcommands createrawvmdk
também pode criar uma para você, o que pode ser mais fácil ou mais difícil, dependendo do que você está tentando fazer.
Observe também que os VMDKs também podem apontar para partições ou discos reais ( \.\PhysicalDriveN
no Windows, etc.), mas a ressalva é que o VirtualBox não bloqueia os volumes usando esses discos, portanto, você obterá erros de gravação e / ou corrupção dependendo do seu SO e se o volume está montado.