Usar disco duro físico en Virtual Box

Respuestas:

87

Hice un comentario petulante ("Directo") cuando esta pregunta se publicó originalmente y me encontré en esta página unos meses más tarde buscando la misma respuesta


Instrucciones directas

Hoy, logré arrancar desde unidades físicas. Este logro requerido;

  • 60 min de lectura directa
  • 30 min escribiendo esto
  • 20 min probando diferentes opciones en VirtualBox

    Estimado lector , su atención se dirige al hecho de que es igualmente sencillo matar sus datos cuando se accede al disco de esta manera. El procedimiento sobre cómo lograr esto se deja como un ejercicio ...

Fotos (sucedió :)

comida 2

1. Cree unidades vmdk que lean de unidades reales

Para crear una imagen que represente un disco duro físico completo (que no contendrá ningún dato real, ya que todo se almacenará en el disco físico), en un host Linux, use el comando

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

Debe tener acceso de lectura al archivo del dispositivo de disco físico /dev/sda. Para lograr esto, puede cambiar el propietario y los derechos de acceso del archivo del dispositivo o ejecutar VBoxManage internalcommands createrawvmdk... como root ( sudoantes del comando).

En un host de Windows, en lugar de la especificación del dispositivo anterior, utilice, por ejemplo, \\. \ PhysicalDrive0. En un host Mac OS X, utilice, por ejemplo, / dev / disk1 (y desmonte todas las particiones en el 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. Asigne las unidades vmdk a una VM

VM -> Configuración -> Almacenamiento -> agregar ide / sata -> Elegir disco existente -> navegar

asignar

 

3. Configure uno de los modos de escritura.

Archivo -> Virtual Media Manager -> eg raw-0.vmdk -> [modificar] -> (o) Escritura

  • repetir para todas las unidades

establecer escritura

 

3. Reordenar la prioridad de arranque (semi opcional)

VM -> Configuración -> Sistema -> Orden de arranque

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

VM -> Configuración -> Almacenamiento -> Controlador: SATA -> eg raw-5.vmdk -> Disco duro: Puerto Sata 0

 

Capítulos relevantes ( manual )

  • Capítulo 9. Temas avanzados

    • 9.9 Configuración avanzada de almacenamiento
      • 9.9.1. Usar un disco duro host sin procesar de un invitado
      • 9.9.1.1. Acceso a todo el disco duro físico
         
  • Capítulo 5. Almacenamiento virtual

    • 5.2. Archivos de imagen de disco (VDI, VMDK, VHD, HDD)
    • 5.3. El administrador de medios virtuales
    • 5.4. Modos especiales de escritura de imágenes

Enumeración de unidades físicas en 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

También puede obtener los números de unidad con PowerShell:

PS C:\ Get-Disk
Ярослав Рахматуллин
fuente
77
Muchas gracias por las claras instrucciones paso a paso. Sin embargo, un problema que he tenido es que el archivo .vmdk virtual puede ser de mi propiedad como usuario, pero cuando inicio VirtualBox e intenta acceder a él, se genera un error. Esto parece ser porque el físico / dev / sda es propiedad de root. Intenté cambiar de propietario pero no me alegro, sigue siendo el mismo error. Iniciar VirtualBox como root funciona (aunque siempre soy cauteloso al ejecutar cualquier aplicación como root, y una como esta con el potencial de que algo salga mal me asusta).
La mayoría de las distribuciones tienen un grupo especial como "disco" o "bloque". Bock dispositivos en / dev / sd? Los usuarios que pertenezcan a uno de esos grupos deben poder escribirlos. Consulte los documentos para su distribución.
Ярослав Рахматуллин
1
¿Alguien consiguió esto trabajando en Windows 10? Recibo este error: The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_ACCESS_DENIED).incluso cuando ejecuto VirtualBox como administrador.
szx
2
@szx Me las arreglé para solucionar el problema VERR_ACCESS_DENIED siguiendo estos pasos
Epigene
1
¿Cómo se matarían accidentalmente sus datos a través del acceso al disco sin formato? Me imagino que saber qué no hacer ayudaría a evitar problemas. Las instrucciones parecen tan sencillas ...
Wowfunhappy
6

