Làm cách nào để đặt thủ công thời gian hệ thống trong VirtualBox?


30

Tôi đang cố gắng tự đặt thời gian của máy tính trong VirtualBox nhưng nó luôn tự đặt lại chính nó trước khi tôi thay đổi. Làm thế nào tôi có thể vô hiệu hóa ntp và cho hệ thống biết tôi muốn nó vào lúc nào?


Bạn có thể cho biết thêm một số chi tiết về vấn đề của bạn? Bạn muốn nó ở đâu và thời gian nào thiết lập máy tính của bạn?
qbi

5
Tôi muốn đặt một thời gian sai tùy ý trên máy tính của tôi.
Jeremy Bícha

Câu trả lời:


30

Tôi đã tìm thấy một giải pháp. Đọc tài liệu sau: link

Về cơ bản nếu bạn có máy chủ Windows và máy khách Ubuntu, hãy làm như sau:

  1. Tìm tên VM (Máy ảo) của bạn - chạy VB (VirtualBox), chọn VM, mở cài đặt, trong tab 'Chung' kiểm tra tên, ví dụ như trong trường hợp của tôi Ubuntu 12.04 32bit
  2. Trong Windows, khởi động trình thông dịch dòng lệnh, vào C:\Program Files\Oraclethư mục và nhấp VirtualBoxđể chọn, sau đó giữ phím shift trái, nhấp chuột phải và chọn menu "Mở cửa sổ lệnh tại đây", trình thông dịch phải chạy ngay bây giờ
  3. Dán lệnh sau (thay đổi tên VM thành tên của bạn!):

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

  4. Cuối cùng, bắt đầu khách Ubuntu của bạn và đặt thời gian và ngày theo cách thủ công.


6
Đây chắc chắn là câu trả lời được chấp nhận! tôi không muốn vô hiệu hóa các bổ sung của khách vì tôi có một thư mục dùng chung được gắn trong máy chủ ub Ubuntu 14 của tôi
Jon B

Thật không may, nó không "đóng băng" thời gian trên hệ thống khách. Trong một số trường hợp mặc dù bạn muốn đóng băng hoàn toàn mọi lúc (như để thực hiện các bản dựng có thể tái tạo).
VasyaNovikov

điều này chỉ giúp tôi tiết kiệm rất nhiều thời gian
elsadek

Nếu hệ điều hành máy chủ của bạn là Ubuntu, lệnh là: vboxmanage setextradata "your_VM_name_here" "VBoxI Internalal / Devices / VMMDev / 0 / Config / GethostTimeDisatted" 1
Radu Maris

Xem câu hỏi này, nó làm việc khi tôi thử nó: stackoverflow.com/a/45724822/18149 Các vboxadd-servicecần một cuộc tranh cãi thêm về vị khách, chủ yếu là--disable-timesync
leeand00

23

Như đã đề cập trong một câu trả lời khác, nếu bạn đang chạy Ubuntu với tư cách là Khách trong VirtualBox thì bạn nên lưu ý rằng thời gian hệ thống sẽ tự động được đồng bộ hóa bởi các Bổ sung của Khách (nghĩa là không thông qua tùy chọn trong cài đặt bo mạch chủ).

Giải pháp của bạn trong trường hợp đó là vô hiệu hóa Bổ sung khách, có thể đạt được bằng cách thực hiện

sudo service vboxadd-service stop

hoặc là

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

Sau đó, bạn có thể đặt thời gian như mong muốn (từ dòng lệnh bằng cách sử dụng date --sethoặc sử dụng applet cài đặt hệ thống)

Dịch vụ VirtualBox sẽ được khởi động lại vào lần khởi động lại tiếp theo hoặc bạn có thể thực hiện thủ công.


3
Tắt chủ đề, nhưng vô hiệu hóa / gỡ cài đặt Guest Additions cho phép bạn thiết lập đồng hồ hệ thống trên các hệ điều hành khách Windows cũng như
speckledcarp

3
Trong phiên bản Ubuntu của tôi, lệnh là sudo service virtualbox-guest-utils stop. Tôi đoán gói đã được đổi tên?
Crashthatch 30/03/2015

@Crashthatch giải pháp của bạn là giải pháp duy nhất hoạt động. cảm ơn.
Bevor

11

