부팅 할 때 가상 박스 머신을 자동으로 시작하는 방법은 무엇입니까?


53

Ubuntu12.04에는 많은 가상 상자 시스템이 있습니다. 종료 또는 재부팅 할 때마다 하나씩 가상 시스템을 시작해야합니다.

부팅 할 때 VBox 시스템을 자동으로 시작하기위한 스크립트 작성에 도움이 필요합니다.



@SergiyKolodyazhnyy이 질문은 결코 그것의 복제가 아닙니다.
무하마드 빈 Yusrat

답변:


51

VirtualBox 자동 시작 서비스를 사용할 수 있습니다. 이를 수행하는 방법을 설명하는 유용한 자습서는 "Geek Admin의 수명"블로그에 게시되어 있습니다.

다음 단계는 링크 된 블로그 게시물에서 수정되었습니다.

  1. 먼저 파일을 작성하고 /etc/default/virtualbox몇 가지 변수를 추가 해야 합니다.

    VBOXAUTOSTART_DB 자동 시작 데이터베이스 디렉토리에 대한 절대 경로를 포함하고
    VBOXAUTOSTART_CONFIG 자동 시작 설정 설정의 위치를 포함합니다. 파일은 다음과 유사해야합니다.

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
    
  2. 이제 /etc/vbox/vbox.cfg파일 을 생성 하고 추가해야합니다

    # Default policy is to deny starting a VM, the other option is "allow".
    default_policy = deny
    # Create an entry for each user allowed to run autostart
    myuserid = {
    allow = true
    }
    

    참고 : 파일 이름 vbox.cfg이 위에서 작동하지 않으면 이름을 지정하십시오 autostart.cfg.

    유일한 사용자 인 default_policy = allow경우 vbox.cfg파일에 줄 을 추가 하면 됩니다.

  3. 디렉토리에 대한 권한을 vboxuser 그룹에 설정하고 사용자가 고정 비트뿐만 아니라 디렉토리에도 쓸 수 있도록하십시오.

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
    
  4. 각 사용자를 vboxusers그룹에 추가하십시오 .

    sudo usermod -a -G vboxusers USERNAME

    ( USERNAME사용자 이름으로 대체 )

참고 : 현재 사용자의 그룹 권한을 변경 한 경우 로그 아웃했다가 다시 로그인하여 권한을 새로 고치십시오. (신용 @ kR105)

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

    VBoxManage setproperty autostartdbpath /etc/vbox

    와 개별 VM에 대한 자동 시작을 활성화

    VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

    디렉토리에 myuserid.start 파일 이 생성됩니다/etc/vbox

  2. 이제 vboxautostart-service를 다시 시작하여 변경 내용을 읽습니다.

    sudo service vboxautostart-service restart
  3. 시스템을 재부팅하면 VM이 시작됩니다


시작 스크립트를 사용하여 특정 가상 머신을 시작하는 방법
초보자

1
내 14.04는 'vboxautostart-service'와 같은 서비스가 없다고 주장합니다. 이것을 테스트 했습니까?
Arronical

@Arronical OP와 답변의 출처는 Ubuntu 12.04에 대한 것입니다. 그 이후 버전의 YMMV.
kdmurray 2016 년

virtualbox 4.3.10은 14.04에서 init 스크립트를 다운로드하지 않지만 아래의 ndasuser의 답변으로 문제를 해결하는 데 도움이되었습니다. 모든 라운드 +1!
Arronical

나는이 게시물의 사용 종료 .. 어떤 성공과 우분투 15.10에이 솔루션 작업을 시도하고 있었다 freesoftwareservers.com/index.php/2015/10/24/...을 .. 아마 올바른 방법,하지만 작동
mozart_ar을

15

나는 바닐라 LTS 에서이 작업을 시도하는 비슷한 불행한 사건이있었습니다.

~$ cat /etc/os-release 
NAME="Ubuntu" 
VERSION="14.04.1 LTS, Trusty Tahr" 

이 버전에서는 키 파일 /etc/init.d/vboxautostart-service 가 설치되지 않았습니다.

내가 알고있는 한 모든 VitualBox 및 요구 사항은 apt-get에 의해 입력되었으므로 'vboxautostart-service'파일도 제공되지 않은 이유를 말할 수 없습니다. 그러나 이것을 극복하기 위해 kdmurray의 게시물에 대한 나의 업데이트가 있습니다.

1) / etc / default / virtualbox 파일이 존재합니다. 따라서 var를 추가해야합니다.

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

2) OP에 표시된대로 /etc/vbox/autostart.cfg 를 작성해야 합니다.

6b) vboxautostart-service 스크립트를 얻어 실행 가능해야합니다.

cd /etc/init.d/
sudo wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-service
sudo chmod +x vboxautostart-service

