क्या वर्चुअलबॉक्स वीएम को हमेशा एक ही समय से शुरू करना संभव है, यदि हां तो कैसे?


9

मैं एक प्रशिक्षण पाठ्यक्रम में उपयोग के लिए विंडोज 7 वीएम स्थापित करने के लिए वीबी का उपयोग करने की कोशिश कर रहा हूं। मैं चाहता हूं कि वर्चुअल मशीन हमेशा समान परिस्थितियों से शुरू हो, विशेष रूप से:

  1. VM हमेशा एक ही तिथि और समय पर शुरू होता है
  2. पिछले अभ्यास के परिणामस्वरूप डिस्क अपरिवर्तित रहती है

मैंने काम किया है कि कैसे एक डिस्क को "अपरिवर्तनीय" के रूप में कॉन्फ़िगर किया जाए जिसे (2) का ध्यान रखना चाहिए, लेकिन मुझे एक ही समय में शुरू करने के लिए वीएम नहीं मिल सकता है। कुछ आसपास देखने के बाद मैंने पाया:

एक बार स्थापित और शुरू होने के बाद, वर्चुअलबॉक्स अतिथि परिवर्धन अतिथि समय को होस्ट समय के साथ सिंक्रनाइज़ करने का प्रयास करेगा। अतिथि सेवा को होस्ट घड़ी पढ़ने से मना करने से इसे रोका जा सकता है:

VBoxManage setextradata "VM नाम" "VBoxInternal / Devices / VMMDev / 0 / config / GetHostTimeDisabled" 1

मैंने वीएम को बंद करने के साथ यह कोशिश की, और इसके साथ शुरू हुआ, लेकिन यह कुछ भी नहीं करता है। पर एक ही प्रलेखन पेज वहाँ भी एक पैरामीटर का उल्लेख "--timesync-सेट शुरू" लेकिन मैं तारीख और समय निर्धारित करने के लिए प्रारूप का कोई उल्लेख नहीं देख सकता है। मदद का स्वागत किया जाएगा।


"यह कुछ भी करने के लिए प्रतीत नहीं होता है" के साथ, क्या आपका मतलब है "सिस्टम समय और दिनांक होस्ट के साथ वैसे भी सिंक्रनाइज़ हो जाता है"?
सोपालाजो डी एरियेरेज़

क्या विंडोज बूट (कुछ सेकंड बाद, मेरा मतलब है) के बाद समय और तारीख निर्धारित करना आपके लिए एक समाधान होना चाहिए? एक सरल .cmd स्क्रिप्ट को ऐसा करना चाहिए, मुझे लगता है।
सोलाजाजो डी एरियेरेज़

इंटरनेट टाइम सर्वर के खिलाफ समय को सिंक्रनाइज़ करने के लिए विंडोज को भी कॉन्फ़िगर किया जा सकता है।
Thorbjørn रावन एंडरसन

जवाबों:


16

अतिथि समय बनाए रखने के लिए आपको निम्नलिखित क्रियाएं करने की आवश्यकता है:

1. अपने आभासी मशीन के समय सिंक का उपयोग करें:

1.1 अतिथि समय-सारिणी के लिए होस्ट को अक्षम करें

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/TM/TSCTiedToExecution" 1

वापस लौटने के लिए:

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

1.2 अतिथिअध्यापन को अक्षम करें Timesync

रजिस्ट्री को संशोधित करने के लिए regedit.exe का उपयोग करें।

इस शाखा को खोजें: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ VBoxService

में मान परिवर्तित ImagePathसे

system32\VBoxService.exe

सेवा

system32\VBoxService.exe --disable-timesync

अपने वीएम को पुनरारंभ करें या "वर्चुअलबॉक्स अतिथि परिवर्धन सेवा" सेवा को पुनरारंभ करें।

2. विंडोज के समय सिंक को हटाने योग्य।

समय सेटिंग्स की जाँच करें। इंटरनेट टाइम सिंक को अक्षम करें।

स्रोत: http://www.ppq.ch/snippets/15-vobxtime


धन्यवाद। आपका "1.2 अक्षम अतिथिअनुसंधान Timesync" एकमात्र विकल्प है जो मेरे लिए काम कर रहा था। वर्चुअलबॉक्स द्वारा होस्ट परिवर्तन पुनः प्राप्त होते रहे। मैं वीएम शुरू करने के बाद फाइल पर एक नज़र डालूंगा और नई एक्सट्रैडाटा एक्सएमएल प्रविष्टियां हटा दी गई हैं।
ग्रैटरमैटर

