Como usar o comando DD para copiar arquivos VHD para o disco rígido físico



Experimente Nosso Instrumento Para Eliminar Problemas

Os arquivos de disco rígido virtual (VHD) são arquivos gigantes que emulam o uso de mídia física no VirtualBox e alguns outros emuladores virtuais x86 / x86_64. Isso permite que você execute Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS / 2 ou até mesmo outras versões do Linux dentro de sua distribuição Linux. Esses arquivos não permitem que você grave seu conteúdo diretamente em um disco físico por meio do comando dd, que permite fazer o mesmo com um ISO, mas há uma maneira de fazer isso. Embora alguns guias exijam que você converta o arquivo VHD em um ISO, você não terá que fazer isso se estiver executando o VirtualBox em qualquer versão moderna do Linux. Os usuários do QEMU também têm uma saída, embora envolva mais brincadeiras.



Você precisará certificar-se de que nenhuma das unidades ou partições com as quais trabalhará seja aquela a partir da qual você inicializará. Acabamos de usar um pedaço de memória NAND particionada para este exemplo, mas você pode querer usar um DVD ao vivo ou boot USB se de outra forma não for capaz de fazer isso. Independentemente de como você inicializou a máquina em questão, inicie seu programa de terminal mantendo pressionadas as teclas Ctrl, Alt e T, procurando por ele no Ubuntu Dash ou abrindo-o nos submenus System Tools no Xfce4 ou LXDE.



Método 1: usando VBoxManage no prompt de comando

De longe, a maneira mais fácil de fazer isso é usando uma instalação tradicional do VirtualBox. Certifique-se primeiro de fazer backup de todos os dados que está preocupado em perder, porque você vai destruir todos os dados no hardware físico do destino, enquanto você também pode acabar fazendo algo no arquivo VHD ou VHDX no processo. Isso vale para o outro método também, assim como qualquer coisa que envolva comandos que sejam destrutivos.



Depois de ter certeza de que tudo está seguro e que a unidade de destino está desmontada, mas ainda conectada à máquina, digamos um disco rígido externo que você ainda conectou, mas não está montado ou pode até estar bruto, pois você perderá tudo nele no processo, execute VBoxManage clonehd freeBSD.VHDX –format RAW freeBSD.RAW ao substituir freeBSD.VHDX com seu disco rígido virtual. Tínhamos um arquivo de disco rígido virtual com uma instalação moderada do FreeBSD para fins de teste, daí o nome.

Assim que este comando for concluído, execute sudo dd if = freeBSD.RAW de = / dev / sde , substituindo o nome do arquivo RAW pelo RAW que você acabou de criar e o dispositivo de bloco sde pelo dispositivo no qual você está realmente interessado. Se você não tiver certeza, pode sempre executar sudo fdisk -l para ter certeza de saber o nome da partição correto. Assim como usar o dd para qualquer outra coisa, você não quer escrever no dispositivo errado.

Você pode obter um erro sobre não haver espaço restante no dispositivo, como se você tentasse gravar um arquivo grande em um dispositivo menor, mas isso não causou problemas nos testes. Parece que esse processo adiciona zeros extras. Caso contrário, você pode copiar o disco virtual para um disco físico em apenas duas etapas com o mínimo de brincadeiras.



Método 2: Com o comando de servidor de dispositivo de bloco de rede de disco QEMU

Os usuários que têm acesso apenas ao sistema de virtualização Quick Emulator (QEMU) terão que lidar com um procedimento um pouco mais complicado do que aqueles que têm acesso ao comando VBoxManage. No prompt de comando, execute sudo modprobe nbd Seguido por qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhd , com o nome do arquivo alterado para refletir o nome real do arquivo com o qual você está trabalhando. Você pode precisar do sudo para executar qemu-nbd, dependendo de como você configurou sua instalação. Se você estiver copiando os comandos daqui e colando-os, certifique-se de alterá-los antes de executá-los. Na maioria dos casos, você só terá o dispositivo ndb0 para se preocupar aqui, então você não deve ter problemas lá.

Uma vez feito isso, você pode escrever a partição com qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd Seguido por sudo ddrescure -v -f / dev / nbd2 / dev / sde2 , mas lembre-se de substituir os arquivos do dispositivo por aqueles que você realmente tem interesse em usar. Se você estiver copiando e colando em seu próprio terminal, certifique-se de substituir esses nomes de arquivo e números de partição pelos que você está tentando escrever. Nosso dispositivo / dev / sde era meramente um cartão SDHC usado que estávamos usando para testar isso com segurança sem danificar nada. Você pode precisar do sudo para executar o qemu-nbd, mas não deve ser necessário. Da mesma forma, você pode ter que descartar os números de partição dependendo de sua configuração. O processo QEMU não é tão intuitivo por esses motivos.

Os usuários do Hyper-V podem ter uma imagem VHDX em vez de um arquivo VHD. Se for esse o caso, você precisará executar qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd enquanto substitui o nome do arquivo mais uma vez. Embora esse formato tenha sido uma adição ao Windows Server 2012 para adicionar maior capacidade de armazenamento às máquinas virtualizadas, cada vez mais usuários Linux estão recorrendo a ele para escapar do limite de 2 TB que o VHD tem. Caso contrário, essas instruções devem funcionar independentemente do tamanho real do arquivo em questão. A ferramenta GNU ddrescue deve funcionar como dd, embora certifique-se de copiar os melhores blocos primeiro.

Uma vez executado, os usuários que trabalham com imagens VHDX precisarão executar sudo ddrescue -v -f / dev / nbd2 / dev / sde2 , novamente substituindo os arquivos acima. Caso contrário, qualquer pessoa com todos os tipos de imagens do VirtualBox pode usar qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd para montar a partição em questão como se fosse qualquer disco antigo. Você precisará usar sudo mount / dev / nbd2 / cdrom ou sudo mount / dev / nbd2 / mnt para montá-lo. Certifique-se de que nada mais está montado nos diretórios / cdrom ou / mnt antes de tentar.

Método 3: desmontar e depois desconectar o arquivo

Para desmontar a imagem, você simplesmente precisa usar sudo umount / mnt ou sudo umount / cdrom para separá-lo. Afinal, o próprio kernel do Linux estava ocupado tratando-o como se fosse qualquer outro volume.

Você ainda precisará desconectá-lo do sistema QEMU, então digite qemu-ndb -d / dev / nbd2 para desconectá-lo.

4 minutos lidos