시작시 VBoxHeadless VM 시작


16

시작시 VM이 실행되지 않는 것 같습니다.

"시작 응용 프로그램"과 update-rc.d를 운이없이 사용해 보았습니다.

sudo update-rc.d startvms defaults 99 10

이것은 다른 실행 레벨에 대한 모든 적절한 기호 링크를 작성했지만 VM은 여전히 ​​시작되지 않습니다.

내 startvms 스크립트는 다음과 같습니다.

#!/bin/bash
### BEGIN INIT INFO
# Provides:          startvms
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start my VMs at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
case "$1" in
  start)
        echo "Starting"
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  stop)
        echo "Stopping $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        ;;

  restart|force-reload)
        echo "Restarting $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

내가 도대체 ​​뭘 잘못하고있는 겁니까?


VRDP 지원을 포함하도록 Virtual Box를 PUEL로 업그레이드 했습니까 (헤드리스 모드 필요)?
Takkat

@Takkat : 예, 언급해야합니다 : 헤드리스 모드는 나를 위해 훌륭하게 작동합니다 ... 시작시 실행할 수 없습니다.
capdragon

1
명령 VBoxManage startvm --type headless "UbuntuServer"대신 시도하면 어떻게 VBoxHeadless되나요?
Takkat

다음과 같이 실행하려면 루트 여야 할 수도 있습니다 su -c 'VBoxHeadless --startvm <MACHINE>'.
Takkat

@Takkat : 주사위가 없습니다. 그러나 다시, VBoxHeadless를 사용중인 명령으로 올바르게 작동시킬 수 있습니다. 시작 스크립트에서 할 때만 작동하지 않습니다.
capdragon

답변:


27

본은 이다 마지막 일 것!

1) 시작 스크립트 파일 생성

/etc/init.d에서- sudo nano /etc/init.d/StartVM.

복사 파일에 다음을 붙여 넣고 VM 이름의 "My VM Name"을 바꿉니다.

#! /bin/sh
# /etc/init.d/StartVM
#

#Edit these variables!
VMUSER=spode
VMNAME="My VM Name"

case "$1" in
  start)
    echo "Starting VirtualBox VM..."
    sudo -H -b -u $VMUSER /usr/bin/VBoxVRDP -s "$VMNAME"
    ;;
  stop)
    echo "Saving state of Virtualbox VM..."
    sudo -H -u  $VMUSER /usr/bin/VBoxManage controlvm "$VMNAME" savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

2) 스크립트 실행 가능 권한 부여

sudo chmod +x /etc/init.d/StartVM.

3) 시작할 때 스크립트가 실행되도록 지시하십시오.

스크립트를 가장 먼저 종료하고 마지막으로 시작하십시오.

sudo update-rc.d StartVM defaults 99 01


2
VRDP가 추가 오버 헤드를 추가하지 VBoxManage startvm --type headless않습니까?
mojzis

3
필자의 경우에는 상태를 저장하지 않고 VM을 정상적으로 종료하기를 원했습니다. "savestate"를 "acpipowerbutton"으로 바꾸는 것이 완벽하게 작동했습니다.
muzzamo

2

참고로, 이것은 nohup없이 Opensuse에서 작동합니다.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &

그래서 nohup을 제외하고는 내가 가지고있는 것과 동일한 스크립트를 사용합니까?
capdragon

hohup을 제거했지만 여전히 작동하지 않습니다. 다른 일을해야합니다. 동일한 스크립트를 사용하고 있습니까? 답을 편집하고 스크립트를 포함 시켜서 시도해보십시오.
capdragon

2

이것은 Ubuntu 서버 12.04 및 VirtualBox 4.2.20에서 정상적으로 작동합니다.

#! /bin/sh
# /etc/init.d/StartVM
#
#Edit these variables!
VMUSER=username
case "$1" in
  start)
    echo "Starting VirtualBox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage startvm SMARTHOST --type headless
    echo "Starting VirtualBox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage startvm wxp-acceso --type headless
    echo "Starting VirtualBox VM wmmaq_edi ..."
    sudo -u $VMUSER VBoxManage startvm vmmaq_edi --type headless
    ;;
  stop)
    echo "Saving state of Virtualbox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage controlvm SMARTHOST savestate
    echo "Saving state of Virtualbox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage controlvm wxp-acceso savestate
    echo "Saving state of Virtualbox VM vmmaq_edi ..."
    sudo -u $VMUSER VBoxManage controlvm vmmaq_edi savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

sudo chmod +x /etc/init.d/StartVM

sudo update-rc.d StartVM defaults 99 01

이전 답변에 표시된대로.


