Cómo usar el comando DD para copiar archivos VHD al disco duro físico

Los archivos de disco duro virtual (VHD) son archivos enormes que imitan el uso de medios físicos en VirtualBox y algunos otros emuladores virtuales x86 / x86_64. Esto le permite ejecutar Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS / 2 o incluso otras versiones de Linux dentro de su distribución de Linux. Estos archivos no le permiten escribir su contenido directamente en un disco físico a través del comando dd que le permite hacer lo mismo con ISO, pero hay una manera de hacerlo. Aunque algunas instrucciones requieren que convierta el archivo VHD a ISO, no necesitará hacer esto si está ejecutando VirtualBox en cualquier versión moderna de Linux. Los usuarios de QEMU también tienen una salida, aunque hay más juegos a su alrededor.

Debe asegurarse de que ninguna de las unidades o particiones con las que trabajará sea una de las unidades. Solo usamos una pieza de memoria particionada NAND, por ejemplo, pero es posible que desee usar un DVD en vivo o un arranque USB si no puede hacerlo. Independientemente de la forma en que inicie la máquina en cuestión, inicie su programa de terminal presionando Ctrl, Alt y T, buscándolo en Ubuntu Dash o abriéndolo desde el submenú Herramientas del sistema en Xfce4 o LXDE.

Método 1: use VBoxManage desde el símbolo del sistema

La forma más sencilla de hacerlo es utilizar una instalación tradicional de VirtualBox. Primero asegúrese de haber hecho una copia de seguridad de todos los datos que le preocupa perder porque eliminará cualquier dato en el hardware físico del destino y también podría hacer algo con el archivo VHD o VHDX en el proceso. Esto también se aplica al otro método, así como a todo lo relacionado con los comandos que son destructivos.

Una vez que esté seguro de que todo está seguro y que la unidad de destino no está instalada pero aún conectada a la máquina, dígale a un disco duro externo que aún está enchufado pero no montado o potencialmente sin procesar incluso cuando suelte todo lo que contiene en el proceso. , correr VBoxManage clonehd freeBSD.VHDX –form RAW freeBSD.RAW y reemplazar su disco duro virtual con freeBSD.VHDX. Teníamos un archivo de disco duro virtual con una instalación bastante modesta de FreeBSD para propósitos de prueba, de ahí el nombre.

Una vez que se complete este comando, ejecute sudo dd if = freeBSD.RAW de = / dev / sde, reemplace el nombre del archivo RAW con el RAW que creó y el dispositivo de bloque sde con el dispositivo que realmente le interesa. Si no está seguro, siempre puede ejecutar sudo fdisk -l para asegurarse de que conoce el nombre de la partición correcta. Al igual que usa dd para nada más, no desea escribir en el dispositivo incorrecto.

Es posible que se equivoque al no tener espacio en el dispositivo, tal como lo haría si intentara escribir un archivo grande en un dispositivo más pequeño, pero esto no generó problemas en las pruebas. Este proceso parece agregar ceros adicionales. De lo contrario, logró copiar el disco virtual a un disco físico en solo dos pasos y simplemente perder el tiempo.

Método 2: con el comando del servidor de dispositivos de bloque de red de disco QEMU

Los usuarios que solo tienen acceso al sistema de virtualización Quick Emulator (QEMU) tendrán que lidiar con un procedimiento un poco más tedioso que aquellos que tienen acceso al comando VBoxManage. En el símbolo del sistema, ejecute sudo modprobe nbd Después qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhdy cambió el nombre del archivo para reflejar el nombre real del archivo con el que está trabajando. Es posible que necesite sudo para ejecutar qemu-nbd, dependiendo de cómo haya configurado su instalación. Si está copiando los comandos desde aquí y pegándolos, asegúrese de cambiarlos antes de ejecutarlos. En la mayoría de los casos, solo tendrá que preocuparse por el dispositivo ndb0 aquí, por lo que no debería tener ningún problema allí.

Una vez hecho esto, puede escribir la partición con qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd Después sudo ddrescure -v -f / dev / nbd2 / dev / sde2, pero recuerde reemplazar los archivos que le interesan utilizando los archivos del dispositivo. Si los está copiando y transportando a su propio terminal, asegúrese de reemplazar esos nombres de archivo y números de partición con los nombres en los que desea escribir. Nuestro dispositivo / dev / sde era solo una tarjeta SDHC que estábamos usando para probar esto de manera segura sin dañar nada. Es posible que necesite sudo para ejecutar qemu-nbd, pero no debería necesitarlo. Del mismo modo, es posible que deba dejar los números de partición según su configuración. El proceso QEMU es casi intuitivo por estas razones.

Los usuarios de Hyper-V pueden tener una imagen VHDX en lugar de un archivo VHD. Si este es el caso, deberá ejecutar qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd reemplazando el nombre del archivo nuevamente. Si bien este formato se agregó a Windows Server 2012 para agregar más capacidad de almacenamiento a las máquinas virtualizadas, cada vez más usuarios de Linux recurren a él para escapar del límite de 2 TB de VHD. De lo contrario, estas instrucciones deberían funcionar independientemente del tamaño real del archivo en cuestión. La herramienta GNU ddrescue debería funcionar como dd, aunque se asegura de copiar primero los mejores bloques.

Cuando se ejecuta, los usuarios que trabajan con imágenes VHDX deberán ejecutar sudo ddrescue -v -f / dev / nbd2 / dev / sde2, reemplace nuevamente los archivos anteriores. De lo contrario, todos con todo tipo de imágenes pueden usar VirtualBox. qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd coloque la partición en cuestión como si fuera un disco antiguo. Necesitarás usar sudo mount / dev / nbd2 / cdrom o sudo mount / dev / nbd2 / mnt Hospedarse. Asegúrese de que no haya nada más en los directorios / cdrom o / mnt antes de intentarlo.

Método 3: desinstale el archivo y luego desconecte

Para desmontar la imagen, todo lo que tienes que hacer es usarla. sudo umount / mnt o sudo umount / cdrom desconéctelo. Después de todo, el núcleo de Linux estaba ocupado tratándolo como cualquier otro volumen.

Aún necesitará desconectarlo del sistema QEMU, sin embargo, escriba qemu-ndb -d / dev / nbd2 para desconectarlo.