Use imagem de partição bruta no VirtualBox?

3

É possível, de alguma forma, fazer o VirtualBox usar diretamente uma imagem de partição bruta para uma máquina virtual?

Por imagem bruta de partição, quero dizer, um arquivo que contém uma cópia byte-by-by da partição da qual gostaria de inicializar.

Eu não estou olhando para inicializar a partir de uma imagem bruta do disco , nem estou procurando uma maneira de inicializar a partir de um VHD (que não é raw porque contém outros metadados).

    
por Mehrdad 14.09.2013 / 22:01

3 respostas

0

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 arquivo Image.raw que você deseja mapear para o disco

    • 5678 é o deslocamento setor dentro do arquivo Image.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.

    
por 14.07.2018 / 00:15
6

Acesse a imagem do disco por meio do dispositivo de loop

(Encontrado aqui: link )

Etapa 1: Associe a imagem do disco a um dispositivo de loop.

$ losetup /dev/loop0 /path/to/usb.img

Passo 2: Crie um disco virtual e registre-o no VirtualBox.

$ VBoxManage internalcommands createrawvmdk -filename /path/to/usb.vmdk -rawdisk /dev/loop0

Etapa 3: Anexe o disco virtual a uma máquina virtual e inicie-o. A máquina virtual acessará o disco virtual, que agora está vinculado a / dev / loop0, que por sua vez está vinculado ao arquivo de imagem de disco.

Aviso: Para que isso funcione, o VirtualBox precisa acessar o dispositivo de loop que você criou. Isso significa adicionar seu usuário a um grupo que tem acesso a discos (na minha máquina Ubuntu, este é o grupo “disco”), ou você precisa rodar o VirtualBox como root. Como estou mexendo muito com discos, usei a primeira opção (é por isso que meus comandos começam com $ not #), mas acho que executar o VirtualBox como root é a solução mais segura para a maioria dos usuários.

    
por 17.03.2015 / 21:31
2

Esta pode não ser uma solução completa para o que você está procurando, mas você pode inicializar em discos físicos brutos - se você puder montar / mascarar seu arquivo de partição como um disco, eu posso ver isso funcionando. Caso contrário, se a inicialização para um disco físico for uma opção, estas são as etapas para fazer isso em um host do Windows 7:

  1. Crie um arquivo VMDK 'simulado' que aponte para o disco físico no qual você deseja inicializar em sua VM ( link ). Observe que, se você estiver executando o Windows, precisará executar a interface de gerenciamento do VirtualBox e o prompt de comando como administrador para que esse comando seja bem-sucedido.
  2. Anexe o VMDK falso a uma VM.
  3. Offline o disco no gerenciamento de disco e limpe o sinalizador somente leitura para ele usando DISKPART ( link ). Isso garante que o disco seja de leitura / gravação acessível para o VirtualBox, mas nada mais em seu host.

Você deve poder usar a unidade física como seu sistema operacional convidado. Super prático.

    
por 20.09.2013 / 22:18

Tags