6c) rc.d 컨트롤러에 경고하지만 24를 시작 시간으로 사용했습니다. 20 만 넣고 시작하지 않았습니다. 아마도 virtualbox가 작동하기 전에 실행되었을 것입니다.

sudo update-rc.d vboxautostart-service defaults 24 24

그런 다음 재부팅하면 VM이 올바르게 시작되었습니다.


1
버전 5.2에서는 vboxautostart-service를 편집 vboxdrv하고 # Required Start/ # Required Stop행을로 바꾸어야 합니다 virtualbox. 서비스 이름을 변경 한 것으로 보이므로 OS가 시작 / 중지 우선 순위를 올바르게 감지 할 수 없습니다. 그 줄을 바꾸면 6c 단계가 필요하지 않습니다.
생선 뼈

귀하의 의견은 나에게 부족한 트릭이었다 @fishbone 정말 감사합니다
하이로 안드레스 벨라스코 로메로

6

당신은 vboxmanage startvm "my virtual machine" --type=headless|gui|sdl(그중 하나)를 사용할 수 있습니다 . GUI를 사용하는 것 이외의 다른 방법으로 연결 한 서버 인 경우 "headless"를 사용하십시오.

부팅하는 동안 적절한 시간에 이러한 명령을 실제로 실행하려면 Upstart를 읽으십시오.


6

위의 kdmurray 에서 절차를 수행하기 위해 많은 불행한 시간을 보낸 후 , 성공하지 못하면 결국 간단하게 작동하는 방법을 찾았습니다.

부팅 할 때 처음으로 내 Linux 호스트 (Mint 17)가 기본 계정에 자동으로 로그인되도록 설정되었습니다.

두 번째로 VirtualBox GUI (v4.3.12)의 기능을 사용하여 데스크톱의 각 가상 시스템에 대한 바로 가기를 만들었습니다. {왼쪽 열에서 VM을 마우스 오른쪽 버튼으로 클릭하고 "바탕 화면에서 바로 가기 만들기"를 선택하십시오}

다음 : 이미 메뉴-> 제어 센터-> 시작 응용 프로그램-> 바탕 화면 바로 가기 추가 및 추가로 작동하지 않는 파일이 있음을 발견했습니다.이 페이지의 다른 답변에서 시작 위치가 / home임을 발견했습니다. /USERNAME/.config/autostart를 실행하여 각 데스크톱 VM 바로 가기를 마우스 오른쪽 버튼으로 클릭 한 다음 해당 폴더에 붙여 넣어 이전 크랩 파일을 덮어 씁니다. 이제 그들은 '예쁜'VirtualBox 아이콘을 개발했습니다.

그리고 호스트 컴퓨터를 다시 시작하면 3 대의 VM이 자동으로 시작됩니다.

:-)

빌 윌리엄스

추신 : 아아 아직 여전히 가상 머신이 부팅 할 때 시작되지 않기 때문에 여전히 누락 된 것이 있습니다. 대신 호스트를 재부팅하기 전에 종료하라는 메시지가 표시 되더라도 가상 머신이 잠겨 있다는 오류 대화 상자가 생성됩니다.


1
참고로 "답 5"는 없습니다. 각 답변의 왼쪽에 표시되는 숫자는 총 투표 수입니다. 당신의 방법은 좋은 대안 GUI 방법입니다. 기여해 주셔서 감사합니다.
hmayag

5

위의 vboxautostart-service에 대한 자세한 설명 외에도

VBoxManage modifyvm server --autostop-type savestate

종료시 게스트를 자동으로 중지합니다. 우분투 14.04의 경우 vboxautostart-service stop 섹션에 sleep 30 을 추가해야 게스트가 완전히 저장 될 때까지 기다렸습니다.


2

VBox 5.1.34를 실행하는 Ubuntu 16.04에서 더 간단한 방법을 찾았습니다.

VBox에있는 동안 목록에서 실행중인 VM 또는 유휴 VM을 마우스 오른쪽 단추로 클릭하고 '바탕 화면에 바로 가기 만들기'를 선택하십시오. 바탕 화면에 아이콘이 표시되면 VBox가 생성 한 기본 명령을 볼 수있는 도구를 사용하여여십시오. 시스템을 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택하십시오) 클립 보드에 복사하십시오.

프로그램을 열어 '시작 응용 프로그램'을 업데이트하고 VirtualBox에서 만든 데스크톱 링크에서 복사 한 명령에 붙여 넣어 부팅시 시작하는 새 응용 프로그램을 만듭니다.


1

세션에 로그인 할 때 VM을 시작하려면 .desktop 파일을 정의 할 수 있습니다.

이 파일이 자동 시작 디렉토리로 복사되거나 이동되면 로그인 후 실행됩니다.

사용자 공간에서 Virtual Box를 실행하면 부팅하는 동안 원하지 않는 부작용을 피하는 데 도움이 될 수 있습니다 (예 : VM이 루트로 실행되고 부팅 시간이 엄청나게 증가하는 등).


