domingo, 1 de noviembre de 2015

Iniciar Windows Instalado en el Disco Rigido con VirtualBox desde Linux

Me toco cambiar la notebook y la nueva trajo instalado el famoso Windows 10, fiel a mis costumbres cargué un Ubuntu en un pendrive y me propuse a instalar un OS de verdad, pero justo en el momento de tener que eliminar las particiones se me ocurrió dejar instalado la aplicacion de MS (perdon, el Sistema Operativo de MS) para ver cuanta verdad hay detrás de todos los comentarios y elogios a cerca del fabuloso W10. Es justo ahí donde tomé un giro y pensé en dejar instalado el Win10 y proceder a achicar la partición donde se encuentra instalado Windows para darle lugar al Linux en el HDD y luego elegir que OS usar en el momento del arranque.
No del todo conforme con la elección que tomé, me pregunte si existía alguna manera de levantar el Win10 ya instalado pero con el VirtualBox, con un poco de googleo, para mi sorpresa me di cuenta que es posible y sin mayores dificultades logré mi cometido y me reenamoré de Linux.


En el manual de VirtualBox, capitulo 9 menciona que es posible crear un archivo .vmdk especial donde se define donde se almacenaran los datos, en él se podría definir acceso directo a todo el HDD o a una partición especifica.


Ver... "9.9.1.2. Access to individual physical hard disk partitions"


Antes de Instalar Linux, con Windows ya Instalado:

  1. Con el SystemRescueCd y con la ayuda del gparted achiqué la partición donde esta instalado el Windows y de paso cree las particiones para la posterior instalación de Ubuntu.

  2. Hacer un backup de la MBR antes de Instalar Linux:
    # dd if=/dev/sda of=Win10.mbr count=1 bs=512


     
    Nota: No olvidar guardar el archivo .mbr .
  3. Instalar Linux en el esquema de partición que creamos en el punto 1.



Con Linux y el VirtualBox ya Instalado:
  1. Abrimos VirtualBox y procedemos a crear la VM.

  2. Procedemos a crear los archivos .vmdk, para eso tenemos que conocer las particiones que tenemos.

    $ sudo fdisk -l /dev/sda
    Nota: En mi caso voy a utilizar las primeras 3 particiones.
  3. Nos dirigimos al directorio donde estemos creando nuestra VM:

    Importante: Copiar el archivo Win10.mbr que tomamos previamente al directorio donde estemos creando la VM. Con el siguiente comando creamos el .vmdk:

    $ VBoxManage internalcommands createrawvmdk -filename Win10.vmdk -rawdisk /dev/sda -partitions 1,2,3 -mbr Win10.mbr
    Con el comando anterior lo que hacemos es crear el archivo de Hard Disk especial y le indicamos que utilice la MBR que creamos anteriormente.


  4. Al continuar con el Asistente vamos a llegar a la opción de agregar Virtual hard Disk, en este punto tenemos que optar por seleccionar el archivo .vmdk especial que creamos anteriormente.


  5. Procedemos a Iniciar la VM.


  6. Al usurio de Linux que opere a la VM es necesario agregarlo al grupo disk para que tenga acceso de tipo rw a las particiones del HDD.


  7. Al iniciar Windows detecta los nuevos dispositivos.


  8. Windows inicio correctamente, solo queda instalar las VM Tools.

Aclaraciones:

Opte por hacer un backup de la MBR y luego usarla para no tener que pasar por el GRUB de Linux, de esta forma también evito iniciar el Ubuntu desde la VM y causar conflictos en el File System de linux de hecho en el manual del VirtualBox aclara: "If your host operating system is also booted from this disk, please take special care to not access the partition from the guest at all. "

Troubleshooting:

De hecho tras iniciar mi Ubuntu el log de mi Sistema de Archivos (XFS) se corrompio cosa que me di cuenta cuando reinicie la maquina y el Ubuntu no lograba iniciar.
Para mi fs XFS la solución fue recrear el log con el comando: #  xfs_repair -L /dev/sda6


Si quisiera obviar la parte de backup y posterior uso de la MBR podría crear el .vmdk con las 6 particiones del HDD (en mi caso) y de esta forma utilizaría el GRUB para iniciar el Windows.

El comando seria: $ VBoxManage internalcommands createrawvmdk -filename Win10.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,6




Salu2
Hernán Nacimiento