Como posso alterar o número de série do BIOS no VirtualBox?

17

VirtualBox define o número de série do BIOS de cada instância de VM para 0. Parece ser possível alterar algumas configurações do BIOS, mas eu não vi nada que referencia diretamente o número de série.

Alguém pode sugerir uma maneira de fazer isso?

Roger
fonte
1
Alguma razão particular que você quer fazer isso?
Jared Harley
1
Sim. Eu tenho uma ferramenta de software de inventário de PC que usa o número de série do BIOS para identificar exclusivamente computadores. Ele funciona bem para hardware físico e para VMs de outros fornecedores, mas não sabe como lidar com várias VMs do VirtualBox.
47017 Roger
editei minha resposta para refletir o erro que você pegou.
4171
Você tem alguma novidade sobre isso, Roger? Adoraria saber como aconteceu.
319 Um anão
Eu nunca determinei como fazer isso. Eu recebi algumas respostas nos fóruns do VirtualBox, mas não encontrei nada que funcionasse. Se eu encontrar a resposta, adicionarei uma atualização aqui.
460 Roger Roger

Respostas:

21

http://www.virtualbox.org/manual/ch09.html#changedmi

Realmente tem resposta detalhada para isso.

Você pode definir o número de série da bios fazendo o seguinte:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "System Serial"

O erro que você está recebendo é causado pela serial não sendo definida como um valor de string, se você tem um número puro, você deve prefixar com ele da seguinte string:forma:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:1234"

Nota: Caso sua VM esteja configurada para usar o firmware EFI, você precisa substituir o pcbios por efi nas chaves.

Alex R
fonte
3
Observe que essas instruções são para sistemas que usam o BIOS . Se o seu sistema usa EFI - controlado por "Configurações -> Sistema -> Placa Mãe -> Ativar EFI" - então você precisa substituir "pcbios" por "efi" nos comandos acima.
ntc2
8

Não de qualquer configuração externa. Mas você pode a partir do código e depois construir você mesmo:

Arquivo de origem: DevPcBios.cpp
Linha: 1014READCFGSTR("DmiSystemSerial", pszDmiSystemSerial, "0");

Mude "0" para qualquer valor que você precise.


EDIT: aparentemente, você pode usar VBoxManage setextradata . Eu usei isso no passado para outro tipo de configurações (não relacionadas a bios) e não testei essa configuração específica. Dê uma chance:

VBoxManage setextradata *YourVMName* VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial "*yourserial*"

Caso contrário ... reverta para edição e construção do código-fonte.

Boa sorte.

Um anão
fonte
1
Hmm. Obrigado - tão perto, mas ainda não chegou. Eu tentei isso: "c: \ Arquivos de programas \ Sun \ VirtualBox \ VBoxManage.exe" setextradata "Servidor Demo" VBoxInternal / Dispositivos / pcbios / 0 / Config / DmiSerial "123" Parecia funcionar, mas quando lancei a VM I Recebi esta mensagem de erro: Falha ao iniciar o servidor de demonstração da máquina virtual. Configuração inválida para dispositivo de dispositivo pcbios (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Erro desconhecido ao criar a VM (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). A exclusão e recriação da definição da máquina corrigiu-a, portanto, nenhum dano foi causado. Eu acho que você está realmente perto - alguma outra sugestão?
47067 Roger Roger
hmm ... você fez uma cópia / colagem textual do seu comando para a caixa de comentários? Porque não há spave entre / Config e / DmiSerial. Independentemente disso, vou explorar isso mais. Acho que vou ter que instalar o VirtualBox. Até agora estava confiando apenas em minhas anotações :)
um anão
Bah! Esta minha cabeça. Eu posto a linha de código relevante e nem mesmo checo minhas anotações muito antigas. Não é / DmiSerial. Foi renomeado em algum momento entre a versão 1.5 e agora. É agora / DmiSystemSerial
um anão
Obrigado, um anão, por toda sua ajuda. Eu tentei substituir DmiSerial com DmiSystemSerial, reran a linha de comando (sem o espaço, que era um erro de digitação) e recebi o mesmo erro.
4606 Roger Roger
Até onde sei, isso só pode significar que isso ainda não está totalmente implementado e você não pode fazer isso dessa maneira. Neste ponto, tenho medo de deixar de ser útil. Você deve ir para os fóruns do VirtualBox e tentar de lá. Eles são excelentes pessoas e você terá uma resposta mais informada. No entanto, gostaria de saber o resultado final, se você fosse gentil e postar uma resposta à sua própria pergunta, quando isso acontecer. Muito bem sucedida.
Um anão
3

Se você executar esse comando e obter o erro referenciado por Roger, será necessário fazer o backup do comando executando o comando sem o último parâmetro (VALUE).

Isso remove a entrada causando o erro.

Se você não tiver certeza de qual foi o último comando incorreto, abra o arquivo ~~~ .vbox (XML) na raiz da pasta VirtualMachines da VM específica e revise a seção EXTRADATA.

Executar a chamada da linha de comandos para o vboxmanage é a melhor maneira de modificá-los. Editar o arquivo xml não fica 100% do tempo.

Alex
fonte
2

A resposta aceita não atualizou o número de série corretamente para mim; Em vez disso, segui estas etapas para atualizar com êxito o número de série. Observe que o sistema operacional convidado era macOS e o host era janelas.

NOTA: Você deve fechar o VirtualBox antes de executar este comando para que ele seja salvo.

  1. Abra o prompt de comando do Windows como administrador
  2. cd "C:\Program Files\Oracle\VirtualBox\"
  3. VBoxManage.exe setextradata "VM NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "SERIAL_HERE" veja a fonte . *
    Não tenho certeza porque o comando pcbios não funcionou mas efi fez.

LINKS ÚTEIS

  • Se você tiver problemas para encontrar uma série válida, siga as instruções aqui .
  • Se você não tem certeza do nome do vm que está sendo executado VBoxManage.exe list vms.
josh7weaver
fonte
1
Você está precisando de "efi" e aceitou responder usando "pcbios", isso é provavelmente porque você está usando (U) EFI e essa pessoa estava usando o BIOS tradicional. Se você está usando EFI ou BIOS é determinado pela caixa de seleção "Configurações -> Sistema -> Placa Mãe -> Ativar EFI" no VirtualBox.
ntc2
Ah faz sentido! Obrigado @ ntc2
josh7weaver
1

Tente usar um número de série que contenha uma cadeia hexadecimal de 20 bytes:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" "serial"

( Referência )

Ricardo Kiyoshi Batori
fonte