Cách duy nhất là đặt thời gian trong bo mạch chủ Virtualbox bằng dòng lệnh:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Ví dụ: để đặt lại ngày 1 năm:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Chà, nếu bạn muốn đặt ngày tùy ý, trước tiên bạn nên tắt hoặc hủy cài đặt ntp.

  • Để vô hiệu hóa nó, mở một thiết bị đầu cuối và chạy sudo update-rc.d -f ntp remove
  • Để gỡ cài đặt, hãy sử dụng phần mềm quản lý phần mềm yêu thích của bạn

Sau đó, bạn có thể sử dụng date-command để đặt thời gian hệ thống của mình:

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

Cả hai lệnh đều tương đương. Để chỉ đặt thời gian bạn có thể sử dụng:

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

Các date-manpage có một số điều khiển định dạng hơn. Bạn có thể sử dụng tất cả để thay đổi ngày


Ok, tôi đã làm điều đó nhưng sudo date -s chỉ giữ ngày trong vài giây trước khi hoàn nguyên. Điều đó có nghĩa là, ngày chạy lại hiển thị thời gian tôi đặt hoạt động bình thường nhưng chỉ báo thời gian trong bảng điều khiển thì không, và khi tôi chạy lại ngày, thời gian đã chuyển sang khớp với đồng hồ bảng điều khiển ..... Và cố gắng thay đổi đồng hồ chỉ báo-datetime cũng không hoạt động. Tôi nghĩ rằng tôi sẽ phải mở một lỗi.
Jeremy Bícha

Bạn có chắc chắn rằng đã cài đặt / vô hiệu hóa ntp? Bạn có cài đặt một số phần mềm quản lý thời gian tự động khác (tức là chrony) không?
qbi

Đây là bản cài đặt Natty mới trong VirtualBox và tôi đã xóa mọi thứ ntp và không cài đặt bất kỳ phần mềm quản lý thời gian nào khác.
Jeremy Bícha

2
Virtualbox chuyển thời gian từ máy chủ của bạn sang máy khách. Bạn sẽ phải thay đổi một số tùy chọn ở đây. Có lẽ virtualbox.org/manual/ch03.html#sinstall-othersboard là hữu ích.
qbi

3

Nhấp vào phần thời gian và ngày của bảng điều khiển, sau đó Lịch sẽ xuất hiện và bên dưới Cài đặt Thời gian & Ngày ở đó để nhấp vào đó.

Nhấp vào biểu tượng Khóa móc và nhập mật khẩu của bạn, sau đó chọn Đặt Thời gian theo cách thủ công.


Tôi sẽ tiếp tục và đánh dấu đây là câu trả lời tốt nhất cho hầu hết người dùng. Vấn đề cụ thể của tôi là với VirtualBox.
Jeremy Bícha

1

Trong Trung tâm phần mềm, hãy tra cứu ntpdate và xóa nó hoặc trong terminal: sudo apt-get remove ntpdate

(Bạn có thể phải khởi động lại để tắt hoàn toàn ntp)

Sau đó thiết lập ngày của bạn.


Ok, tôi đã thanh trừng ntpdate và khởi động lại nhưng tôi vẫn không thể thiết lập đồng hồ hệ thống và để nó hoạt động.
Jeremy Bícha

0

Dựa trên ví dụ ".ps1" (tập lệnh Windows PowerShell) được đưa ra trong

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

Tôi đã viết một tập lệnh ".bat" thông thường để thay đổi thời gian đồng hồ khởi động máy ảo của VirtualBox.

Thời gian bắt đầu mong muốn được đặt ở biến "TEMPO_START_TIMESTAMP" ở định dạng epoch. Bạn có thể có được thời gian bắt đầu epoh mong muốn tương đương tại " http://www.timestampconvert.com/ ".

Tên của máy ảo VirtualBox sẽ được khởi động là cần thiết trong biến "NOME" (cùng một kiểu chữ được sử dụng trong tập lệnh ".ps1" ở trên).

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ạn cũng sẽ cần thời gian hiện tại ở định dạng epoh, vì điều này sử dụng tập lệnh sau (lưu dưới dạng "toEpoch.vbs", tập lệnh cơ bản trực quan này được gọi từ tập lệnh ".bat" ở trên):

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

Để chạy máy ảo, chỉ cần thực hiện tệp tập lệnh ".bat" ở trên. Không cần mở giao diện "Quản trị Oracle VM VirtualBox".

Tôi hi vọng cái này giúp được.

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.