8 votos

¿Cómo hacer acceso a dispositivos sin formato con VirtualBox?

Entonces estoy tratando de configurar el acceso a dispositivos crudos con VirtualBox para usar un disco ext4/linux como sistema operativo invitado dentro de Mac OS X, pero aún no he tenido éxito.

Siguiendo la documentación de VirtualBox, Capítulo 9.9.1.1, https://www.virtualbox.org/manual/ch09.html#rawdisk ¿permitirá Mac OS X el acceso a discos crudos para las máquinas virtuales? ¿Cómo configuro esto?

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

Creado un archivo vmdk crudo:

$ sudo VBoxManage internalcommands createrawvmdk -filename /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk -rawdisk /dev/disk0
El archivo VMDK de acceso a disco host crudo /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk se creó con éxito.

Hazme el propietario:

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

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

$ VBoxManage internalcommands listpartitions -rawdisk /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk
Número  Tipo   InicioCHS       FinCHS      Tamaño (MiB)  Inicio (Sect)

Dado que no aparece nada aquí 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 comando a continuación, obtengo un error:

$ VBoxManage storageattach "Xub_raw_testing" --storagectl "SATA" --port 0 --type hdd --medium /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk 
VBoxManage: error: No se pudo encontrar el archivo para el medio '/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk' (VERR_FILE_NOT_FOUND)
VBoxManage: error: Detalles: código VBOX_E_FILE_ERROR (0x80bb0004), componente Medio, interfaz IMedio, llamador nsISupports
VBoxManage: error: Contexto: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" en la línea 178 del archivo VBoxManageDisk.cpp
VBoxManage: error: UUID o nombre de archivo no válido "/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk"

ACTUALIZACIÓN: Aquí, disk0 es el disco dedicado de Linux. disk1 (no utilizado) es para Mac OS X. Hacerme dueño de /dev/disk0 y /dev/disk0s2 con

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

según el tutorial de Froggard hizo posible que pudiera agregar la imagen a una VM. Además, /dev/disk0 es ahora legible desde VBoxManage:

$ VBoxManage internalcommands listpartitions -rawdisk /dev/disk0
Número  Tipo   InicioCHS       FinCHS      Tamaño (MiB)  Inicio (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 se encontró medio de arranque! Sistema detenido. ¿Alguna idea de qué está mal?

0 votos

¿Verificaste si el puerto SATA 0 ya está en uso en tu VM? ¿O ya intentaste seleccionar un controlador diferente como el Controlador IDE?

0 votos

Si OS X se está ejecutando en su disco interno 0, entonces no podrá acceder a todo el disco 0. Sin embargo, podrá acceder a la partición que contiene el sistema de archivos formateado en ext4. Siga los pasos del 6 al 12 dados en respuesta de Froggard. Él hace esto para una partición formateada en Windows. Simplemente sustituya su partición de Linux.

0 votos

¿Qué sistema operativo está ejecutando en la máquina física? ¿En qué partición física está instalada esta máquina? ¿Qué sistema operativo se ejecutará en la máquina virtual? ¿La máquina virtual estará instalada en una partición virtual o física? En caso de ser física, ¿en cuál?

9voto

macmadness86 Puntos 106

Tuve la necesidad de hacer esto hoy y vi tu pregunta, así que aquí está un protocolo de los pasos que tomé.

Encuentra el Número de Dispositivo

diskutil list por ejemplo 2, como en /dev/disk2 asumiendo 2 para el resto de las instrucciones.

Crea el VMDK de la Máquina Virtual

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

Ejecta el dispositivo antes de este paso, de lo contrario obtendrás un error: VERR_RESOURCE_BUSY. Puedes querer agregar una entrada en fstab con los parámetros añadidos noauto para prevenir que el OS vuelva a montar la unidad.

Utilizo 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, un dispositivo podría ser asignado un número diferente especialmente si desenchufas cosas y mueves cosas alrededor.

Inicia Virtual Box Manager con Privilegios de Root

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

Como todos los dispositivos son propiedad de root, necesitas iniciar VirtualBox con privilegios de root. Esto tiene consecuencias. Tu contexto de home (carpeta de inicio y preferencias) se cambiará a root. Tus otras máquinas virtuales no serán visibles. Si abres un explorador de archivos, verás la carpeta de inicio de root por defecto.

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

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

  1. Agregar Nueva Máquina, proporcionar nombre: /dev/disk2, tipo: linux, versión: arch linux (64 bits)
  2. Asignarle algo de memoria (lo que puedas)
  3. Seleccionar el disco existente utilizando VMDK creado arriba. (IMPORTANTE asegúrate de que el disco no haya sido remontado, de lo contrario obtendrás VERR_RESOURCE_BUSY, NS_ERROR_FAILURE)

Instala un Sistema Nuevo

Agrega un archivo de disco óptico (por ejemplo, un ISO de Linux booteable de tu elección) y activa la opción Live CD/DVD para que inicies desde él.

Haz que el Sistema Sea Booteable en VirtualBox

Esto no es tan obvio, especialmente si usas una configuración EFI. Si usas grub-mkconfig, el nombre del archivo efi es grubx64.efi (asumiendo 64 bits). VirtualBox es quisquilloso sobre dónde busca un archivo de booteo. El predeterminado no funcionará.

Renombra grubx64.efi a bootx64.efi

/boot/EFI/BOOT/bootx64.efi


Notas

  • consejo: consigue iterm 2
  • Esto es super útil para Macbooks cuando instalas Arch Linux, porque la ISO por defecto no carga los controladores de la tarjeta wlan.

0 votos

Todavía obtengo VERR_NOT_SUPPORTED y VERR_ACCESS_DENIED al hacer esto, incluso con los permisos de disco configurados en 777 y con VirtualBox ejecutándose como root.

0 votos

@BeanstheWizard ¿Puedo sugerirte que verifiques que tu disco no esté montado? Podría valer la pena configurar /etc/fstab para bloquear los montajes.

0 votos

Estoy seguro; ¿de todas maneras no daría un error diferente?

1voto

blinkingnoise Puntos 11

He creado un pequeño script para corregir los permisos y crear una nueva imagen raw con el UUID correcto:

#!/bin/bash

UUID="BDA52A9B-E398-4245-AF6B-6C274F54D4BD"
VBOXFILE=Linux.vmdk

DEVICE\_IDENTIFIERIDENTIFIER=$(diskutil info $UUID | grep "Device Identifier:" - | grep -o "disk." - )
DISK="/dev/$DEVICE\_IDENTIFIERIDENTIFIER"

echo "usando $DISK"

if test -f "$VBOXFILE"; then
    rm $VBOXFILE
fi

sudo chown $USER $DISK
sudo VBoxManage internalcommands createrawvmdk -filename $VBOXFILE -rawdisk $DISK
sudo chown $USER $VBOXFILE

VBoxManage internalcommands sethduuid Linux.vmdk "$UUID"

0voto

Pierre ALBARÈDE Puntos 129

Hice más o menos lo que quieres: acceder al disco en modo raw como Linux boot.

mac2011% diskutil list

Identificar el disco al que quieres acceder con VirtualBox. Aquí está /dev/disk1, que contiene dos particiones /dev/disk1s1 /dev/disk1s2 (una de Windows y otra de Linux).

Desmontar:

mac2011% diskutil unmountDisk /dev/disk1 

Cambiar permisos:

mac2011% sudo chown myself /dev/disk1*

Crear disco virtual crudo de la máquina virtual:

mac2011% VBoxManage internalcommands createrawvmdk -filename /Users/myself/VirtualBox\ VMs/link.vmdk -rawdisk /dev/disk

Abrir VirtualBox:

mac2011% open -a VirtualBox

Crear una máquina virtual usando "un archivo de disco duro virtual existente", elige el que acabas de crear. Haz clic en Añadir... Crear...

A menudo ocurre un error "could not open the medium VERR_RESOURCE_BUSY", porque Mac lo ha vuelto a montar automáticamente (verifica en el escritorio), así que desmóntalo e inténtalo de nuevo (usa el historial de comandos o escribe un script o sudo vifs /etc/fstab - y busca en otro lugar cómo completarlo).

La máquina virtual se muestra [En ejecución] así que probablemente ha accedido al disco. (Sin embargo, el proceso de arranque se detiene, pero ese es otro tema).

Espero que puedas adaptar esta receta a tus necesidades.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X