그렇다면 항상 Virtualbox VM을 동시에 시작할 수 있습니까?


9

VB를 사용하여 교육 과정에 사용할 Windows 7 VM을 설정하려고합니다. 가상 머신이 항상 동일한 조건, 특히 다음과 같은 조건에서 시작되기를 원합니다.

  1. VM은 항상 같은 날짜와 시간에 시작합니다
  2. 이전 연습의 결과로 디스크가 변경되지 않은 상태로 유지됩니다.

디스크를 "불변 (immutable)"으로 구성하여 (2)를 처리하는 방법을 알아 냈지만 VM을 동시에 시작할 수는 없습니다. 주위를 둘러 본 후 나는 이것을 발견했다.

Virtualbox Guest Additions가 설치 및 시작되면 게스트 시간과 호스트 시간을 동기화하려고합니다. 게스트 서비스가 호스트 시계를 읽지 못하게함으로써이를 방지 할 수 있습니다.

VBoxManage setextradata "VM 이름" "VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled"1

VM을 종료하고 시작한 상태에서 시도했지만 아무것도하지 않는 것 같습니다. 에 동일한 문서 페이지 매개 변수의 언급 그러나 내가 날짜와 시간을 설정하기위한 형식에 대한 언급을 볼 수 없습니다 "--timesync-세트-시작"도있다. 도움을 환영합니다.


"아무것도하지 않는 것"으로 "시스템 시간과 날짜가 어쨌든 호스트와 동기화 됨"을 의미합니까?
Sopalajo de Arrierez

Windows 부팅 후 시간과 날짜를 설정하는 솔루션이어야합니까 (몇 초 후). 간단한 .cmd 스크립트가 그렇게해야한다고 생각합니다.
Sopalajo de Arrierez

Windows 자체는 인터넷 시간 서버와 시간을 동기화하도록 구성 될 수도 있습니다.
Thorbjørn Ravn Andersen

답변:


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 GuestAddition Timesync 비활성화

regedit.exe를 사용하여 레지스트리를 수정하십시오.

이 분기를 찾으십시오. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ VBoxService

의 값 변경 ImagePath에서을

system32\VBoxService.exe

system32\VBoxService.exe --disable-timesync

VM을 다시 시작하거나 "VirtualBox Guest Additions Service"서비스를 다시 시작하십시오.

Windows의 시간 동기화를 비활성화합니다.

시간 설정을 확인하십시오. 인터넷 시간 동기화를 비활성화하십시오.

출처 : http://www.ppq.ch/snippets/15-vobxtime


감사. "1.2 Disable GuestAddition Timesync"옵션이 저에게 효과적이었습니다. VirtualBox에서 호스트 변경 사항을 계속 되돌립니다. VM을 시작한 후 파일을 살펴보고 새로운 extradata xml 항목이 제거되었습니다.
Graymatter

5

호스트 시스템이 Windows / Linux 인 경우 다음 단계가 작동합니다.

  1. "대상 머신"이 Windows 인 경우 : "대상 가상 머신"을 열고 "제어판-> 날짜 및 시간-> 인터넷 시간-> 설정 변경->"인터넷 시간 서버와 동기화 "사용 안함"을 적용하십시오.

  2. 호스트 시스템에서 "yourfilename.ps1"(Windows) / "yourfilename.sh"(Linux) 파일로 아래 행을 복사하십시오. 3 단계에서 설명한대로이 파일을 편집하십시오. 4. 5.


호스트 : 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

호스트 : 리눅스

