Come posso impostare manualmente l'ora di sistema in VirtualBox?


30

Sto cercando di impostare manualmente l'ora del computer in VirtualBox ma si reimposta sempre su quello che era prima di cambiarlo. Come posso disabilitare ntp e dire al sistema a che ora voglio che sia?


Puoi darci qualche dettaglio in più sul tuo problema? A che ora vuoi che sia e che ora imposta il tuo computer?
qbi,

5
Voglio impostare un orario sbagliato arbitrario sul mio computer.
Jeremy Bicha,

Risposte:


30

Ho trovato una soluzione Leggi il seguente materiale: link

Fondamentalmente se si dispone di host Windows e guest Ubuntu, procedere come segue:

  1. Trova un nome per la tua macchina virtuale (macchina virtuale): esegui VB (VirtualBox), seleziona la macchina virtuale, apri le impostazioni, nella scheda "Generale" controlla il nome, ad esempio nel mio caso Ubuntu 12.04 32bit
  2. In Windows, avvia un interprete della riga di comando, vai alla C:\Program Files\Oraclecartella e fai clic VirtualBoxper selezionare, quindi tieni premuto il tasto Maiusc sinistro, fai clic con il pulsante destro del mouse e seleziona il menu "Apri finestra di comando qui", l'interprete deve essere in esecuzione ora
  3. Incolla il seguente comando (cambia il nome della VM con il tuo nome!):

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

  4. Infine, avvia il tuo guest Ubuntu e imposta manualmente data e ora.


6
questa dovrebbe sicuramente essere la risposta accettata! non volevo disabilitare le aggiunte degli ospiti perché ho una cartella condivisa montata sul mio guest ubuntu server 14
Jon B

Sfortunatamente, non "congela" l'ora sul sistema guest. In alcuni scenari, anche se vuoi congelare completamente tutto il tempo (come per fare build riproducibili).
VasyaNovikov,

questo mi ha fatto risparmiare un sacco di tempo
elsadek,

Se il tuo sistema operativo host è Ubuntu, il comando è: vboxmanage setextradata "your_VM_name_here" "VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled" 1
Radu Maris

Vedi questa domanda, ha funzionato quando l'ho provato: stackoverflow.com/a/45724822/18149 Il vboxadd-servicenecessario un argomento in più --disable-timesync
sull'ospite

23

Come menzionato in un'altra risposta, se si esegue Ubuntu come Ospite in VirtualBox, è necessario tenere presente che l'ora del sistema viene automaticamente sincronizzata dalle Aggiunte dell'ospite (ovvero non tramite un'opzione nelle impostazioni della scheda madre).

La soluzione in tal caso è disabilitare le Aggiunte Guest, che possono essere raggiunte eseguendo

sudo service vboxadd-service stop

o

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

È quindi possibile impostare l'ora come desiderato (dalla riga di comando utilizzando date --seto utilizzando l'applet delle impostazioni di sistema)

Il servizio VirtualBox verrà riavviato al prossimo riavvio oppure è possibile farlo manualmente.


3
Fuori tema, ma la disabilitazione / disinstallazione di Guest Additions consente di impostare l'orologio di sistema anche su SO guest Windows
speckledcarp

3
Nella mia versione di Ubuntu il comando era sudo service virtualbox-guest-utils stop. Immagino che il pacchetto sia stato rinominato?
Crashthatch,

@Crashthatch la tua soluzione è l'unica che funziona. Grazie.
Bevor

11

L'unico modo è impostare l'ora nella scheda madre Virtualbox utilizzando la riga di comando:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Ad esempio, per ripristinare la data di 1 anno:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Bene, se vuoi impostare date arbitrarie, prima dovresti disabilitare o disinstallare ntp.

  • Per disabilitarlo, apri un terminale ed esegui sudo update-rc.d -f ntp remove
  • Per disinstallarlo, usa il tuo software di gestione del software preferito

Successivamente è possibile utilizzare il datecomando-per impostare l'ora di sistema:

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

Entrambi i comandi sono equivalenti. Per impostare solo il tempo è possibile utilizzare:

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

La date-manpage ha alcuni più controlli di formato. Puoi usarli tutti per cambiare la data


Ok, l'ho fatto ma sudo date -s mantiene la data solo per alcuni secondi prima di tornare indietro. Con questo, voglio dire, la data di esecuzione mostra di nuovo l'ora che ho impostato normalmente, ma l'indicatore dell'ora nel pannello no, e quando eseguo di nuovo la data, l'ora è cambiata per corrispondere all'orologio del pannello ..... E provando a cambiare l'indicatore-datetime clock non funziona neanche. Penso che dovrò aprire un bug.
Jeremy Bicha,

Sei sicuro di aver disinstallato / disabilitato ntp? Hai qualche altro software di gestione automatica del tempo (es. Chrony) installato?
qbi,

È una nuova installazione di Natty in VirtualBox e ho eliminato qualsiasi cosa ntp e non ho installato nessun altro software di gestione del tempo.
Jeremy Bicha,

2
Virtualbox "trasferisce" il tempo dal tuo host al client. Dovrai cambiare alcune opzioni qui. Forse virtualbox.org/manual/ch03.html#settings-motherboard è utile.
qbi,

3

Fai clic sulla sezione data e ora del pannello, quindi apparirà il Calendario e sotto che ci sono le Impostazioni ora e data, quindi fai clic su di esso.

Fai clic sull'icona del lucchetto e inserisci la password, quindi scegli Imposta manualmente l'ora.


Ho intenzione di andare avanti e contrassegnare questa come la migliore risposta per la maggior parte degli utenti. Il mio problema specifico era con VirtualBox.
Jeremy Bicha,

1

Nel Software Center cercare ntpdate e rimuoverlo, oppure nel terminale: sudo apt-get remove ntpdate

(Potrebbe essere necessario riavviare per disabilitare completamente ntp)

Quindi imposta la data.


Ok, ho eliminato ntpdate e riavviato ma non riesco ancora a impostare l'orologio di sistema e farlo attaccare.
Jeremy Bicha,

0

Basato sull'esempio ".ps1" (script di Windows PowerShell) fornito in

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

Ho scritto un normale file di script ".bat" per modificare l'ora di inizio della macchina virtuale di VirtualBox.

L'ora di inizio desiderata è impostata sulla variabile "TEMPO_START_TIMESTAMP" in formato epoca. È possibile ottenere l'ora di inizio desiderata equivalente di epoh su " http://www.timestampconvert.com/ ".

Il nome della macchina virtuale di VirtualBox da avviare è necessario nella variabile "NOME" (stessa nomenchature utilizzata nello script ".ps1" sopra).

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%

Avrai anche bisogno dell'ora corrente in formato epoh, per questo usa il seguente script (salva come "toEpoch.vbs", questo script Visual Basic è chiamato dallo script ".bat" sopra):

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

Per eseguire la macchina virtuale, è sufficiente eseguire il file di script ".bat" sopra. Non è necessario aprire l'interfaccia "Oracle VM VirtualBox Administration".

Spero che aiuti.

Saluti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.