Як вручну встановити системний час у VirtualBox?


30

Я намагаюся вручну встановити час комп'ютера у VirtualBox, але він завжди скидає те, що було до того, як я його змінив. Як я можу відключити ntp і сказати системі, в який час я хочу це зробити?


Чи можете ви детальніше розповісти про свою проблему? У який час ви хочете, щоб це було і в який час встановлюється ваш комп’ютер?
qbi

5
Я хочу встановити довільний неправильний час на своєму комп’ютері.
Джеремі Біча

Відповіді:


30

Я знайшов рішення. Прочитайте наступний матеріал: посилання

Якщо у вас є хост Windows та гість Ubuntu, виконайте наступне:

  1. Знайдіть ім’я свого VM (Virtual Machine) - запустіть VB (VirtualBox), виберіть свій VM, відкрийте налаштування, на вкладці "Загальні" перевірте ім'я, наприклад, у моєму випадку Ubuntu 12.04 32bit
  2. У Windows запустіть інтерпретатор командного рядка, перейдіть у C:\Program Files\Oracleпапку та клацніть, VirtualBoxщоб вибрати, потім утримуючи ліву клавішу зсуву, натисніть правою кнопкою миші та виберіть меню «Відкрити вікно команд тут», перекладач повинен працювати зараз
  3. Вставте таку команду (змініть ім'я VM на своє ім'я!):

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

  4. Нарешті, запустіть гостя Ubuntu та встановіть час та дату вручну.


6
це безумовно має бути прийнятою відповіддю! Я не хотів відключати додатки для гостей, оскільки у мене на моєму сервері ubuntu встановлена ​​спільна папка 14 гостя
Джон Б

На жаль, він не «заморожує» час на гостьовій системі. У деяких сценаріях ви хочете повністю заморозити весь час (як, наприклад, для відтворення збірок).
ВасяНовіков

це просто заощадило мені багато часу
elsadek

Якщо вашою операційною системою є Ubuntu, команда: vboxmanage setextradata "your_VM_name_here" "VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled" 1
Radu Maris

Дивіться це питання, він працював , коли я пробував: stackoverflow.com/a/45724822/18149 The vboxadd-serviceнеобхідний додатковий аргумент на гостя, в основному--disable-timesync
leeand00

23

Як вже згадувалося в іншій відповіді, якщо ви запускаєте Ubuntu як гість під VirtualBox, то вам слід знати, що системний час автоматично зберігається в синхронізації з доповненнями для гостей (тобто не через опцію в налаштуваннях материнської плати).

У цьому випадку ваше рішення - вимкнути додатки для гостей, чого можна досягти виконанням

sudo service vboxadd-service stop

або

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

Потім можна встановити потрібний час (з командного рядка за допомогою date --setабо використання аплету системних налаштувань)

Служба VirtualBox буде перезапущена при наступному перезавантаженні, або ви можете це зробити вручну.


3
Поза темою, але вимкнення / видалення додатків для гостей дозволяє встановити системний годинник і на гостьових ОС Windows
speckledcarp

3
У моїй версії Ubuntu команда була sudo service virtualbox-guest-utils stop. Я думаю, пакет перейменовано?
Crashthatch

@Crashthatch ваше рішення - єдине, що працює. Спасибі.
Бевор

11

Єдиний спосіб - встановити час на материнській платі Virtualbox за допомогою командного рядка:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Наприклад, щоб встановити дату на 1 рік:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Ну а якщо ви хочете встановити довільні дати, спочатку слід вимкнути або видалити ntp.

  • Щоб відключити його, відкрийте термінал і запустіть sudo update-rc.d -f ntp remove
  • Для його видалення використовуйте улюблене програмне забезпечення для управління програмним забезпеченням

Після цього ви можете використовувати date-command, щоб встановити ваш системний час:

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

Обидві команди рівноцінні. Щоб встановити лише час, який ви можете використовувати:

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

На сторінці date-manman є ще кілька елементів керування форматом. Ви можете використовувати їх для зміни дати


Гаразд, я це зробив, але дата судо -се затримує дату лише за кілька секунд до повернення назад. Під цим я маю на увазі, дата запуску знову показує час, який я встановив, що я працюю нормально, але індикатор часу на панелі не робить, і коли я знову запускаю дату, час перейшов на відповідність годин панелі ..... І намагаюся змінити годинник-індикатор-дата також не працює. Я думаю, що мені доведеться відкрити помилку.
Джеремі Біча

Ви впевнені, що видалено / відключено ntp? У вас інше встановлене програмне забезпечення для автоматичного керування часом (тобто chrony)?
qbi

Це нова установка Natty у VirtualBox, і я очистив що-небудь ntp і не встановив жодного іншого програмного забезпечення для управління часом.
Джеремі Біча

2
Virtualbox „передає” час від вашого хоста клієнту. Тут вам доведеться змінити деякі параметри. Можливо, virtualbox.org/manual/ch03.html#settings- motherboard є корисним.
qbi

3

Клацніть на розділі часу та дати на панелі, потім з’явиться Календар, а під ним знаходяться Налаштування часу та дати, тоді натисніть на нього.

Клацніть на значку замок і введіть свій пароль, а потім виберіть Встановити час вручну.


Я збираюся йти вперед і відзначу це найкращою відповіддю для більшості користувачів. Моя конкретна проблема була з VirtualBox.
Джеремі Біча

1

У Центрі програмного забезпечення знайдіть ntpdate та видаліть його або в терміналі: sudo apt-get remove ntpdate

(Можливо, вам доведеться перезавантажити, щоб повністю відключити ntp)

Потім встановіть свою дату.


Гаразд, я очистив ntpdate і перезавантажився, але я все ще не можу встановити системний годинник і дотримати його.
Джеремі Біча

0

На основі прикладу ".ps1" (сценарій Windows PowerShell), наведеного в

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

Я написав звичайний файл сценарію ".bat", щоб змінити час годин, коли запускається віртуальна машина VirtualBox.

Бажаний час початку задається змінною "TEMPO_START_TIMESTAMP" у форматі епохи. Ви можете отримати бажаний еповий еквівалент часу на веб-сторінці " http://www.timestampconvert.com/ ".

Назва віртуальної машини VirtualBox, яку потрібно запустити, потрібна в змінній "NOME" (та сама номенклатура, що використовується у сценарії ".ps1" вище).

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%

Вам також знадобиться поточний час у форматі epoh, для цього використовуйте наступний скрипт (збережіть як "toEpoch.vbs", цей візуальний базовий скрипт викликається із сценарію ".bat" вище):

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

Щоб запустити віртуальну машину, просто виконайте файл сценарію ".bat" вище. Не потрібно відкривати інтерфейс "Адміністрація Oracle VM VirtualBox".

Я сподіваюся, що це допомагає.

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.