이것은 나를 위해 잘 작동합니다! Vbox 5.0을 제외하고 sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME이므로 startvm에는 2 "-"가 있으며 headless 대신 VBoxHeadless를 고소합니다. 또한 우리가 끝에 "&"가없는 서버에 있다고 확신하는 동안 서버는 로그인 프롬프트로 부팅되지 않지만 모든 서비스는 SSH, RDP 등과 같은 것으로 작동합니다. 부팅 로그온 상세 정보에 서버가 멈춰 있습니다!
FreeSoftwareServers 2016 년

1

터미널의 명령 줄에서 VBoxHeadless 를 입력하면 init 스크립트에서 시작할 때 VM을 시작하지 않으면 VBoxHeadless제대로 작동 한다고 언급 했으므로 셸을 실행할 때 정의 된 환경 변수를 찾고 있다고 생각합니다. 터미널에 있지만 init 스크립트 환경에 정의되어 있지 않습니다 (커널 명령 줄에 지정된 매개 변수를 제외하고 기본적으로 비어 있음).

스크립트에서 VBoxHeadless 호출을 이것으로 바꿀 수 있습니까?

env USER=username HOME=/path/to/user/homedir VBoxHeadless ...same options as before...

여기서 "username"및 홈 디렉토리 경로는 VM을 시작하는 데 사용하는 사용자의 경로와 일치하도록 변경해야합니다.

그래도 문제가 해결되지 않으면 su -l 을 사용 하여이 env hack 대신 VBoxHeadless를 실행할 수 있습니다 .


+1- su -l좋은 지적입니다!
Takkat

아뇨 ... 여전히 작동하지 않습니다. 나는 cron 일을 사용하기로 결정했다
capdragon

1

최신 버전의 Virtualbox (4.2.0 이상)에서는 VM을 자동 시작하기 위해 자체 스크립트를 롤업 할 필요는 없지만 일부 구성이 필요합니다. "버추얼 매뉴얼의 섹션 9.24 참조 시스템 부팅시 가상 머신을 시작을 "

불행히도 매뉴얼은 개요 지침 만 제공하며 연령대에 업데이트되지 않았습니다. 나는 virtualbox 포럼에서이 게시물을 좀 더 자세히 발견했다.

서버를 시작하기 위해 rc.local에 줄을 넣을 수는 있지만 "공식적인"방법으로 읽으려면 ..

다음 행을 / etc / default / virtualbox에 추가하십시오.

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxautostart.cfg

/etc/vbox/vboxautostart.cfg를 편집하십시오 (이 예에서는 "Bob"사용자를 제외한 모든 사용자에 대한 자동 시작 권한을 거부합니다).

# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny

# Bob is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
bob = {
    allow = true
    startup_delay = 10
}

# Alice is not allowed to start virtual machines, useful to exclude certain users
# if the default policy is set to allow.
alice = {
    allow = false
}

vboxusers 그룹을 / etc / vbox 및 고정 비트에 추가하십시오.

# chgrp vboxusers /etc/vbox
# chmod 1775 /etc/vbox

virtualbox를 사용할 모든 사용자를 "vboxusers"그룹에 추가하십시오. 예 :

# adduser Bob vboxusers

개별 머신에 대해 자동 시작을 사용하려는 모든 사용자는 다음을 사용하여 자동 시작 데이터베이스 디렉토리의 경로를 설정해야합니다.

$ VBoxManage setproperty autostartdbpath /etc/vbox

그런 다음 사용자는 VM을 자동 시작하도록 설정하고 다음을 사용하여 VM이 중지되는 방식 (예 : savestate, acpishutdown)을 구성 할 수 있습니다.

$ VBoxManage modifyvm <vmname> --autostart-enabled on
$ VBoxManage modifyvm <vmname> --autostop-type acpishutdown

위의 내용은 virtualbox.org 저장소에서 설치된 Virtualbox 5와 함께 작동했습니다.


젠장, 방금 이 블로그 게시물을 기반으로, 이미 여기답변 을 찾은 것을 발견하기 위해 이것을
Jules

0

vrdp ..를 사용할 때 포트를 직접 설정하고 싶을 수도 있습니다.

VBoxVRDP -startvm "myVM" -vrdpport 3391 &

0

와우 .. 조금 복잡한 것처럼 보이는이 모든 솔루션을보고 있습니다. 그러나 이것은 제가 쓰는 간단한 노트북입니다.

VBoxHeadless -s "Ubuntu Server"

/ etc / 디렉토리의 rc.local 파일에서 꽤 잘 작동했습니다. 재부팅시 가상 머신을 자동으로 실행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.