Como altero o UUID de um disco virtual?

131

Estou tentando criar uma nova máquina virtual com o Oracle VirtualBox, usando um disco rígido já existente. Quando tento selecionar o arquivo do disco rígido existente, um arquivo .vhd, ele exibe um erro dizendo que o disco rígido virtual não pode ser usado porque o UUID já existe.

Então, eu tentei o seguinte comando para alterar seu UUID.

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

Eu recebo esse erro.

Erro de sintaxe: parâmetro UUID inválido

Como posso resolver isto?

CJAY
fonte
1
Os caminhos com caracteres de espaço devem ser colocados entre aspas duplas, como você já descobriu.
AB

Respostas:

171

O comando correto é o seguinte.

VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"

O caminho para o disco virtual contém um espaço, portanto, ele deve ser colocado entre aspas duplas para evitar que seja analisado como dois parâmetros.

CJAY
fonte
25
Eu realmente desejo que o VirtualBox tenha alguma interface do usuário ou uma janela que nos permita mudar isso
fedmich
1
Isso precisa ser citado devido ao espaço no caminho do arquivo.
Chris Stryczynski
Seria bom se a interface do VirtualBox desse a opção de gerar um novo UUID quando você tentasse abrir um disco já conhecido. Honestamente, eu realmente não uso o gerenciador de disco para nada, prefiro que o VirtualBox trate os discos virtuais como caminhos de arquivo, em vez de tentar tratá-los como recursos para gerenciar e rastrear.
jrh 10/04
34

O seguinte funcionou para mim:

  1. execute comandos internos do VBoxManage sethduuid "arquivo VDI / VMDK" duas vezes (a primeira vez é apenas para gerar convenientemente um UUID, você pode usar qualquer outro método de geração de UUID)

  2. abra o arquivo .vbox em um editor de texto

  3. substitua o UUID encontrado na Máquina uuid = "{...}" pelo UUID que você obteve ao executar o sethduuid pela primeira vez

  4. substitua o UUID encontrado no HardDisk uuid = "{...}" e na imagem uuid = "{}" (no final) pelo UUID que você obteve ao executar o sethduuid pela segunda vez

borchvm
fonte
1
Penso que esta resposta é mais útil para qualquer pessoa (incluindo eu) que queira copiar a máquina virtual.
Cbuchart
1
Apenas me pergunto - por que você precisou mudar o Machine uuid? Se eu apenas quero copiar o disco vmdk de uma máquina para outra, não preciso disso, certo?
Oleg Gryb
1
Você precisa alterar o uuid da máquina se copiar o disco virtual na mesma máquina
borchvm
1
Funcionou perfeito no meu caso, obrigado! Não precisei ajustar o UUID da máquina.
Benco
1
@FabrizioBertoglio espero que você tenha sua resposta - mas você precisa interromper os serviços vbox de qualquer tipo para editar esses arquivos - caso contrário, você obtém o mesmo ole da mesma ole. Verifique também se o UUID para SATA HardDisk <dispositivos conectados> na parte inferior do arquivo de configuração corresponde ao UUID do disco rígido na seção HardDrive na parte superior do arquivo de configuração. Antes de fazer isso, você também deseja adicionar um <Hardware UUID = myMachineUUID>.
21419 Ken
12

Se você copiou um disco (arquivo vmdk) de uma máquina para outra e precisa alterar o UUID de um disco na cópia, não é necessário alterar o UUID da máquina, conforme sugerido por outra resposta.

Tudo que você precisa fazer é atribuir um novo UUID à imagem do disco:

VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb

e substitua o antigo UUID pelo recém-gerado em dois lugares no seu arquivo * .vbox

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>

e em

    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
      <Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
    </AttachedDevice>

Funcionou para mim para o VirtualBox ver. 5.1.8 em execução no Mac OS X El Capitan.

Oleg Gryb
fonte
Você provavelmente está certo. Eu segui sua instrução e ainda tenho o erro Consultando UUID Falha, mesmo se o disco rígido aparecer correctamente tanto no file -> Virtual Media Managere sobre as configurações de máquina com o UUID correta
Fabrizio Bertoglio
Não tenho certeza de qual é o seu caso. O que eu descrevi acima é exatamente o que eu fiz e ele trabalhou para mim no Mac com VB 5.1.8
Oleg Gryb
Eu ter resolvido o problema com as seguintes etapas: 1. re-installing virtual box using synaptic package managerem seguida, 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.O problema foi corrigido.
Fabrizio Bertoglio
@OlegGryb Pode depender do SO do host e também do SO convidado.
21719 Ken
11

Embora você tenha resolvido o problema, acabei de postar aqui o motivo de alguns com o mesmo problema.

O motivo é que há um espaço no seu caminho (nome do diretório VirtualBox VMs) que separará o comando. Então o erro aparece.

Java Xu
fonte
11

Eu procurei na web por uma resposta sobre o MAC OS, então .. a solução é

cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
fonte
1
Super útil !!
Addo Solutions
6

O comando falha porque possui espaço em um dos nomes da pasta, ou seja, 'VMs do VirtualBox.

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

Se não houver espaço no nome da pasta ou do arquivo, o comando funcionará mesmo sem citá-lo, por exemplo, depois de alterar 'VMs do VirtualBox' em 'VBoxVMs'

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
januarvs
fonte
4

Mesmo que essa pergunta seja antiga, observe que a alteração de um UUID em um HDD virtual em um sistema Windows fará com que o Windows o trate como uma máquina não ativada (pois percebe a alteração do disco) e solicita a reativação!

Aniston
fonte
4

A mesma solução que o @ Al3x para Windows x64, em cmd.exe:

cd %programfiles%\Oracle\VirtualBox

VBoxManage internalcommands sethduuid "full/path/to/.vdi"

Isso randomiza o UUID do disco. Dica profissional: Clique com o botão direito do mouse no arquivo .vdi enquanto mantém pressionada a tecla Shift e selecione "Copiar como caminho" para obter "full/path/to/.vdi"e ativar a edição rápida no cmd.exe, depois clique com o botão direito do mouse para colar.

masterxilo
fonte
2

Outra alternativa à sua solução original seria usar o caractere de escape \antes do espaço:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Whitaker
fonte