5

निम्नलिखित चरण काम करेंगे, यदि होस्ट मशीन विंडोज / लिनक्स है।

  1. यदि "लक्ष्य मशीन" विंडोज़ है: "वर्चुअल मशीन को लक्षित करें" खोलें और "नियंत्रण कक्ष -> दिनांक और समय -> इंटरनेट का समय -> सेटिंग्स बदलें -> अक्षम करें" इंटरनेट समय सर्वर के साथ सिंक्रनाइज़ करें ""।

  2. होस्ट मशीन पर फ़ाइल "yourfilename.ps1" (विंडोज) / "yourfilename.sh" (लिनक्स) के रूप में नीचे की पंक्तियों को कॉपी करें। चरण 3 में वर्णित के रूप में इस फ़ाइल को संपादित करें। 4. 5।


HOST: WINDOWS

$vbox_path="C:\Program Files\ORACLE\VirtualBox"
$vm_name="Win7_VB"
$start_utc=1444176000

#DO NOT CHANGE ANYTHING BELOW THIS LINE
$now_utc_ms=[int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalMilliseconds
$dif_utc_ms=$start_utc * 1000 - $now_utc_ms
Write-Host "START UTC:" $start_utc*1000 " DIF UTC:" $dif_utc_ms " NEW UTC:" $now_utc_ms

cd $vbox_path
VBoxManage setextradata $vm_name "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0"
VBoxManage setextradata $vm_name "VBoxInternal/TM/TSCTiedToExecution" 1
VBoxManage modifyvm     $vm_name --biossystemtimeoffset $dif_utc_ms
VBoxManage startvm      $vm_name
Start-Sleep -s 5

HOST: LINUX

#!/bin/sh
vbox_path="/usr/bin/"
vm_name="Win7_VB"
start_utc=1444176000

#DO NOT CHANGE ANYTHING BELOW THIS LINE
now_utc_ms=$(($(date +%s)*1000))
dif_utc_ms=$(($(($start_utc * 1000)) - $now_utc_ms))
echo "START UTC:" $(($start_utc * 1000)) " DIF UTC:" $dif_utc_ms "NOW UTC:" $now_utc_ms

cd $vbox_path
VBoxManage setextradata $vm_name "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0"
VBoxManage setextradata $vm_name "VBoxInternal/TM/TSCTiedToExecution" 1
VBoxManage modifyvm     $vm_name --biossystemtimeoffset $dif_utc_ms
VBoxManage startvm      $vm_name
sleep 5
  1. वर्चुअलबॉक्स इंस्टॉलेशन पथ के साथ "vbox_path" अपडेट करें। (होस्ट: विंडोज)
  2. वर्चुअलबॉक्स इमेज के नाम से "vm_name" अपडेट करें जिसे शुरू किया जाएगा।
  3. Http://www.epochconverter.com/ का उपयोग करके "start_utc" अपडेट करें । लक्ष्य मशीन हमेशा "start_utc" समय के साथ शुरू होगी। युग परिवर्तक
  4. प्रारंभ मेनू से प्रशासक के रूप में "विंडोज पॉवरशेल" खोलें । (होस्ट: विंडोज)
  5. निम्नलिखित कमांड को चलाएं और प्रश्न का उत्तर दें [Y]। (होस्ट: विंडोज)

    Set-ExecutionPolicy RemoteSigned
    
  6. "Yourfilename.ps1" पर राइट क्लिक करें और लक्ष्य मशीन शुरू करने के लिए "PowerShell के साथ चलाएँ" का चयन करें। (होस्ट: विंडोज)

  7. लक्ष्य मशीन शुरू करने के लिए एक लिनक्स टर्मिनल निष्पादित कमांड बेल्स शुरू करें (होस्ट: लिनक्स)

    chmod +x yourfilename.sh && sh yourfilename.sh
    

नोट: लक्ष्य वर्चुअल मशीन चलाने के लिए हमेशा चरण 8 (होस्ट: विंडोज) / चरण 9 (होस्ट: लिनक्स) का उपयोग करें।


उन उपयोगकर्ताओं के लिए जिनके पास एक लिनक्स होस्ट है, मैंने इस उत्तर के आधार पर एक बैश स्क्रिप्ट बनाई है, जिसे आप यहां पा सकते हैं: gist.github.com/breautek/be83414034b973d53691645d6e172bb4 बस इसे startvm.sh के रूप में सहेजें, chmod +x startvm.shऔर ./startvm.shइसे चलाने के लिए उपयोग करें। शायद एक मैक होस्ट पर भी काम करेंगे, लेकिन मैंने इसका परीक्षण नहीं किया है।
नॉर्मन ब्रेउ

1

ओपी (मार्टिनके) मूल प्रश्न का उत्तर देने के लिए: क्या वर्चुअलबॉक्स वीएम को हमेशा एक ही समय से शुरू करना संभव है, यदि ऐसा है तो कैसे?

यह बस द्वारा संभव है

(ए) कमांड लाइन पर (ऑफ़लाइन मोड में, यानी वीएम शुरू करने से पहले) वीबॉक्स मैनेज कमांड का उपयोग करके "गेटहोस्टमीडिस्टेबल" प्रॉपर्टी = 1 सेट करना।

(b) पहले से लिए गए सहेजे गए स्नैपशॉट से एक VM शुरू करें। (वांछित समय पर)

हर बार यह काम करने के लिए और अधिक कमांड की आवश्यकता नहीं होती है। (विंडोज होस्ट में विंडोज गेस्ट के लिए परीक्षण किया गया)

यह उत्तर ऑलिवर साल्ज़बर्ग द्वारा पहले के उत्तर के करीब है, सिवाय इसके कि वह "गेटहॉस्टटाइमडिस्टेबल्ड" पैरामीटरेटेटिंग से चूक गए। सहेजे गए स्नैपशॉट में इंटरनेट इंटरनेट टाइम सिंक (NTP) अक्षम होना चाहिए।


0

स्नैपशॉट का उपयोग करें।

  1. एक नया स्नैपशॉट बनाने के लिए, स्नैपशॉट के अवलोकन में सिर्फ स्नैपशॉट बटन का उपयोग करें:

    यहाँ छवि विवरण दर्ज करें

  2. स्नैपशॉट को नाम दें और इसे सहेजें।

  3. जब आप बाद में निश्चित स्थिति को बूट करना चाहते हैं, तो अपने पिछले स्नैपशॉट को रिस्टोर स्नैपशॉट बटन के साथ वापस लाएं :

    यहाँ छवि विवरण दर्ज करें

यदि आप यह सुनिश्चित करना चाहते हैं कि आपके स्नैपशॉट में हमेशा एक ही तिथि हो, तो आप संभवतः घड़ी कॉन्फ़िगरेशन संवाद में इंटरनेट टाइम सर्वर चेकबॉक्स के साथ सिंक्रोनाइज़ को अनचेक करके विंडोज में इंटरनेट टाइम सिंक्रनाइज़ेशन को अक्षम करना चाहते हैं ।


यह एक उत्कृष्ट समाधान है और मेरे लिए समस्या को हल करता है, मुझे लगता है। तब ऐसा लगता है कि अगर मैं एक स्नैपशॉट का उपयोग करता हूं तो मुझे डिस्क को "अपरिवर्तनीय" बनाने के लिए परेशान होने की आवश्यकता नहीं है - क्या मैं सही हूं? इसके अलावा, हालांकि मुझे अपनी समस्या को हल करने के लिए इसकी आवश्यकता नहीं है, मैं VBoxManage कमांड के उद्देश्य से उत्सुक हूं, जिसका मैंने अपनी पिछली पोस्ट में उल्लेख किया है (और उन्हें कैसे काम करना है)
मार्टिन के

कृपया उस आदेश के बारे में दस्तावेज़ देखें: virtualbox.org/manual/ch09.html#disabletimesync मुझे यह नहीं दिखता कि एक अपरिवर्तनीय डिस्क का क्या लाभ होगा या इस संदर्भ में वास्तव में इसका क्या अर्थ है।
डेर होकस्टापलर

अपने मूल पद के अनुसार, मैंने पहले ही आपके द्वारा उल्लिखित दस्तावेज को देख लिया है और इसे काम पर लाने की कोशिश की है - हालाँकि यह कुछ भी नहीं करता था। मुझे कुछ याद आ रहा है - लेकिन क्या?
मार्टिन के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.