¿Cómo hacer el acceso directo al dispositivo con VirtualBox?

4

Por lo tanto, estoy tratando de configurar el acceso directo al dispositivo con VirtualBox para usar un disco ext4 / linux como sistema operativo invitado en Mac OS X, pero aún no he tenido éxito.

Siguiendo los documentos de VirtualBox, Capítulo 9.9.1.1, enlace el Mac OS X permitirá el acceso directo al disco para VMs? ¿Cómo configuro esto?

Cosas hechas hasta ahora: (no intentes esto en casa)

Creó un archivo vmdk en bruto:

$ sudo VBoxManage internalcommands createrawvmdk -filename /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk -rawdisk /dev/disk0
RAW host disk access VMDK file /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk created successfully.

hazme el propietario:

$ sudo chown me /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk

vea si VirtualBox puede ver algo en el archivo Xub_raw_disk.vmdk:

$ VBoxManage internalcommands listpartitions -rawdisk /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)

Como aquí no aparece nada para sectores o particiones, esto debe ser un síntoma del problema ...

El problema es cuando intento agregar el archivo .vmdk desde la GUI o con el siguiente comando, aparece un error:

$ VBoxManage storageattach "Xub_raw_testing" --storagectl "SATA" --port 0 --type hdd --medium /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk 
VBoxManage: error: Could not find file for the medium '/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk' (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Medium, interface IMedium, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp
VBoxManage: error: Invalid UUID or filename "/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk"

ACTUALIZACIÓN: Aquí, disk0 es la unidad de linux dedicada. disk1 (no utilizado) es para Mac OS X. Haciéndome el propietario de / dev / disk0 y / dev / disk0s2 con

$ chown $USER /dev/disk0
$ chown $USER /dev/disk0s2

de Froggard howto lo hizo para que pudiera agregar la imagen a una máquina virtual. Además, /dev/disk0 ahora se puede leer desde VBoxManage:

$ VBoxManage internalcommands listpartitions -rawdisk /dev/disk0
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0x00  0   /0  /0   0   /0  /0            976         2048
2       0x00  0   /0  /0   0   /0  /0         227959      2000896

Ahora, cuando inicio el sistema operativo invitado de Linux, recibo el mensaje FATAL: No bootable medium found! System halted. . ¿Alguna idea de lo que está mal?

    
pregunta user35070 19.06.2015 - 17:44

1 respuesta

4

Tenía que hacer esto hoy y vi tu pregunta, así que aquí hay un protocolo de los pasos que tomé.

Encuentra el número de dispositivo

diskutil list  p.ej. 2, como en /dev/disk2 Suponiendo 2 para el resto de las instrucciones.

Crear la máquina virtual VMDK

VBoxManage internalcommands createrawvmdk -filename "$HOME/dev-disk2.vmdk" -rawdisk /dev/disk2

Expulsa el dispositivo antes de este paso, de lo contrario obtendrás un error: VERR_RESOURCE_BUSY . Es posible que desee agregar una entrada en fstab con los parámetros agregados noauto para evitar que el sistema operativo vuelva a montar la unidad.

Uso rdisk-disk2.vmdk para el nombre, porque esta máquina virtual es solo un puntero a este dispositivo. Después de reiniciar, la situación podría cambiar, por ejemplo. a un dispositivo se le puede asignar un número diferente, especialmente si desconecta las cosas y las mueve.

Inicie Virtual Box Manager con privilegios de raíz

sudo /Applications/VirtualBox.app/Contents/MacOS/VirtualBox

Dado que todos los dispositivos son propiedad de root, debe iniciar VirtualBox con privilegios de root. Esto tiene consecuencias. Su contexto de inicio (carpeta de inicio y preferencias) se cambiará a raíz. Tus otras máquinas virtuales no serán visibles. Si abre un explorador de archivos, verá la carpeta de inicio de la raíz de forma predeterminada.

Otra opción es cambiar los permisos del dispositivo (no recomendado) como lo has hecho.

Para confirmar los permisos de los dispositivos, puede ejecutar ls -l /dev/disk*

  1. Agregar nueva máquina, indique el nombre: / dev / disk2, escriba: linux, versión: arch linux (64 bits)
  2. Dale algo de memoria (lo que puedas)
  3. Seleccione la unidad existente utilizando VMDK creado anteriormente. ( IMPORTANTE asegúrate de que la unidad no se haya vuelto a montar, de lo contrario obtendrás VERR_RESOURCE_BUSY , NS_ERROR_FAILURE )

Instalar un sistema nuevo

Agregue un archivo de disco óptico (por ejemplo, un ISO de Linux de arranque que le guste) y active el CD / DVD en vivo opcional para que pueda iniciar desde él.

Hacer que el sistema pueda iniciarse en VirtualBox

Esto no es tan obvio, especialmente si utiliza una configuración EFI. Si utiliza grub-mkconfig , el nombre del archivo efi es grubx64.efi (suponiendo 64 bits). VirtualBox es meticuloso sobre dónde buscar un archivo de arranque. El predeterminado no servirá.

Renombrar grubx64.efi a bootx64.efi

/boot/EFI/BOOT/bootx64.efi

Notas

  • consejo: hazte con iterm 2
  • Esto es muy útil para los Macbooks al instalar Arch Linux, porque la ISO predeterminada no carga los controladores de la tarjeta wlan.
respondido por el Jonathan Komar 28.09.2016 - 17:45

Lea otras preguntas en las etiquetas