Use o disco rígido físico na Caixa Virtual

Respostas:

87

Fiz um comentário presunçoso ("direto") quando esta pergunta foi originalmente publicada e me vi nesta página alguns meses depois, procurando a mesma resposta


Instruções simples

Hoje, eu consegui inicializar a partir de unidades físicas. Essa conquista é necessária;

  • 60 min de leitura direta
  • 30 min escrevendo isso
  • 20 min tentando diferentes opções no VirtualBox

    Caro leitor , sua atenção é direcionada ao fato de que é igualmente simples matar seus dados quando o disco é acessado dessa maneira. O procedimento de como fazer isso é deixado como um exercício ...

Pics (aconteceu :)

grub 2

1. Crie unidades vmdk que leem de unidades reais

Para criar uma imagem que represente um disco rígido físico inteiro (que não conterá nenhum dado real, pois tudo será armazenado no disco físico), em um host Linux, use o comando

VBoxManage internalcommands createrawvmdk \
    -filename /path/to/file.vmdk \
    -rawdisk /dev/sda

Você deve ter acesso de leitura ao arquivo do dispositivo de disco físico /dev/sda. Para fazer isso, você pode alterar o proprietário e acessar os direitos do arquivo do dispositivo ou executar VBoxManage internalcommands createrawvmdk… como root (coloque sudoantes do comando).

Em um host Windows, em vez da especificação do dispositivo acima, use, por exemplo, \\. \ PhysicalDrive0. Em um host do Mac OS X, use, por exemplo, / dev / disk1 (e desmonte todas as partições no disco1).

(all on one line)
C:\VirtualBoxDrives>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
    internalcommands createrawvmdk
    -filename C:\VirtualBoxDrives\raw-0.vmdk 
    -rawdisk \\.\PHYSICALDRIVE0

(output)
RAW host disk access VMDK file C:\VirtualBoxDrives\raw-0.vmdk created successf..

 

2. Atribua as unidades vmdk a uma VM

VM -> Configurações -> Armazenamento -> adicionar ide / sata -> Escolha o disco existente -> procurar

atribuir

 

3. Defina um dos modos de gravação.

Arquivo -> Virtual Media Manager -> por exemplo, raw-0.vmdk -> [modificar] -> (o) Gravação

  • repita para todas as unidades

definir escrita

 

3. Reordene a prioridade de inicialização (semi-opcional)

VM -> Configurações -> Sistema -> Ordem de inicialização

[./] Hard Disk
[./] CD/DVD
[  ] Floppy
[  ] Network

VM -> Configurações -> Armazenamento -> Controlador: SATA -> por exemplo, raw-5.vmdk -> Disco rígido: porta Sata 0

 

Capítulos relevantes ( manual )

  • Capítulo 9. Tópicos Avançados

    • 9.9 Configuração avançada de armazenamento
      • 9.9.1 Usando um disco rígido de host bruto de um convidado
      • 9.9.1.1 Acesso a todo o disco rígido físico
         
  • Capítulo 5. Armazenamento Virtual

    • 5.2 Arquivos de imagem de disco (VDI, VMDK, VHD, HDD)
    • 5.3 O Virtual Media Manager
    • 5.4 Modos especiais de gravação de imagem

Enumerando unidades físicas no Windows:

C:\Users\win7>wmic diskdrive list brief

Caption                               DeviceID            Model                                 Partitions  Size
Samsung SSD 840 EVO 250GB ATA Device  \\.\PHYSICALDRIVE3  Samsung SSD 840 EVO 250GB ATA Device  6           250057228288
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE1  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE2  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE0  ST1000DM003-1CH162 ATA Device         5           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE5  WDC WD1000DHTZ-04N21V0 ATA Device     6           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE4  WDC WD1000DHTZ-04N21V0 ATA Device     5           1000202273280
ST1000DM 003-1CH162 SCSI Disk Device  \\.\PHYSICALDRIVE6  ST1000DM 003-1CH162 SCSI Disk Device  5           1000202273280

Você também pode obter os números das unidades com o PowerShell:

