VirtualBox/Tips and tricks (Español)
Tareas en GNU/Linux
Véase VirtualBox (Español) para el artículo principal.
Contents
- 1 Importar/exportar máquinas virtuales de VirtualBox a/desde otros hipervisores
- 2 Gestionar el lanzamiento de la máquina virtual
- 3 Utilizar dispositivos específicos en la máquina virtual
- 4 Acceder a un servidor huésped
- 5 Aceleración D3D en huéspedes Windows
- 6 VirtualBox en una llave USB
- 7 Ejecutar una instalación nativa de Arch Linux dentro de VirtualBox
- 8 Instalar un sistema nativo de Arch Linux desde VirtualBox
- 9 Mover una instalación nativa de Windows a una máquina virtual
- 10 Ejecutar una partición de Windows en VirtualBox
Importar/exportar máquinas virtuales de VirtualBox a/desde otros hipervisores
Si planea utilizar su máquina virtual en otro hipervisor o quiere importar en VirtualBox una máquina virtual creada con otro hipervisor, quizás podría estar interesado en la lectura de los siguientes pasos.
Eliminar complementos
Los complementos para el sistema huésped están disponibles en la mayoría de las soluciones de los hipervisores: VirtualBox cuenta con Guest Additions, VMware con VMware Tools, Parallels con Parallels Tools, etc. Estos componentes adicionales están diseñados para ser instalados en una máquina virtual después de que el sistema operativo huésped haya sido instalado. Se componen de controladores de dispositivos y aplicaciones del sistema que optimizan el sistema operativo invitado para un mejor rendimiento y usabilidad proporcionando estas características.
Si ha instalado los complementos en su máquina virtual, desinstálelos primero. Su huésped, especialmente si está usando un sistema operativo de la familia Windows, podría comportarse extrañamente, romperse o, incluso, puede que no arranque en absoluto si todavía se están utilizando los controladores específicos de otro hipervisor.
Utilizar el formato adecuado de disco virtual
Este paso dependerá de la capacidad de convertir la imagen de disco virtual directamente o no.
Herramientas de automatización
Algunos proveedores ofrecen herramientas que dan la posibilidad de crear máquinas virtuales desde un sistema operativo Windows o GNU/Linux ya se encuentre en una máquina virtual o, incluso, en una instalación nativa. Con este tipo de producto, no es necesario aplicar este y los siguientes pasos y puede dejar de leer aquí.
- Parallels Transporter no es gratis, es un producto de Parallels Inc. Esta solución consiste, básicamente, en una pieza de software llamada agent que será instalado en el sistema huésped que desee importar/convertir. A continuación, Parallels Transporter, que solo funciona en OS X, creará una máquina virtual conectada a través de agent bien por USB o por conexión de red cableada.
- VMware vCenter Converter es gratuita, previa inscripción en el sitio web de VMware, funciona casi de la misma manera que Parallels Transporter, con la particularidad de que la pieza de software que hará recopilar los datos para crear la máquina virtual solo funciona en una plataforma Windows.
Conversión manual
En primer lugar, familiarícese con los formatos soportados por VirtualBox y los formatos soportados por otros hipervisores.
- La importación o exportación de una máquina virtual a/desde VMware no es un problema en absoluto si utiliza el formato de disco VMDK o OVF, convirtiendo VirtualBox (Español)#VMDK a VDI y VDI a VMDK[broken link: invalid section] si es posible y tiene disponible la mencionada herramienta VMware vCenter de conversión.
- La importación o exportación de una máquina virtual a/desde QEMU no es ningún problema: algunos formatos de QEMU tienen soporte directamente en VirtualBox y la conversión entre VirtualBox (Español)#QCOW2 a VDI y VDI a QCOW2[broken link: invalid section] la tenemos disponible si es necesario.
- La importación o exportación de una máquina virtual a/desde Parallels es el camino más difícil: solo soporta su propio formato HDD (incluso el formato estándar y portable OVF no está soportado).
- Para exportar la máquina virtual Parallels, tendrá que utilizar la herramienta de Parallels Transporter descrita anteriormente.
- Para importar a VirtualBox, tendrá que usar VMware vCenter Converter descrito anteriormente para convertir la máquina virtual al formato VMware primero. Luego, tendrá que aplicar la solución para migrar desde VMware.
Crear la configuración de la maquina virtual para su hipervisor
Cada hipervisor tiene su propio archivo de configuración de máquina virtual: .vbox
para VirtualBox, .vmx
para VMware, un archivo config.pvs
ubicado en el paquete de la máquina virtual (archivo .pvm
), etc. De este modo, tendrá que recrear una nueva máquina virtual en su nuevo hipervisor de destino y especificar su configuración de hardware tan precisa como sea posible, de modo similar a como se hizo en su máquina virtual inicial.
Preste especial atención a la interfaz del firmware (BIOS o UEFI) utilizado para instalar el sistema operativo huésped. Mientras que existe una opción disponible para elegir entre estas 2 interfaces en VirtualBox y Parallels, en VMware, en cambio, tendrá que añadir manualmente la siguiente línea a su archivo .vmx.
ArchLinux_vm.vmx
firmware = "efi"
Por último, indique a su hipervisor el disco virtual a utilizar que ha convertido y lance la máquina virtual.
Gestionar el lanzamiento de la máquina virtual
Iniciar máquinas virtuales con un servicio
He aquí los detalles de la implementación de un servicio de systemd que se utilizará para considerar una máquina virtual como un servicio.
/etc/systemd/system/vboxvmservice@.service
[Unit] Description=VBox Virtual Machine %i Service Requires=systemd-modules-load.service After=systemd-modules-load.service [Service] User=username Group=vboxusers ExecStart=/usr/bin/VBoxManage startvm %i --type startmode ExecStop=/usr/bin/VBoxManage controlvm %i stopmode RemainAfterExit=yes [Install] WantedBy=multi-user.target
- Reemplace
username
con un usuario que sea miembro del grupovboxusers
. Asegúrese de que el usuario elegido es el mismo usuario que creará/importará las máquinas virtuales, de lo contrario el usuario no verá las aplicaciones de la máquina virtual. - Reemplace
startmode
con un tipo de frontend de máquina virtual, generalmentegui
,headless
oseparate
- Reemplace
stopmode
con el alternador de estado deseado, generalmentesavestate
oracpipowerbutton
RemainAfterExit=true
y KillMode=none
al final de la sección [Service]
.Active la unidad vboxvmservice@your_virtual_machine_name
para lanzar la máquina virtual en el próximo reinicio. Para lanzar directamente la máquina virtual, basta con iniciar la unidad de systemd.
VirtualBox 4.2 introduce una nueva forma para que sistemas tipo UNIX tengan máquinas virtuales que se inicien automáticamente, distinto al uso de un servicio systemd.
Iniciar máquinas virtuales con un atajo del teclado
Puede ser útil comenzar máquinas virtuales directamente con un atajo de teclado en lugar de utilizar la interfaz de VirtualBox (GUI o CLI). Para ello, solo tiene que definir combinaciones de teclas en .xbindkeysrc
. Remítase a Xbindkeys para más detalles.
He aquí un ejemplo, usando la tecla Fn
del portatil con una tecla no utilizada (F3
utilizada en este ejemplo):
"VBoxManage startvm 'Windows 7'" m:0x0 + c:244 XF86Battery
Utilizar dispositivos específicos en la máquina virtual
Utilizar webcam / micrófono USB
- Asegúrese de que la máquina virtual no está en funcionamiento y no se está utilizando la webcam / micrófono.
- Haga que aparezca la ventana principal de VirtualBox y vaya a la configuración de la máquina de Arch. Navegue hasta la sección USB.
- Asegúrese de que está seleccionado «Enable USB Controller». Asegúrese también de que está seleccionado «Enable USB 2.0 (EHCI) Controller».
- Haga clic en el botón «Add filter from device» (el cable con el icono '+').
- Seleccione el dispositivo de cámara web/micrófono USB de la lista.
- Ahora, haga clic en Aceptar e inicie su máquina virtual.
Detectar cámaras web y otros dispositivos USB
Si el dispositivo que está buscando no aparece en ninguno de los menús en la sección anterior y ha probado las tres opciones de controlador USB, arranque su máquina virtual tres veces separadamente. Una vez usando el controlador USB 1.1, otro usando el controlador USB 2.0, etc. Deje que la máquina virtual se ejecute durante al menos 5 minutos después del inicio. A veces Windows detectará automáticamente el dispositivo. Asegúrese de filtrar cualquier dispositivo que no sea un teclado o un mouse para que no se inicien en el arranque. Esto asegura que Windows detectará el dispositivo en el inicio.
Acceder a un servidor huésped
Para acceder a un servidor Apache en una máquina virtual de un solo equipo anfitrión, basta con ejecutar la siguientes líneas en el equipo anfitrión:
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/HostPort" 8888 $ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/GuestPort" 80 $ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/Protocol" TCP
Donde 8888 es el puerto por el que el equipo anfitrión debe escuchar y el 80 es el puerto por el que la máquina virtual enviará la señal al servidor Apache.
Para utilizar un puerto inferior a 1024 en el equipo anfitrión, los cambios tienen que ser reflejados en el cortafuegos de la máquina anfitriona. Esto también puede ser configurado para trabajar con SSH o con cualquier otro servicio cambiando «Apache» para los servicios y puertos correspondientes.
pcnet
se refiere a la tarjeta de red de la máquina virtual. Si utiliza una tarjeta de Intel en la configuración de la máquina virtual, cambie pcnet
a e1000
.To communicate between the VirtualBox guest and host using ssh, the server port must be forwarded under Settings > Network. When connecting from the client/host, connect to the IP address of the client/host machine, as opposed to the connection of the other machine. This is because the connection will be made over a virtual adapter.
Aceleración D3D en huéspedes Windows
Las versiones recientes de Virtualbox tienen soporte para la aceleración OpenGL dentro de los sistemas huéspedes. Esto se puede activar marcando una simple casilla en la configuración del equipo, justo debajo de donde se establece la memoria RAM de vídeo y la instalación de las aplicaciones del sistema huésped en VirtualBox. Sin embargo, la mayoría de los juegos de Windows utilizan Direct3D (parte de DirectX), no OpenGL, y, por lo tanto, no son ayudados por este método. No obstante, es posible obtener la aceleración Direct3D en los sistemas huéspedes Windows mediante préstamos de las bibliotecas D3D de wine, que traducen d3d a OpenGL, permitiendo la aceleración. Estas bibliotecas son ahora parte del software guest additions de Virtualbox.
Después de activar la aceleración OpenGL como se describió anteriormente, reinicie el sistema huésped en modo seguro (presione F8 antes de que aparezca la pantalla de Windows, pero después de que desaparezca la pantalla de Virtualbox), e instale las guest additions de Virtualbox, durante la instalación active la casilla «Direct3D support». Reinicie en modo normal y ya debería tener aceleración Direct3D.
VirtualBox en una llave USB
Al usar VirtualBox en una llave USB, por ejemplo, para iniciar una máquina instalada una imagen ISO, tendrá que crear de forma manual VDMKs desde las unidades existentes. Sin embargo, una vez que los nuevos VMDK se guardan y se mueve a otra máquina, puede experimentar problemas al iniciar una máquina de forma apropiada de nuevo. Para deshacerse de este problema, puede utilizar el siguiente script para iniciar VirtualBox. Este script va a limpiar y eliminar el registro de archivos VMDK viejos y creará nuevos VMDK adecuados:
#!/bin/bash # Borrar entradas viejas VMDK rm ~/.VirtualBox/*.vmdk # Limpiar registro VBox sed -i '/sd/d' ~/.VirtualBox/VirtualBox.xml # Eliminar discos duros antiguos de las máquinas existentes find ~/.VirtualBox/Machines -name \*.xml | while read file; do line=`grep -e "type\=\"HardDisk\"" -n $file | cut -d ':' -f 1` if [ -n "$line" ]; then sed -i ${line}d $file sed -i ${line}d $file sed -i ${line}d $file fi sed -i "/rg/d" $file done # Eliminar archivos previos creados por VirtualBox find ~/.VirtualBox/Machines -name \*-prev -exec rm '{}' \; # Recrear VMDKs ls -l /dev/disk/by-uuid | cut -d ' ' -f 9,11 | while read ln; do if [ -n "$ln" ]; then uuid=`echo "$ln" | cut -d ' ' -f 1` device=`echo "$ln" | cut -d ' ' -f 2 | cut -d '/' -f 3 | cut -b 1-3` # Determinar si la unidad está ya montada checkstr1=`mount | grep $uuid` checkstr2=`mount | grep $device` checkstr3=`ls ~/.VirtualBox/*.vmdk | grep $device` if [[ -z "$checkstr1" && -z "$checkstr2" && -z "$checkstr3" ]]; then VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/$device.vmdk -rawdisk /dev/$device -register fi fi done # Iniciar VirtualBox VirtualBox
Tenga en cuenta que su usuario tiene que ser añadido al grupo «disk» para poder crear VMDK fuera de las unidades existentes.
Ejecutar una instalación nativa de Arch Linux dentro de VirtualBox
Si tiene un sistema de arranque dual entre Arch Linux y otro sistema operativo, puede resultar sumamente tedioso tener que alternar entre uno y otro para trabajar. Por otro lado, mediante el uso de máquinas virtuales, solo se dispone de un pequeño fragmento de energía del equipo, que puede causar problemas cuando se trabaja en proyectos de cierta envergadura.
Esta guía le permitirá utilizar, en una máquina virtual, la instalación nativa de Arch Linux cuando se está ejecutando el segundo sistema operativo. De esta forma, mantendrá la capacidad de ejecutar cada sistema operativo de forma nativa, pero con la opción de ejecutar la instalación de Arch Linux en una máquina virtual.
Asegurarse de que se tiene un esquema de nombres persistentes
Dependiendo de la configuración del disco duro, la representación de los archivos de los dispositivos del disco duro pueden aparecer de forma diferente cuando se ejecuta la instalación de Arch Linux de forma nativa o en la máquina virtual. Este problema se produce cuando se utiliza FakeRAID por ejemplo. El dispositivo FakeRAID vendrá asignado como /dev/mapper/
al ejecutar la distribución GNU/Linux de forma nativa, al tiempo que los demás dispositivos siguen siendo accesibles por separado. Sin embargo, en su máquina virtual, puede aparecer sin ningún mapeo como /dev/sdaX
por ejemplo, porque los controladores que controlan el FakeRAID en su sistema operativo anfitrión (por ejemplo, Windows) se abstraerán del dispositivo FakeRAID.
Para evitar este problema, tendremos que utilizar un esquema de direccionamiento que sea persistente en ambos sistemas. Esto se puede lograr usando UUID en su archivo /etc/fstab
. Asegúrese de que su archivo fstab (Español) utiliza UUID para solucionar este problema. Lea fstab (Español) y Persistent block device naming (Español).
Asegurarse de que su imagen mkinitcpio es correcta
Asegúrese de que la configuración de su mkinitcpio utiliza el HOOK block
:
/etc/mkinitcpio.conf
[...] HOOKS="base udev autodetect modconf block filesystems keyboard fsck" [...]
Si no está presente, añádalo y regenere su initramfs con la orden # mkinitcpio -p linux
, cuyo uso se describe aquí con detalle.
Crear una configuración de máquina virtual para arrancar desde la unidad física
Crear una imagen .vmdk de disco raw
Ahora, tenemos que crear una nueva máquina virtual que utilizará un disco RAW como unidad virtual, para lo cual vamos a utilizar un archivoVMDK de ~ 1Kio que será asignado a un disco físico. Desafortunadamente, VirtualBox no tiene esta opción en la interfaz gráfica de usuario, por lo que tendrá que utilizar la consola y utilizar una orden interna de VBoxManage
.
Arranque el sistema anfitrión que utilizará la máquina virtual de Arch Linux. La orden tendrá que ser adaptada al sistema anfitrión que tenga.
- En un sistema anfitrión GNU/Linux
Hay 3 maneras de lograr esto: iniciando sesión como root, cambiando los derechos de acceso al dispositivo con chmod
o añadiendo su usuario al grupo disk
. Esta última forma es la más elegante, así que vamos a proceder de esa manera:
# gpasswd -a your_user disk
Aplicar la nueva configuración de grupo con:
$ newgrp
Ahora, puede utilizar la orden:
$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdb -register
Adaptar la orden anterior a sus características, especialmente la ruta, el nombre de la ubicación VMDK y la ubicación del disco raw para el mapeo que contiene la instalación de Arch Linux.
- En un sistema anfitrión Windows
Abra un símbolo del sistema como administrador.
En Windows, como la convención de nombres de archivos del disco es diferente de UNIX, utilice esta orden para determinar qué unidades tiene en su sistema Windows y cuál es su ubicación:
# wmic diskdrive get name,size,model
Model Name Size WDC WD40EZRX-00SPEB0 ATA Device \\.\PHYSICALDRIVE1 4000783933440 KINGSTON SVP100S296G ATA Device \\.\PHYSICALDRIVE0 96024821760 Hitachi HDT721010SLA360 ATA Device \\.\PHYSICALDRIVE2 1000202273280 Innostor Ext. HDD USB Device \\.\PHYSICALDRIVE3 1000202273280
En este ejemplo, como la convención de Windows es \\.\PhysicalDriveX
donde X es un número, \\.\PHYSICALDRIVE1
podría ser análogo a /dev/sdb
en la terminología de los discos en Linux.
Para usar la orden VBoxManage
en Windows, puede, o bien moverse del directorio actual a la carpeta de instalación de VirtualBox primero con cd C:\Program Files\Oracle\VirtualBox\
# .\VBoxManage.exe internalcommands createrawvmdk -filename C:\file.vmdk -rawdisk \\.\PHYSICALDRIVE1
o bien, usar la ruta absoluta:
# «C:\Program Files\Oracle\VirtualBox\VBoxManage.exe» internalcommands createrawvmdk -filename C:\file.vmdk -rawdisk \\.\PHYSICALDRIVE1
- En un sistema anfitrión de otro sistema operativo
Hay otras limitaciones en cuanto a la orden antes mencionada cuando se utiliza en otros sistemas operativos como OS X, por favor lea atentamente la página del manual, si le concierne.
Crear el archivo de configuración de la máquina virtual
- Para hacer uso de la orden VBoxManage en Windows, es necesario primero moverse del directorio actual a la carpeta de instalación de VirtualBox: cd C:\Program Files\Oracle\VirtualBox\.
- Windows hace uso de las barras invertidas en lugar de barras normales, de modo que no olvide cambiar las barras normales / a las barras invertidas \ cuando aparezcan en las órdenes que siguen.
Después, tenemos que crear una nueva máquina (sustituir el VM_NAME a su conveniencia) y registrarla en VirtualBox.
$ VBoxManage createvm -name VM_name -register
A continuación, el disco recién creado necesita ser asociado a la máquina. Esto dependerá si el equipo o raiz vigente de la instalación nativa de Arch Linux tiene una controladora IDE o SATA.
Si necesita una controladora IDE:
$ VBoxManage storagectl VM_name --name "IDE Controller" --add ide $ VBoxManage storageattach machineA --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
de otro modo:
$ VBoxManage storagectl VM_name --name "SATA Controller" --add sata $ VBoxManage storageattach machineA --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
Aunque utilice la CLI, es recomendable utilizar la interfaz gráfica de VirtualBox para personalizar la configuración de la máquina virtual. De hecho, debe especificar su configuración de hardware tan precisa como le sea posible, como si lo hiciese en una máquina nativa: conectar la aceleración 3D, aumentar la memoria de vídeo, ajustar la interfaz de red, etc.
Por último, es posible que desee una integración perfecta entre su sistema Arch Linux y su sistema operativo anfitrión, permitiendo la función de pegar y copiar entre ambos sistemas operativos. Por favor, consulte VirtualBox (Español)#Instalar complementos para el sistema huésped[broken link: invalid section] ya que, no debemos olvidar que esta máquina virtual de Arch Linux no deja de ser un sistema huésped cuando se ejecuta sobre el otro sistema operativo.
Instalar un sistema nativo de Arch Linux desde VirtualBox
En algunos casos, puede ser útil instalar un sistema nativo de Linux Arch mientras se ejecuta otro sistema operativo: una forma de lograr esto es realizar la instalación a través de VirtualBox en un disco raw. Si el sistema operativo existente está basado en Linux, es posible que desee considerar el siguiente artículo Install from existing Linux (Español) en su lugar.
Este escenario es muy similar a la #Ejecutar una instalación nativa de Arch Linux dentro de VirtualBox, pero seguirá los pasos en un orden diferente: empiece por #Crear una imagen .vmdk de disco raw, y luego #Crear el archivo de configuración de la máquina virtual.
Ahora, debe tener una configuración de máquina virtual funcional cuyos discos virtuales VMDK están ligados a un disco real. El proceso de instalación es exactamente lo mismo que el descrito en VirtualBox (Español)#Pasos para preparar Arch Linux como sistema anfitrión, pero asegurándose de que tiene un esquema de nombres persistentes[broken link: invalid section] y que su imagen mkinitcpio es correcta.
Después de completar la instalación, arranque el ordenador con un soporte de instalación de GNU/Linux (ya se trate de Arch Linux o no), entre en entorno chroot en su recién instalado Arch Linux e instale y configure un gestor de arranque.
Mover una instalación nativa de Windows a una máquina virtual
Si desea migrar una instalación de Windows nativa existente a una máquina virtual que se utilizará con VirtualBox en GNU/Linux, siga leyendo. Esta sección solo trata la instalación nativa de Windows utilizando el esquema de particiones MS-DOS/Intel. Su instalación de Windows debe residir en la primera partición del MBR para que esta operación tenga éxito. La operación también es posible en otras particiones, pero no ha sido probada (Consulte #Limitaciones conocidas para conocer detalles).
Se requiere un par de tareas a realizar en el interior de la instalación original de Windows primero, y luego en su sistema GNU/Linux anfitrión.
Tareas en Windows
Los primeros tres siguientes puntos vienen de esta página desactualizada de la wiki de VirtualBox, pero se actualizan aquí.
- Elimine los chequeos de las controladoras de IDE/ATA (solo en Windows XP): Windows memoriza las controladoras de disco IDE/ATA cuando se ha instalado y no arrancará si detecta que estos han cambiado. La solución propuesta por Microsoft es volver a utilizar la misma controladora o utilizar una de la misma serie, lo cual es imposible de lograr ya que estamos utilizando una máquina virtual. Se puede utilizar MergeIDE, una herramienta alemana, desarrollada sobre la base de una solución propuesta por Microsoft. Esta solución consiste básicamente en tomar todos los controladores de la controladora ATA/IDE compatibles con Windows XP desde el archivo del controlador inicial (la ubicación está codificada, o especificada como el primer argumento del script
.bat
), instalándolos y registrándolos con la base de datos regedit.
- Utilice el tipo Hardware Abstraction Layer (versiones de Windows de 32 bits viejas): Microsoft incluye 3 versiones por defecto:
Hal.dll
(Standard PC),Halacpi.dll
(ACPI HAL) yHalaacpi.dll
(ACPI HAL con IO APIC). Su instalación de Windows podría venir instalado con la primera o la segunda versión. Si es así desactive la característica extendida Enable IO/APIC de VirtualBox.
- Desactive cualquier controlador del dispositivo AGP (solo versiones obsoletas de Windows): si tiene los archivos
agp440.sys
ointelppm.sys
dentro de la carpetaC:\Windows\SYSTEM32\drivers\
retírelos. Como VirtualBox utiliza una tarjeta gráfica PCI virtual, esto puede causar problemas cuando se utiliza este controlador AGP.
- Crear un disco de recuperación de Windows: en los siguientes pasos, si la operación sale mal, tendrá que reparar la instalación de Windows. Asegúrese de tener un soporte de instalación a mano, o cree uno con la utilidad Crear un disco de recuperación de Windows.
Using Disk2vhd to clone Windows partition
Boot into Windows, clean up the installation (with CCleaner for example), use disk2vhd tool to create a VHD image. Include a reserved system partition (if present) and the actual Windows partition (usually disk C:). The size of Disk2vhd-created image will be the sum of the actual files on the partition (used space), not the size of a whole partition. If all goes well, the image should just boot in a VM and you will not have to go through the hassle with MBR and Windows bootloader, as in the case of cloning an entire partition.
Tareas en GNU/Linux
- Reduzca el tamaño de la partición donde tenga instalado Windows nativo al tamaño que Windows necesita realmente con
ntfsresize
, disponible en el paquete ntfs-3g. El tamaño que especifique será el mismo tamaño de la VDI que se creará en el siguiente paso. Si este tamaño es demasiado bajo, es posible romper su instalación de Windows y este último podría provocar que no arranque en absoluto.
- Utilice la opción
--no-action
primero para realizar una prueba: # ntfsresize --no-action --size 52Gi /dev/sda1
- Si la prueba anterior tuvo éxito, ejecute la orden de nuevo, pero esta vez sin la opción antes mencionada.
- Instale VirtualBox en su sistema anfitrión GNU/Linux (vea #Pasos para preparar Arch Linux como sistema anfitrión[broken link: invalid section] si su sistema anfitrión es Arch Linux).
- Cree la imagen de disco de Windows desde el principio de la unidad hasta el final de la primera partición donde se encuentra la instalación de Windows. Es necesario copiar desde el principio del disco porque el espacio del MBR del principio de la unidad tiene que estar en la unidad virtual junto con la partición de Windows. En este ejemplo las dos siguientes particiones
sda2
ysda3
serán eliminadas de la tabla de particiones y el gestor de arranque MBR será actualizado.
# sectnum=$(( $(cat /sys/block/''sda/sda1''/start) + $(cat /sys/block/''sda/sda1''/size) ))
- El uso de
cat /sys/block/sda/sda1/size
mostrará el número de sectores totales de la primera partición del discosda
. Adaptar cuando sea necesario.
# dd if=''/dev/sda'' bs=512 count=$sectnum | VBoxManage convertfromraw stdin ''windows.vdi'' $(( $sectnum * 512 ))
- Tenemos que obtener el tamaño en bytes,
$(( $sectnum * 512 ))
convertirá los números de sector a bytes.
- Cree el archivo de configuración de la máquina virtual y utilice el disco virtual creado anteriormente como disco duro virtual principal.
# chown $USER:users windows.vdi
.
- Trate de arrancar su maquina virtual de Windows, Debería funcionar sin más. Primero, sin embargo, retire y repare los discos desde el proceso de arranque, ya que pueden interferir (y probablemente lo hagan) arrancar en modo seguro.
- Intente arrancar su máquina virtual Windows en modo seguro (pulse la tecla F8 antes de que el logotipo de Windows aparezca)... si se dan problemas de arranque, lea #Arreglar el MBR y el gestor de arranque de Microsoft. En modo seguro, los controladores se instalarán probablemente por el mecanismo de detección plug-and-play de Windows (vistas). Adicionalmente, instale los Guest Additions de VirtualBox a través del menú Devices > Insert Guest Additions CD image.... Si no aparece un nuevo diálogo para el disco, vaya a la unidad del CD e inicie el instalador manualmente.
- Finalmente, debe tener una máquina virtual de Windows funcional. No se olvide de leer las #Limitaciones conocidas.
- Performance tip: according to VirtualBox manual, SATA controller has a better performance than IDE. If you cannot boot Windows off virtual SATA controller right away, it is probably due to the lack of SATA drivers. Attach virtual disk to IDE controller, create an empty SATA controller and boot the VM - Windows should automatically install SATA drivers for the controller. You can then shutdown VM, detach virtual disk from IDE controller and attach it to SATA controller instead.
Arreglar el MBR y el gestor de arranque de Microsoft
Si su máquina virtual Windows se niega a arrancar, puede que tenga que aplicar las siguientes modificaciones a su máquina virtual.
- Arranque una distribución GNU/Linux en su máquina virtual antes de que Windows se inicie.
- Retire las otras entradas de las particiones del MBR del disco virtual. De hecho, ya hemos copiado el MBR y dejado únicamente la partición de Windows, las entradas de las otras particiones están todavía presentes en el MBR, pero las particiones ya no están disponibles. Use
fdisk
para lograr esto, por ejemplo.
fdisk ''/dev/sda'' Command (m for help): a Partition number (''1-3'', default ''3''): ''1''
- Escriba la tabla de partición actualizada en el disco (esto volverá a crear el MBR) utilizando la orden
m
confdisk
.
# testdisk > Disk /dev/sda...' > [Proceed] > [Intel] Intel/PC partition > [MBR Code] Write TestDisk MBR to first sector > Write a new copy of MBR code to first sector? (Y/n) > Y > Write a new copy of MBR code, confirm? (Y/N) > A new copy of MBR code has been written. You have to reboot for the change to take effect. > [OK]
- Con el nuevo MBR y la tabla de particiones actualizada, su máquina virtual Windows debería ser capaz de arrancar. Si todavía encuentra problemas, arranque su disco de recuperación de Windows aconsejado realizar en la etapa anterior y, dentro de su entorno de Windows de recuperación, ejecute las órdenes descritas aquí.
Limitaciones conocidas
- Su máquina virtual, a veces, puede colgarse y desbordar la memoria RAM, lo cual puede ser causado por controladores en conflicto todavía instalados en su máquina virtual Windows. ¡Buena suerte en encontrarlos!
- El software adicional que espera un controlador dado puede, o bien estar el controlador desactivado/desinstalado, o bien el software necesita ser desinstalado primero respecto de los controladores que ya no están disponibles.
- Su instalación de Windows debe residir en la primera partición para que el proceso anterior pueda funcionar. Si no se cumple este requisito, el proceso podría lograrse también, pero esto no ha sido probado. Para ello será necesario copiar el MBR y editarlo en formato hexadecimal (vea VirtualBox: arrancar disco clonado) lo cual requerirá arreglar la tabla de particiones, bien manualmente, o bien mediante la reparación de Windows con el disco de recuperación que creó en el paso anterior. Consideremos que nuestra instalación de Windows está en la segunda partición; vamos a copiar el MBR y, a continuación, la segunda partición en la que reside la imagen del disco.
VBoxManage convertfromraw
necesita saber el número total de bytes que se escribirán: calculados gracias al tamaño del MBR (el comienzo de la primera partición) más el tamaño de la segunda partición (Windows).{ dd if=/dev/sda bs=512 count=$(cat /sys/block/sda/sda1/start) ; dd if=/dev/sda2 bs=512 count=$(cat /sys/block/sda/sda2/size) ; } | VBoxManage convertfromraw stdin windows.vdi $(( ($(cat /sys/block/sda/sda1/start) + $(cat /sys/block/sda/sda2/size)) * 512 ))
.
Ejecutar una partición de Windows en VirtualBox
En algunos casos, es útil poder tener un arranque dual con Windows y acceder a la partición en una máquina virtual. Este proceso es significativamente diferente a la operación de #Mover una instalación nativa de Windows a una máquina virtual en varios puntos
- La partición de Windows no se copia a una imagen de disco virtual. En su lugar, se crea un archivo VMDK en bruto
- Los cambios en la máquina virtual se reflejarán en la partición, y viceversa
- Las licencias OEM aún deben estar satisfechas, ya que la partición de Windows se arranca directamente en el hardware
Configurar udev para dar acceso sin formato a VirtualBox a las particiones de Windows
VirtualBox debe tener acceso a disco sin formato para ejecutar una partición de Windows. Normalmente, esto requeriría que VirtualBox se ejecutara con privilegios de root completos, pero udev (Español) se puede configurar para restringir el acceso a ciertas particiones. Una forma conveniente de hacer esto es asignar todas las particiones relacionadas con Windows al grupo vboxusers, lo que se puede hacer con las siguientes reglas de udev:
/etc/udev/rules.d/99-vbox.rules
# Rules to give VirtualBox users raw access to Windows partitions # Microsoft Reserved partitions (msftres) SUBSYSTEM=="block", ENV{ID_PART_ENTRY_TYPE}=="e3c9e316-0b5c-4db8-817d-f92df00215ae", GROUP="vboxusers" # Windows partitions (msftdata) SUBSYSTEM=="block", ENV{ID_PART_ENTRY_TYPE}=="ebd0a0a2-b9e5-4433-87c0-68b6b72699c7", GROUP="vboxusers"
Configuración de VirtualBox
Una máquina virtual de VirtualBox se puede crear manualmente con una configuración personalizada.
Configure la máquina virtual con la siguiente configuración:
- Sistema
- Placa base
- Activar E/S APIC
- Activar EFI
- Reloj de hardware en hora UTC
- Aceleración
- Interfaz de Paravirtualización: Hyper-V
- Activar VT-x / AMD-V
- Activar paginación anidada
- Placa base
- Pantalla > Screen > Aceleración
- Activar aceleración 3D
- Activar aceleración 2D
- USB > Activar controlador USB
Crear archivos de imagen de disco virtual
Para acceder a las particiones de Windows, cree un archivo VMDK en bruto que apunte a las particiones de Windows relevantes y establezca la propiedad:
# vboxmanage internalcommands createrawvmdk -filename /path/to/vm/folder/windows.vmdk -rawdisk /dev/sdx -partitions res,data -relative # chown user:group /path/to/vm/folder/windows.vmdk
- Acceda como root porque VirtualBox debe leer la tabla de particiones.
- El parámetro
-rawdisk
debe apuntar a un dispositivo de bloque, no a una partición. - res es el número de partición de la partición reservada de Microsoft.
- data es el número de partición de la partición de datos básicos de Microsoft (es decir, la instalación de Windows).
- También se creará un archivo adicional (windows-pt.vmdk).
- windows.vmdk tendrá que volver a crearse si se cambia la tabla de particiones.
Después de crear la imagen, cambie la propiedad para que el usuario/grupo deseado tenga acceso:
Para iniciar la máquina virtual en modo UEFI, se debe crear un disco virtual dedicado para la partición EFI system partition (Español):
$ vboxmanage createmedium disk --filename /path/to/vm/folder/esp.vmdk --size 512 --format VMDK