1

이는 VirtualBox 명령 줄 관리 인터페이스를 사용하여 수행 할 수 있습니다. 시작할 때 다음 스크립트를 실행하십시오.

#!/bin/bash
VMUSER="vmuser"
VMNAME="RedHatVM" #also you can put UUID in this variable (VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")

case "$1" in
    start)
        echo "===Starting VirtualBox VM==="
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        ;;
    stop)
        echo "===Saving state of Virtualbox VM==="
    sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
    sleep 20
        ;;
    shutdown)
        echo "===Shutting down Virtualbox VM==="
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
    sleep 20
        ;;
    reset)
        echo "===Resetting VirtualBox VM==="
         sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
        ;;
    status)
         echo -n "VMNAME->";sudo -H -u $VMUSER VBoxManage showvminfo "$VMNAME" --machinereadable |grep "VMState="| cut -d "=" -f2
        ;;
        echo "Usage: /etc/init.d/VMscript {start|stop|shutdown|reset|status}"
        exit 1
        ;;
    esac

exit 0

추가 정보를위한 좋은 입문서이다.


환영합니다 .. 링크에서 중요한 정보를 복사하여 붙여 넣기
폭풍

1

@kdmurray 답변에 애드온.

오류가 발생하면 :

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

이 문제를 해결하려면 "username".start 및 "username".stop 파일을 수동으로 작성해야합니다.

sudo touch "username".start
sudo touch "username".stop

소유자를 다음과 같이 변경하십시오.

sudo chown "username" "username".start
sudo chown "username" "username".stop

재실행 :

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

그런 다음 서비스를 다시 시작하십시오.

sudo service vboxautostart-service stop
sudo service vboxautostart-service start

확인은 모두 괜찮습니다.

top

가상 머신이 실행중인 경우 목록에 "VBox ..."프로세스가 표시되어야합니다.


0

여기에 설명 된 그놈 세션 관리자를 얻을 수도 있습니다. Gnome Session Manager 소프트웨어 센터에 있거나 터미널로 가서 sudo apt-get install gnome-session-common

다음으로 작은 스크립트를 작성하여 그놈 세션 관리자를 사용하여 시작하십시오. 다음은 약간의 샘플 스크립트입니다.

#!/bin/sh

#vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (one of those)
# So if your username is user, and virtualbox put your VMs in the default location, and you want headless...

vboxmanage startvm '/home/user/VirtualBox VMs/myvmname' --type=gui

0

호스트 컴퓨터를 재부팅 할 때 Centos (가상 머신 이름)를 시작하는 방법입니다. 나는 그 일에 crontab을 사용합니다. 내 crontab 항목은 다음과 같습니다.

@reboot VBoxHeadless --startvm "Centos" &

0

우분투 서버 16.04.1 LTS의 경우 다음을 수행하여 해결했습니다.

먼저 rc-local.service를 활성화하십시오

sudo systemctl enable rc-local.service

에 다음 줄을 추가하십시오 /etc/rc.local

su virtual_box_user -c "VBoxHeadless -startvm 'virtual_machine_name' &"

virtual_box_user는 명령을 실행하는 가상 머신 (시작하려는)을 볼 수있는 것입니다.

VBoxManage list vms

예:

$ VBoxManage list vms
"virtualbox1" {2eb3ba3b-bcb3-4515-95d9-d33bce214c28} 
"virtualbox2" {62365634-f2q4-40c0-b4ed-22f4ab84441a}

수정 된 /etc/rc.local모습은 다음과 같습니다

#!/bin/sh -e
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error.
# 
# In order to enable or disable this script just change the execution
# bits. 
# 
# By default this script does nothing. 

su bob -c "VBoxManage startvm 'virtualbox1' --type headless &" 
su bob -c "VBoxManage startvm 'virtualbox2' --type headless &" 

exit 0 

virtualbox의 올바른 소유자를 선택하지 않으면 명령을 입력 할 때 오류가 발생합니다.

sudo systemctl status rc-local.service

이것이 도움이되기를 바랍니다.


0

1-파일을 작성하십시오.

nano /etc/init.d/vm-start

붙여 넣기

#!/bin/bash
/bin/echo "* Starting VMS..."
/bin/sleep 1
/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME--type headless"
/bin/sleep 1
  • "validuser"를 사용자 이름으로 바꾸십시오
  • "MACHINENAME"을 가상 머신 이름으로 바꾸십시오.
  • 둘 이상의 머신을 시작해야하는 경우 가상 머신 이름으로 위의 행을 반복하십시오.

/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME2--type headless" /bin/sleep 1

2-파일 vm-start를 실행 파일로 만듭니다.

chmod +x /etc/init.d/vm-start

3-rc.local 편집

nano /etc/rc.local

이거 추가 해봐:

#!/bin/bash
/etc/init.d/vm-start
exit 0

4-재부팅

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