VirtualBox 시스템을 자동으로 시작하고 종료하는 방법은 무엇입니까?

VirtualBox 시스템을 자동으로 시작하고 종료하는 방법은 무엇입니까?

전용 컴퓨터에 어플라이언스로 설치되도록 설계된 소프트웨어 시스템을 실행해야 합니다. 에너지를 절약하기 위해 VirtualBox VM에서 시스템을 실행할 계획입니다.

호스트는 SysV-Init 시스템을 갖춘 표준 Linux 시스템이고, 게스트는 크게 수정된 Linux이므로 더 이상 변경하고 싶지 않습니다. VirtualBox는 OSE 버전에서 사용됩니다.

호스트가 부팅될 때 가상 머신을 시작하는 방법을 알아냈습니다(편집하다:아래에서 Nikhil이 언급했듯이 이 작업은 VBoxManager startvm명령을 통해 수행됩니다. 그런데 VM을 정상적으로 종료하려면 어떻게 해야 합니까? 호스트에서 실행되는 모든 스크립트는 게스트가 완전히 종료될 때까지 기다려야 합니다.

예를 들어, 이를 수행하기 위한 서비스 파일이 어떤 모습이어야 하는지 제안할 수 있는 사람이 있습니까?

답변1

acpipowerbutton이 명령 세트를 사용해 보셨나요 ?

VBoxManage controlvm        <uuid>|<name>
                            pause|resume|reset|poweroff|savestate|
                            acpipowerbutton|acpisleepbutton|

댓글을 읽은 후 수정하세요.

acpid또는 기타 acpi 유틸리티를 사용하여 우아하게 만들 수 있습니다. 또한 현재 컴퓨터를 종료하는 방법에 대한 자세한 정보를 제공할 수 있습니까?

Plain은 shutdown완료되지 않은 작업을 기다리지 않으며 시간 지연이 너무 길어질 수 있습니다.

나는 당신이 창 관리자를 사용하고 있지 않다고 가정하고 있으므로 이것을 시도하십시오이것도구.

방금 봤어이 데몬. 유용하다고 생각할 수도 있습니다.

답변2

코드를 직접 작성하는 대신 다음을 사용하는 것이 좋습니다.도보 여행가, virtualbox 인스턴스를 인스턴스화하고 제어하기 위해 구축되었습니다. 문서는 매우 훌륭하므로 직접 작성하기보다는 직접 확인해 보는 것이 좋습니다.

즉, 간단한 제어 파일을 만든 다음 이를 실행하여 vagrant up원하는 만큼의 VirtualBox 인스턴스를 시작할 수 있습니다. 이를 사용하여 vagrant ssh호스트에 로그인하고 vagrant halt호스트를 종료하지 않고 종료할 수 있습니다. vagrant destroy인스턴스를 제거합니다.

Puppet, Ansible 또는 Chef를 사용한 구성을 지원하며 노출된 VBox 구성 설정의 대부분을 제어할 수 있습니다.

답변3

귀하와 유사한 애플리케이션이 있지만 한 가지 차이점이 있습니다. 시스템을 재부팅하고 스냅샷에서 복원해야 한다는 것입니다.

당신은 관심이 있습니다헤드리스 모드.

이와 같은 서비스가 있으므로 다음 스크립트를 사용합니다.

VBox_StopRestoreStart.sh

#!/bin/bash
if [ -z "$1" ]; then
        echo "Usage: $0 VMNAME_or_UUID"
        exit 1
fi
set -x
VBoxManage controlvm  "$1" poweroff  #enforce turnoff
VBoxManage snapshot   "$1" restorecurrent   #retore state
VBoxManage showvminfo "$1" | grep State   #display state to ensure
VBoxHeadless -s       "$1"  #run in headless mode in background

가상 머신을 정상적으로 종료하는 방법은 무엇입니까?

VM을 정상적으로 종료하려는 경우 애플리케이션에 따라 두 가지 옵션이 있습니다.

  • "종료 버튼" 시뮬레이션또는 "잠자기 버튼"을 누르고 가상 머신이 이에 반응하도록 준비합니다(정상적으로 종료).
    • VBoxManage controlvm <uuid>|<VMname> acpipowerbutton
    • VBoxManage controlvm <uuid>|<VMname> acpisleepbutton
  • 나중에 복원할 수 있도록 가상 머신 상태 저장
    • VBoxManage controlvm <uuid>|<VMname> savestate

팁: 다음이 유용할 수 있습니다.

  • VBoxManage list vms- 사용 가능한 가상 머신 목록
  • rdesktop IP-ADDR:3389또는 rdesktop-vrdp IP-ADDR:3389- GUI를 원할 때(또는 심지어떨어져서) 헤드리스 모드에서 실행하는 경우:VBoxHeadless -s <uuid>|<VMname>
  • VBoxManage startvm- 로컬 디버깅을 위해 GUI에서 실행

VirtualBox 매뉴얼의 관련 섹션:7장 원격 가상 머신 - 단계별: 헤드리스 서버에 가상 머신 생성

PS 구현된 완전한 기능의 솔루션에 관심이 있다면,오픈 스택흥미로운 선택인 것 같습니다.

답변4

systemd 기반 시스템의 경우 이것을 시도해 볼 수 있습니다.

1단계: 서비스 파일 생성

[Unit]
Description=VBox Virtual Machine %i Service
Requires=systemd-modules-load.service
After=systemd-modules-load.service

[Service]
User=user
Group=vboxusers
ExecStart=/usr/bin/VBoxHeadless -s %i
ExecStop=/usr/bin/VBoxManage controlvm %i savestate

[Install]
WantedBy=multi-user.target

2단계: 서비스 파일 활성화

$ sudo systemctl enable vboxvmservice@vm_name.service

인용하다

관련 정보