Jak ręcznie ustawić czas systemowy w VirtualBox?


30

Próbuję ręcznie ustawić czas komputera w VirtualBox, ale zawsze resetuje się do tego, co było przed zmianą. Jak mogę wyłączyć NTTP i powiedzieć systemowi, która godzina?


Czy możesz podać więcej szczegółów na temat swojego problemu? O której godzinie chcesz, a która godzina ustawia komputer?
qbi

5
Chcę ustawić dowolny zły czas na moim komputerze.
Jeremy Bicha

Odpowiedzi:


30

Znalazłem rozwiązanie. Przeczytaj następujący materiał: link

Zasadniczo, jeśli masz hosta Windows i gościa Ubuntu, wykonaj następujące czynności:

  1. Znajdź nazwę swojej maszyny wirtualnej (Virtual Machine) - uruchom VB (VirtualBox), wybierz swoją maszynę wirtualną, otwórz ustawienia, w zakładce „Ogólne” sprawdź nazwę, np. W moim przypadku Ubuntu 12.04 32bit
  2. W systemie Windows uruchom interpreter wiersza poleceń, przejdź do C:\Program Files\Oraclefolderu i kliknij, VirtualBoxaby wybrać, a następnie trzymając lewy klawisz Shift, kliknij prawym przyciskiem myszy i wybierz menu „Otwórz okno poleceń tutaj”, interpreter musi być teraz uruchomiony
  3. Wklej następujące polecenie (zmień nazwę maszyny wirtualnej na swoją nazwę!):

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

  4. Na koniec uruchom gościa Ubuntu i ręcznie ustaw datę i godzinę.


6
to zdecydowanie powinna być zaakceptowana odpowiedź! nie chciałem wyłączać dodawania gości, ponieważ mam zamontowany folder udostępniony na moim serwerze Ubuntu 14 gość
Jon B

Niestety nie „zamraża” czasu w systemie gościa. Jednak w niektórych scenariuszach chcesz całkowicie zamrozić cały czas (na przykład w przypadku powtarzalnych kompilacji).
VasyaNovikov,

to tylko zaoszczędziło mi dużo czasu
elsadek

Jeśli Twoim systemem operacyjnym jest Ubuntu, polecenie brzmi: vboxmanage setextradata „twoja_nazwa_VM” tutaj „VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled” 1
Radu Maris

Patrz na to pytanie, to zadziałało, gdy próbowałem go: stackoverflow.com/a/45724822/18149 The vboxadd-servicepotrzebny dodatkowy argument na gościa, głównie--disable-timesync
leeand00

23

Jak wspomniano w innej odpowiedzi, jeśli używasz Ubuntu jako gość w VirtualBox, powinieneś być świadom, że czas systemowy jest automatycznie synchronizowany przez dodatki gości (tj. Nie poprzez opcję w ustawieniach płyty głównej).

W takim przypadku rozwiązaniem jest wyłączenie dodatków gości, które można uzyskać, wykonując polecenie

sudo service vboxadd-service stop

lub

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

Następnie możesz ustawić czas zgodnie z potrzebami (z wiersza poleceń za pomocą date --setlub za pomocą apletu ustawień systemu)

Usługa VirtualBox zostanie zrestartowana przy następnym uruchomieniu lub możesz to zrobić ręcznie.


3
Nie na temat, ale wyłączenie / odinstalowanie Dodatków gości umożliwia ustawienie zegara systemowego również w systemach-gościach Windows
speckledcarp

3
W mojej wersji Ubuntu polecenie było sudo service virtualbox-guest-utils stop. Chyba nazwa pakietu została zmieniona?
Crashthatch

@ Crashthatch Twoje rozwiązanie jest jedynym, które działa. dzięki.
Bevor

11

