Así que estoy tratando de configurar el acceso al dispositivo sin procesar con VirtualBox para usar un disco ext4/linux como sistema operativo invitado dentro de Mac OS X, pero aún no lo he logrado.
Siguiendo los documentos de VirtualBox, Capítulo 9.9.1.1, https://www.virtualbox.org/manual/ch09.html#rawdisk , ¿Mac OS X permitirá el acceso al disco sin formato para las VM? ¿Cómo configuro esto?
Cosas hechas hasta ahora: (no intentes esto en casa)
Creó un archivo vmdk sin procesar:
$ 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 dueño:
$ 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
Number Type StartCHS EndCHS Size (MiB) Start (Sect)
Como no aparece nada aquí para sectores o particiones, esto debe ser un síntoma del problema...
El problema es que 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 Linux dedicada. disk1 (no utilizado) es para Mac OS X. Haciéndome propietario de /dev/disk0 y /dev/disk0s2 con
$ chown $USER /dev/disk0
$ chown $USER /dev/disk0s2
según Froggard howto lo hizo para poder 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 FATAL: No bootable medium found! System halted.
mensaje. ¿Alguna idea de lo que está mal?
Tenía la necesidad de hacer esto hoy y vi su pregunta, así que aquí hay un protocolo de los pasos que tomé.
diskutil list
por ejemplo, 2, como en /dev/disk2
Asumiendo 2
para el resto de las instrucciones.
VBoxManage internalcommands createrawvmdk -filename "$HOME/dev-disk2.vmdk" -rawdisk /dev/disk2
Expulse el dispositivo antes de este paso, de lo contrario obtendrá un error: VERR_RESOURCE_BUSY
. Es posible que desee agregar una entrada fstab
con los parámetros agregados noauto
para evitar que el sistema operativo vuelva a montar la unidad.
Lo 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 podría asignar un número diferente, especialmente si desconecta las cosas y las mueve.
sudo /Applications/VirtualBox.app/Contents/MacOS/VirtualBox
Debido a 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. Sus 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 has hecho.
Para confirmar los permisos de los dispositivos, puede ejecutarls -l /dev/disk*
VERR_RESOURCE_BUSY
, NS_ERROR_FAILURE
)Agregue un archivo de disco óptico (por ejemplo, un ISO de Linux de arranque de su agrado) y active el Live CD/DVD opcional para que arranque desde él.
Esto no es tan obvio, especialmente si usa una configuración EFI. Si usa grub-mkconfig
, el nombre del archivo efi es grubx64.efi (suponiendo 64 bits). VirtualBox es quisquilloso con respecto a dónde busca un archivo de arranque. El valor predeterminado no funcionará.
Renombrar grubx64.efi
abootx64.efi
/boot/EFI/BOOT/bootx64.efi
VERR_NOT_SUPPORTED
y VERR_ACCESS_DENIED
cuando hago esto, incluso con los permisos de disco configurados 777
y con VirtualBox ejecutándose como root
./etc/fstab
para bloquear montajes.Hice un pequeño script para corregir el permiso y eso crea una nueva imagen sin procesar con el UUID correcto:
#!/bin/bash UUID="BDA52A9B-E398-4245-AF6B-6C274F54D4BD" VBOXFILE=Linux.vmdk DEVICE_IDENTIFIERIDENTIFIER=$(diskutil info $UUID | grep "Identificador de dispositivo:" - | grep -o "disco". - ) DISK="/dev/$DISPOSITIVO_IDENTIFICADORIDENTIFICADOR" echo "usando $DISCO" si prueba -f "$VBOXFILE"; entonces rm $VBOXFILE fi sudo chown $USUARIO $DISCO sudo VBoxManage comandos internos createrawvmdk -filename $VBOXFILE -rawdisk $DISK sudo chown $USUARIO $VBOXFILE VBoxAdministrar comandos internos sethduuid Linux.vmdk "$UUID"
Hice más o menos lo que quieres: acceder al disco en modo raw como arranque de Linux.
mac2011% diskutil list
Identifique el disco para 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 de máquina virtual sin procesar:
mac2011% VBoxManage internalcommands createrawvmdk -filename /Users/myself/VirtualBox\ VMs/link.vmdk -rawdisk /dev/disk
Abrir VirtualBox:
mac2011% open -a VirtualBox
Cree una máquina virtual usando "un archivo de disco duro virtual existente", en realidad elija el que acaba de crear. Haga clic en Agregar... Crear...
A menudo ocurre un error "no se pudo abrir el medio VERR_RESOURCE_BUSY", porque la Mac se volvió a montar automáticamente (verifique el escritorio), así que desmonte e intente nuevamente (use el historial de shell o escriba un script o -- y busque en otra parte cómo llenarlo) sudo vifs /etc/fstab
.
La máquina virtual se muestra [En ejecución], por lo que probablemente haya accedido al disco. (Sin embargo, el proceso de arranque se bloquea, pero esta es otra pregunta).
Espero que puedas adaptar esta receta a tus necesidades.
klanomath
david anderson
david anderson