É possível obter uma VM do Virtualbox sempre iniciada a partir da mesma hora, se sim, como?

8

Estou tentando usar o VB para configurar uma VM do Windows 7 para uso em um curso de treinamento. Eu quero que a máquina virtual sempre inicie a partir das mesmas condições, em particular:

  1. A VM sempre começa na mesma data e hora
  2. O disco permanece inalterado como resultado do exercício anterior

Eu tenho trabalhado como configurar um disco como "imutável", que deve cuidar de (2), mas não consigo fazer com que a VM inicie ao mesmo tempo. Depois de alguns olhar ao redor eu encontrei isto:

Once installed and started, the Virtualbox Guest Additions will try to synchronize the guest time with the host time. This can be prevented by forbidding the guest service from reading the host clock:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

Eu tentei isso com a VM desligada e com ela inicializada, mas não parece fazer nada. Na mesma página de documentação , há também uma menção a um parâmetro "--timesync-set-start" no entanto, não consigo ver qualquer menção ao formato para definir a data e a hora. Ajuda seria bem vinda.

    
por Martin K 17.04.2014 / 15:26

4 respostas

12

Você precisa executar as seguintes ações para que o horário do hóspede mantenha o que era:

1.Desative a sincronização de tempo da sua máquina virtual:

1.1 Desabilitar Host para Convidado Timesync

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/TM/TSCTiedToExecution" 1

Para reverter:

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

1.2 Desabilitar o complemento de tempo do GuestAddition

Use o regedit.exe para modificar o registro.

Encontrar este ramo: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ VBoxService

Altere o valor em ImagePath de

system32\VBoxService.exe

para

system32\VBoxService.exe --disable-timesync

Reinicie sua VM ou reinicie o serviço "Serviço de adições ao convidado do VirtualBox".

2.Desative a sincronização de hora do Windows.

Verifique as configurações de horário. Desativar a sincronização de horário da Internet.

Fonte: link

    
por 15.05.2014 / 19:29
1

As etapas a seguir funcionarão, se a máquina host for o Windows.

  1. Se "máquina de destino" for Windows: abra "máquina virtual de destino" e aplique "Painel de controle - > Data e hora - > Horário da Internet - > Alterar configurações - > Desativar" Sincronizar com um servidor de horário da Internet " ".
  2. Copie as linhas abaixo como arquivo "yourfilename.ps1" na máquina host (Windows). Edite esse arquivo conforme descrito na etapa 3. 4. 5.
    $vbox_path="C:\Program Files\ORACLE\VirtualBox"
    $vm_name="Win7_VB"
    $start_utc=1444176000
    
    #DO NOT CHANGE ANYTHING BELOW THIS LINE
    $now_utc_ms=[int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalMilliseconds
    $dif_utc_ms=$start_utc * 1000 - $now_utc_ms
    Write-Host "START UTC:" $start_utc*1000 " DIF UTC:" $dif_utc_ms " NEW UTC:" $now_utc_ms
    cd $vbox_path
    .\VBoxManage setextradata $vm_name "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0"
    .\VBoxManage setextradata $vm_name "VBoxInternal/TM/TSCTiedToExecution" 1
    .\VBoxManage.exe modifyvm $vm_name --biossystemtimeoffset $dif_utc_ms
    .\VBoxManage.exe startvm $vm_name
    Start-Sleep -s 5
    
  3. Atualize "vbox_path" com o caminho de instalação do VirtualBox.
  4. Atualize "vm_name" com o nome da imagem do VirtualBox que será iniciada.
  5. Atualize "start_utc" usando o link . A máquina de destino começará sempre com o horário "start_utc".
  6. Abrao"Windows PowerShell" no menu Iniciar como Administrador .
  7. Execute o seguinte comando e responda a pergunta como [Y].
    Set-ExecutionPolicy RemoteSigned
    
  8. Execute com o botão direito do mouse em "yourfilename.ps1" e selecione "Executar com o PowerShell" para iniciar a máquina de destino.

Observação: sempre use a etapa 8 para executar a máquina virtual de destino.

    
por 08.10.2015 / 15:49
0

Use instantâneos.

  1. Para criar um novo instantâneo, basta usar o botão Obter instantâneo na visão geral dos Instantâneos :

  2. Nomeieoinstantâneoesalve-o.

  3. Quandovocêquiserinicializaroestadofixoposteriormente,revertaparaoinstantâneoanteriorcomobotãoRestaurarinstantâneo:

Se você deseja garantir que seu instantâneo tenha sempre a mesma data, provavelmente desejará desabilitar o sincronização de tempo da Internet no Windows, desmarcando a caixa de seleção Sincronizar com um servidor de horário na Internet na caixa de diálogo de configuração do relógio.

    
por 17.04.2014 / 15:40
0

Para responder à pergunta original do OP (MartinK): É possível obter uma VM do Virtualbox sempre iniciar a partir da mesma hora, se sim, como?

É possível simplesmente por

(a) Definindo a propriedade "GetHostTimeDisabled" = 1, usando o comando VBoxManage na linha de comando (no modo offline, ou seja, antes de iniciar a VM)

(b) Inicie uma VM, a partir de um SnapShot salvo tirado antes. (na hora de início desejada)

Não são necessários mais comandos, toda vez que isso funciona. (testado para Windows Guest em Windows Hosts)

Esta resposta está mais próxima da resposta anterior de Oliver Salzburg, exceto que ele perdeu a parametrização "GetHostTimeDisabled". OfCourse Internet Time Sync (NTP) deve ser desativado, no instantâneo salvo.

    
por 18.10.2015 / 12:19