Jedynym sposobem jest ustawienie czasu na płycie głównej Virtualbox za pomocą wiersza polecenia:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Na przykład, aby cofnąć datę o 1 rok:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Cóż, jeśli chcesz ustawić dowolne daty, najpierw powinieneś wyłączyć lub odinstalować NTTP.

  • Aby go wyłączyć, otwórz terminal i uruchom sudo update-rc.d -f ntp remove
  • Aby go odinstalować, użyj swojego ulubionego oprogramowania do zarządzania oprogramowaniem

Następnie możesz użyć datepolecenia-, aby ustawić czas systemowy:

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

Oba polecenia są równoważne. Aby ustawić tylko czas, którego możesz użyć:

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

date-Manpage ma trochę więcej kontroli formatu. Możesz użyć ich wszystkich, aby zmienić datę


Ok, zrobiłem to, ale data sudo -s przechowuje datę tylko przez kilka sekund przed przywróceniem. Rozumiem przez to, że data uruchomienia ponownie pokazuje czas, który ustawiłem normalnie, ale wskaźnik czasu w panelu nie, a kiedy ponownie uruchamiam datę, czas zmienił się, aby dopasować do zegara panelu ..... I próbuję zmiana wskaźnika zegar-data-godzina też nie działa. Myślę, że będę musiał otworzyć błąd.
Jeremy Bicha,

Czy jesteś pewien, że odinstalowano / wyłączyłeś NTTP? Czy masz zainstalowane jakieś inne oprogramowanie do automatycznego zarządzania czasem (tj. Chroniczne)?
qbi

Jest to nowa instalacja Natty w VirtualBox i usunąłem wszystko z ntp i nie zainstalowałem żadnego innego oprogramowania do zarządzania czasem.
Jeremy Bicha

2
Virtualbox „przenosi” czas z twojego hosta do klienta. Musisz tutaj zmienić niektóre opcje. Może pomocny jest virtualbox.org/manual/ch03.html#settings-motherboard .
qbi

3

Kliknij sekcję czasu i daty w panelu, a następnie pojawi się Kalendarz, a pod nim znajdują się Ustawienia godziny i daty, więc kliknij to.

Kliknij ikonę kłódki i wprowadź hasło, a następnie wybierz Ustaw czas ręcznie.


Zamierzam zaznaczyć to jako najlepszą odpowiedź dla większości użytkowników. Mój konkretny problem dotyczył VirtualBox.
Jeremy Bicha

1

W Centrum oprogramowania wyszukaj ntpdate i usuń go, lub w terminalu: sudo apt-get remove ntpdate

(Może być konieczne ponowne uruchomienie komputera, aby całkowicie wyłączyć NTTP)

Następnie ustaw datę.


Ok, wyczyściłem ntpdate i uruchomiłem ponownie, ale nadal nie jestem w stanie ustawić zegara systemowego i trzymać go.
Jeremy Bicha,

0

Na podstawie przykładu „.ps1” (skrypt Windows PowerShell) podanego w

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

Napisałem zwykły plik skryptu „.bat”, aby zmienić czas, w którym uruchamia się maszyna wirtualna VirtualBox.

Pożądany czas rozpoczęcia jest ustawiony na zmienną „TEMPO_START_TIMESTAMP” w formacie epoki. Możesz uzyskać żądany ekwiwalent czasu rozpoczęcia epoh na stroniehttp://www.timestampconvert.com/ ”.

Nazwa maszyny wirtualnej VirtualBox, która ma zostać uruchomiona, jest potrzebna w zmiennej „NOME” (ta sama nazwa używana w skrypcie „.ps1” powyżej).

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%

Będziesz także potrzebował bieżącego czasu w formacie epoh, w tym celu użyj następującego skryptu (zapisz jako „toEpoch.vbs”, ten skrypt Visual Basic jest wywoływany ze skryptu „.bat” powyżej):

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

Aby uruchomić maszynę wirtualną, po prostu uruchom powyższy plik skryptu „.bat”. Nie ma potrzeby otwierania interfejsu „Oracle VM VirtualBox Administration”.

Mam nadzieję, że to pomoże.

pozdrowienia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.