PS C:\ Get-Disk
Ярослав Рахматуллин
fonte
7
Muito obrigado pelas instruções claras e passo a passo. Um problema que tive, no entanto, é que o arquivo .vmdk virtual pode pertencer a mim como usuário, mas quando inicio o VirtualBox e ele tenta acessá-lo, um erro é gerado. Parece ser porque o / dev / sda físico pertence à raiz. Tentei mudar de propriedade, mas sem alegria - ainda é o mesmo erro. Iniciar o VirtualBox como root funciona (embora eu seja sempre cauteloso ao executar qualquer aplicativo como root, e um desses com o potencial de tantas coisas darem errado me assusta).
A maioria das distros possui um grupo especial, como "disco" ou "bloco". Dispositivos Bock em / dev / sd? deve ser gravável por usuários pertencentes a um desses grupos. Verifique os documentos para sua distribuição.
Ярослав Рахматуллин
11
Alguém conseguiu isso funcionando no Windows 10? Estou recebendo este erro The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_ACCESS_DENIED).:, mesmo ao executar o VirtualBox como administrador.
Szx #
2
@szx eu consegui contornar o problema VERR_ACCESS_DENIED seguindo estes passos
Epigene
11
Como alguém acidentalmente mataria seus dados via acesso ao disco bruto? Eu acho que saber o que não fazer ajudaria a evitar problemas. As instruções parecem tão simples ...
Wowfunhappy
6

A documentação do VirtualBox refere-se ao acesso a um disco rígido bruto:

http://www.virtualbox.org/manual/ch09.html#rawdisk

Para criar uma imagem que represente um disco rígido físico inteiro (que não conterá nenhum dado real, pois tudo será armazenado no disco físico), em um host Linux, use o comando

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda

Isso cria a imagem /path/to/file.vmdk (deve ser absoluta) e todos os dados serão lidos e gravados em / dev / sda.

Para criar uma imagem especial para o suporte à partição bruta (que conterá uma pequena quantidade de> dados, como já mencionado), em um host Linux, use o comando

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda -partitions 1,5

O VirtualBox usa a mesma numeração de partição que o seu host Linux. Como resultado, os números fornecidos no exemplo acima se referem à primeira partição primária e à primeira unidade lógica na partição estendida, respectivamente.

Consulte a documentação para obter advertências e instruções específicas do Windows.

trpt4him
fonte
8
As respostas apenas para links são inferiores ao ideal e definitivamente não merecem aceitação quando uma resposta melhor está disponível. * wink wink *
Ярослав Рахматуллин
0

MacOS 10.14:

  1. Crie um arquivo de disco virtual correspondente ao disco real:

    # First, find the device you want to use inside Virtual Box:
    diskutil list  
    
    # Create the virtual disk
    sudo VBoxManage internalcommands createrawvmdk \
            -filename ~/realdisk.vmdk \
            -rawdisk /dev/disk2
    
  2. Inicie o VirtualBox como um super usuário:

    sudo VirtualBox
    
  3. Adicionar ~/realdisk.vmdkem Storage --> Controller: Sata.

Max Malysh
fonte
0

Não consegui fazer isso funcionar no Windows 10 por mais tempo; Eu continuava recebendo um VERR_ACCESS_DENIEDerro ao tentar anexar o VMDK.

No entanto, consegui (finalmente) fazer isso funcionar com alguns truques:

  1. Abra o PowerShell como administrador (não sei por que, mas não consegui que alguns comandos funcionassem em um prompt de comando do administrador)

  2. Execute o seguinte comando para criar o VMDK:

    VBoxManage.exe internalcommands createrawvmdk \
        -filename "path\to\physical\disk\file.vmdk" \
        -rawdisk \\.\PhysicalDrive[n]
    

    ... onde path\to\physical\disk\file.vmdkestá o arquivo que será criado para representar o disco e [n]o número do disco (use o Gerenciamento de Disco para obter esse número)

  3. Execute o seguinte comando para anexar o VMDK:

    VBoxManage.exe storageattach [VM NAME] \
        --storagectl [CONTROLLER] \
        --device 0 \
        --port 0 \
        --type hdd \
        --medium "path\to\physical\disk\file.vmdk"
    

    ... onde [CONTROLLER]está o nome do controlador de disco ao qual você está se conectando - "IDE" no meu caso

  4. Execute o seguinte comando para iniciar a VM:

    VBoxManage.exe startvm [VM NAME]
    
Nathan Osman
fonte