Como defino manualmente a hora do sistema no VirtualBox?


30

Estou tentando definir manualmente o horário do computador no VirtualBox, mas ele sempre se redefine para o que era antes de eu o alterar. Como posso desativar o ntp e informar ao sistema que horas eu quero que ele seja?


Você pode dar mais detalhes sobre o seu problema? A que horas você quer que seja e a que horas define o seu computador?
QBI

5
Quero definir um horário errado arbitrário no meu computador.
precisa saber é o seguinte

Respostas:


30

Eu encontrei uma solução. Leia o seguinte material: link

Basicamente, se você possui host do Windows e convidado do Ubuntu, faça o seguinte:

  1. Encontre um nome para sua VM (máquina virtual) - execute VB (VirtualBox), selecione sua VM, abra as configurações, na guia 'Geral' verifique o nome, por exemplo, no meu caso Ubuntu 12.04 32bit
  2. No Windows, inicie um intérprete de linha de comando, vá para a C:\Program Files\Oraclepasta e clique VirtualBoxpara selecionar, mantendo pressionada a tecla Shift esquerda, clique com o botão direito do mouse e selecione o menu "Abrir janela de comando aqui", o intérprete deve estar em execução agora
  3. Cole o seguinte comando (altere o nome da VM para seu nome!):

    VBoxManage setextradata "Ubuntu 12.04 32bit" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

  4. Por fim, inicie o seu convidado do Ubuntu e defina a hora e a data manualmente.


6
esta definitivamente deve ser a resposta aceita! eu não quiser desativar adições convidado como eu tenho uma pasta compartilhada montado em meu convidado servidor ubuntu 14
Jon B

Infelizmente, ele não "congela" o tempo no sistema convidado. Em alguns cenários, você deseja congelar completamente o tempo todo (por exemplo, para criar construções reproduzíveis).
VasyaNovikov

Isso só me salvou um monte de tempo
elsadek

Se o sistema operacional do seu host for Ubuntu, o comando é: vboxmanage setextradata "your_VM_name_here" "VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled" 1
Radu Maris

Veja esta questão, que funcionou quando eu tentei: stackoverflow.com/a/45724822/18149 O vboxadd-servicenecessário um argumento extra sobre o hóspede, principalmente--disable-timesync
leeand00

23

Como mencionado em outra resposta, se você estiver executando o Ubuntu como convidado no VirtualBox, deve estar ciente de que a hora do sistema é automaticamente sincronizada pelas adições de convidados (ou seja, não através de uma opção nas configurações da placa-mãe).

Sua solução nesse caso é desativar as adições de convidados, que podem ser obtidas executando

sudo service vboxadd-service stop

ou

sudo /etc/init.d/vboxadd-service stop

Você pode definir o tempo conforme desejado (na linha de comando, usando date --setou usando o applet de configurações do sistema)

O serviço VirtualBox será reiniciado na próxima reinicialização ou você poderá fazê-lo manualmente.


3
Off topic, mas a desativação / desinstalar Visitante Adições permite que você defina o relógio do sistema no Windows sistemas operacionais hóspede bem
speckledcarp

3
Na minha versão do Ubuntu, o comando foi sudo service virtualbox-guest-utils stop. Eu acho que o pacote foi renomeado?
Crashthatch

@Crashthatch sua solução é a única que funciona. obrigado.
Bevor

11

A única maneira é definir o horário na placa-mãe do Virtualbox usando a linha de comando:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Por exemplo, para adiar a data de 1 ano:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Bem, se você deseja definir datas arbitrárias, primeiro desabilite ou desinstale o ntp.

  • Para desativá-lo, abra um terminal e execute sudo update-rc.d -f ntp remove
  • Para desinstalá-lo, use seu software favorito de gerenciamento de software

Depois disso, você pode usar o datecomando-para definir a hora do sistema:

date -s "17 April 2011 12:34:56"
date --set="17 April 2011 12:34:56"

Ambos os comandos são equivalentes. Para definir apenas a hora que você pode usar:

date +%T -s "12:34:56" 

A página date-man tem mais alguns controles de formato. Você pode usá-los todos para alterar a data


Ok, eu fiz isso, mas o sudo date -s apenas mantém a data por alguns segundos antes de reverter. Com isso, quero dizer, a data de execução novamente mostra o horário em que eu normalmente funcionava, mas o indicador de hora no painel não e, quando eu executo a data novamente, a hora mudou para coincidir com o relógio do painel ... alterar o relógio indicador-data e hora também não funciona. Eu acho que vou ter que abrir um bug.
21711 Jeremy Bicha

Você tem certeza de que o ntp desinstalado / desativado? Você tem algum outro software de gerenciamento automático de tempo (por exemplo, chrony) instalado?
QBI

É uma nova instalação do Natty no VirtualBox e eu limpei qualquer coisa ntp e não instalei nenhum outro software de gerenciamento de tempo.
Jeremy Bicha

2
Virtualbox "transfere" o tempo do seu host para o cliente. Você precisará alterar algumas opções aqui. Talvez virtualbox.org/manual/ch03.html#settings-motherboard seja útil.
QBI

3

Clique na seção hora e data do painel e, em seguida, o calendário aparecerá e, abaixo das configurações de hora e data, clique nele.

Clique no ícone do cadeado, digite sua senha e escolha Definir hora para manualmente.


Vou seguir em frente e marcar isso como a melhor resposta para a maioria dos usuários. Meu problema específico foi com o VirtualBox.
Jeremy Bicha

1

No Centro de Software, procure ntpdate e remova-o, ou no terminal: sudo apt-get remove ntpdate

(Talvez seja necessário reiniciar para desativar totalmente o ntp)

Em seguida, defina sua data.


Ok, limpei o ntpdate e reiniciei, mas ainda não consigo acertar o relógio do sistema e deixá-lo fixo.
21711 Jeremy Bicha

0

Com base no exemplo ".ps1" (script do Windows PowerShell) fornecido em

https://superuser.com/questions/539880/using-virtual-box-is-it-possible-to-set-your-virtual-machine-time-to-be-differen

Eu escrevi um arquivo de script ".bat" regular para alterar a hora em que a máquina virtual do VirtualBox é iniciada.

O horário de início desejado é definido na variável "TEMPO_START_TIMESTAMP" no formato de época. Você pode obter o equivalente epoh da hora de início desejado em " http://www.timestampconvert.com/ ".

O nome da máquina virtual do VirtualBox a ser iniciada é necessário na variável "NOME" (o mesmo nome usado no script ".ps1" acima).

echo off
echo %time%

set NOME="Windows_7_x64"

set TEMPO_CS_2_MS=0
set TEMPO_S_2_MS=000

rem # Starts the VM always on the date 07/11/2014 - 11h58
rem http://www.timestampconvert.com/

set   TEMPO_START_TIMESTAMP=1415361480

for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x
rem %epoch%

set TEMPO_CURRENT_TIMESTAMP=%epoch%
rem set TEMPO_CURRENT_TIMESTAMP=1544518714

set /A TEMPO_TEMP=(%TEMPO_START_TIMESTAMP%-%TEMPO_CURRENT_TIMESTAMP%)

call set TEMPO=%TEMPO_TEMP%%TEMPO_S_2_MS%
rem %TEMPO_TEMP%
rem %TEMPO%

c:\Progra~1\Oracle\VirtualBox\VBoxManage setextradata %NOME% "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
c:\Progra~1\Oracle\VirtualBox\VBoxManage modifyvm %NOME% --biossystemtimeoffset %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage startvm %NOME%

Você também precisará da hora atual no formato epoh. Para isso, use o seguinte script (salve como "toEpoch.vbs", esse script visual basic é chamado a partir do script ".bat" acima):

WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())

Para executar a máquina virtual, basta executar o arquivo de script ".bat" acima. Não é necessário abrir a interface "Oracle VM VirtualBox Administration".

Eu espero que isso ajude.

Saudações

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.