La documentación de VirtualBox se refiere al acceso a un disco duro sin formato:

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

Para crear una imagen que represente un disco duro físico completo (que no contendrá ningún dato real, ya que todo se almacenará en el disco físico), en un host Linux, use el comando

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

Esto crea la imagen /path/to/file.vmdk (debe ser absoluta), y todos los datos se leerán y escribirán desde / dev / sda.

Para crear una imagen especial para el soporte de partición sin formato (que contendrá una pequeña> cantidad de datos, como ya se mencionó), en un host Linux, use el comando

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

VirtualBox usa la misma numeración de partición que su host Linux. Como resultado, los números dados en el ejemplo anterior se referirían a la primera partición primaria y la primera unidad lógica en la partición extendida, respectivamente.

Consulte la documentación para ver las advertencias y las instrucciones específicas de Windows.

trpt4him
fuente
8
Las respuestas de solo enlace son menos que óptimas y definitivamente no merecen aceptación cuando hay una mejor respuesta disponible. * guiño guiño *
Ррослав Рахматуллин
0

MacOS 10.14:

  1. Cree un archivo de disco virtual correspondiente al 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 VirtualBox como superusuario:

    sudo VirtualBox
    
  3. Añadir ~/realdisk.vmdken Storage --> Controller: Sata.

Max Malysh
fuente
0

No pude hacer que esto funcionara en Windows 10 durante mucho tiempo; Seguía recibiendo un VERR_ACCESS_DENIEDerror al intentar conectar el VMDK.

Sin embargo, (finalmente) pude hacer que esto funcionara con algunos trucos:

  1. Abra PowerShell como administrador (no estoy seguro de por qué, pero no pude hacer que algunos de los comandos funcionen en un símbolo del sistema del administrador)

  2. Ejecute el siguiente comando para crear el VMDK:

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

    ... dónde path\to\physical\disk\file.vmdkestá el archivo que se creará para representar el disco y [n]es el número de disco (use Administración de discos para obtener este número)

  3. Ejecute el siguiente comando para adjuntar el VMDK:

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

    ... dónde [CONTROLLER]está el nombre del controlador de disco al que está conectando - "IDE" en mi caso

  4. Ejecute el siguiente comando para iniciar la VM:

    VBoxManage.exe startvm [VM NAME]
    
Nathan Osman
fuente
0

Intenté arrancar una máquina virtual Linux (específicamente Ubuntu 19.10) en macOS donde Ubuntu está instalado en una partición formateada ext4 física. Muchas de las respuestas que encontré, incluida la de @ ЯрославРахматуллин, me dieron la mayor parte del camino, pero recibí el siguiente mensaje de error:

FATAL: ¡No se encontró medio de arranque! El sistema se detuvo.

Una respuesta se refería a arrancar en un LiveCD y luego alterar la configuración de GRUB para abordar esto. Sin embargo, ni siquiera tengo GRUB instalado en mi Mac. Finalmente, descubrí que la clave de mi situación era asegurar que la VM tuviera acceso a la partición EFI en mi disco físico y habilitar el soporte de EFI en la configuración de la VM.

ingrese la descripción de la imagen aquí

A continuación se muestra el resultado de diskutil listmi máquina Mac host:

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI NO NAME                 536.9 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            161.1 GB   disk0s2
   3:       Microsoft Basic Data Development             9.1 GB     disk0s3
   4:                  Apple_HFS Recovery HD             650.0 MB   disk0s4
   5:           Linux Filesystem                         79.2 GB    disk0s5

A partir de esto, generé el archivo VMDK de la siguiente manera, dando a la VM invitada acceso de solo lectura a la partición EFI y acceso de escritura total a las particiones NTFS (3) y Ext4 (5).

sudo VBoxManage internalcommands createrawvmdk -filename disk0.vmdk -rawdisk -partitions 1r,3,5

Ahora puedo iniciar dualmente MacOS o Ubuntu, y cuando ya estoy en MacOS, puedo iniciar Ubuntu como VM si es necesario. ¡Días felices!

John Rix
fuente