#!/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. VirtualBox 설치 경로로 "vbox_path"를 업데이트하십시오. (호스트 : Windows)
  2. 시작될 VirtualBox Image의 이름으로 "vm_name"을 업데이트하십시오.
  3. http://www.epochconverter.com/을 사용하여 "start_utc"를 업데이트 하십시오 . 대상 시스템은 항상 "start_utc"시간으로 시작합니다. 획기적인 변환기
  4. 시작 메뉴에서 "Windows PowerShell"을 관리자 권한으로 엽니 다 . (호스트 : Windows)
  5. 다음 명령을 실행하고 [Y]로 질문에 답하십시오. (호스트 : Windows)

    Set-ExecutionPolicy RemoteSigned
    
  6. "yourfilename.ps1"을 마우스 오른쪽 버튼으로 클릭하고 "Powershell로 실행"을 선택하여 대상 컴퓨터를 시작하십시오. (호스트 : Windows)

  7. 대상 시스템을 시작하려면 아래의 Linux 터미널 실행 명령을 시작하십시오 (호스트 : Linux)

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

참고 : 대상 가상 머신을 실행하려면 항상 8 단계 (호스트 : Windows) / 9 단계 (호스트 : Linux)를 사용하십시오.


: 리눅스 호스트가 사용자의 경우, 당신이 여기 찾을 수있는이 답변에 따라 떠들썩한 파티 스크립트를 생성 한 gist.github.com/breautek/be83414034b973d53691645d6e178bb4을 startvm.sh로 그냥 저장, chmod +x startvm.sh및 사용 ./startvm.sh을 실행합니다. 아마도 맥 호스트에서도 작동하지만 테스트하지는 않았습니다.
Norman Breau

1

OP의 (MartinK) 원래 질문에 대답하려면 Virtualbox VM을 항상 같은 시간에 시작할 수 있습니까?

간단하게 가능합니다

(a) 명령 줄에서 VBoxManage 명령을 사용하여 "GetHostTimeDisabled"속성을 = 1로 설정 (오프라인 모드에서, 즉 VM을 시작하기 전에)

(b) 이전에 저장된 저장된 SnapShot에서 VM을 시작합니다. (원하는 시작 시간에)

이것이 작동 할 때마다 더 이상 명령이 필요하지 않습니다. (Windows 호스트에서 Windows 게스트에 대해 테스트)

이 답변은 Oliver Salzburg의 "GetHostTimeDisabled"매개 변수 설정을 놓친 것을 제외하고는 이전 답변에 더 가깝습니다. 저장된 스냅 샷에서 OfCourse 인터넷 시간 동기화 (NTP)를 비활성화해야합니다.


0

스냅 샷을 사용하십시오.

  1. 새 스냅 샷을 만들려면 스냅 샷 개요 에서 스냅 샷 찍기 버튼을 사용하십시오 .

    여기에 이미지 설명을 입력하십시오

  2. 스냅 샷의 이름을 지정하고 저장하십시오.

  3. 나중에 고정 상태로 부팅하려면 스냅 샷 복원 버튼 을 사용하여 이전 스냅 샷으로 되돌립니다 .

    여기에 이미지 설명을 입력하십시오

스냅 샷의 날짜가 항상 같은지 확인 하려면 시계 구성 대화 상자에서 인터넷 시간 서버와 동기화 확인란을 선택 취소하여 Windows에서 인터넷 시간 동기화 를 비활성화 할 수 있습니다 .


그것은 훌륭한 해결책이며 나를 위해 문제를 해결한다고 생각합니다. 그러면 스냅 샷을 사용하면 디스크를 "불변"으로 만드는 것에 대해 신경 쓸 필요가없는 것 같습니다. 맞습니까? 또한 문제를 해결하기 위해 이것이 필요하지는 않지만 이전 게시물에서 언급 한 VBoxManage 명령의 목적 (및 작동 방법)에 대해 궁금합니다.
Martin K

해당 명령에 대한 설명서를 참조하십시오. virtualbox.org/manual/ch09.html#disabletimesync 불변 디스크가 어떤 이점을 가지고 있는지 또는이 문맥에서 실제로 의미하는 바는 없습니다.
Der Hochstapler

내 원래 게시물에 따라, 나는 당신이 참조하는 문서를 이미 보았고 그것을 작동 시키려고 노력했지만 아무 것도하지 않았습니다. 나는 무언가를 놓치고 있어야한다 – 그러나 무엇?
Martin K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.