Ubuntu12.04에는 많은 가상 상자 시스템이 있습니다. 종료 또는 재부팅 할 때마다 하나씩 가상 시스템을 시작해야합니다.
부팅 할 때 VBox 시스템을 자동으로 시작하기위한 스크립트 작성에 도움이 필요합니다.
Ubuntu12.04에는 많은 가상 상자 시스템이 있습니다. 종료 또는 재부팅 할 때마다 하나씩 가상 시스템을 시작해야합니다.
부팅 할 때 VBox 시스템을 자동으로 시작하기위한 스크립트 작성에 도움이 필요합니다.
답변:
VirtualBox 자동 시작 서비스를 사용할 수 있습니다. 이를 수행하는 방법을 설명하는 유용한 자습서는 "Geek Admin의 수명"블로그에 게시되어 있습니다.
다음 단계는 링크 된 블로그 게시물에서 수정되었습니다.
먼저 파일을 작성하고 /etc/default/virtualbox
몇 가지 변수를 추가 해야 합니다.
VBOXAUTOSTART_DB 자동 시작 데이터베이스 디렉토리에 대한 절대 경로를 포함하고
VBOXAUTOSTART_CONFIG 자동 시작 설정 설정의 위치를 포함합니다. 파일은 다음과 유사해야합니다.
# virtualbox defaults file
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
이제 /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
파일에 줄 을 추가 하면 됩니다.
디렉토리에 대한 권한을 vboxuser 그룹에 설정하고 사용자가 고정 비트뿐만 아니라 디렉토리에도 쓸 수 있도록하십시오.
sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox
각 사용자를 vboxusers
그룹에 추가하십시오 .
sudo usermod -a -G vboxusers USERNAME
( USERNAME
사용자 이름으로 대체 )
참고 : 현재 사용자의 그룹 권한을 변경 한 경우 로그 아웃했다가 다시 로그인하여 권한을 새로 고치십시오. (신용 @ kR105)
개별 머신에 대해 자동 시작을 사용하려는 모든 사용자는 다음을 사용하여 자동 시작 데이터베이스 디렉토리의 경로를 설정해야합니다.
VBoxManage setproperty autostartdbpath /etc/vbox
와 개별 VM에 대한 자동 시작을 활성화
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
디렉토리에 myuserid.start
파일 이 생성됩니다/etc/vbox
이제 vboxautostart-service를 다시 시작하여 변경 내용을 읽습니다.
sudo service vboxautostart-service restart
시스템을 재부팅하면 VM이 시작됩니다
나는 바닐라 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이 올바르게 시작되었습니다.
vboxdrv
하고 # Required Start
/ # Required Stop
행을로 바꾸어야 합니다 virtualbox
. 서비스 이름을 변경 한 것으로 보이므로 OS가 시작 / 중지 우선 순위를 올바르게 감지 할 수 없습니다. 그 줄을 바꾸면 6c 단계가 필요하지 않습니다.
당신은 vboxmanage startvm "my virtual machine" --type=headless|gui|sdl
(그중 하나)를 사용할 수 있습니다 . GUI를 사용하는 것 이외의 다른 방법으로 연결 한 서버 인 경우 "headless"를 사용하십시오.
부팅하는 동안 적절한 시간에 이러한 명령을 실제로 실행하려면 Upstart를 읽으십시오.
위의 kdmurray 에서 절차를 수행하기 위해 많은 불행한 시간을 보낸 후 , 성공하지 못하면 결국 간단하게 작동하는 방법을 찾았습니다.
부팅 할 때 처음으로 내 Linux 호스트 (Mint 17)가 기본 계정에 자동으로 로그인되도록 설정되었습니다.
두 번째로 VirtualBox GUI (v4.3.12)의 기능을 사용하여 데스크톱의 각 가상 시스템에 대한 바로 가기를 만들었습니다. {왼쪽 열에서 VM을 마우스 오른쪽 버튼으로 클릭하고 "바탕 화면에서 바로 가기 만들기"를 선택하십시오}
다음 : 이미 메뉴-> 제어 센터-> 시작 응용 프로그램-> 바탕 화면 바로 가기 추가 및 추가로 작동하지 않는 파일이 있음을 발견했습니다.이 페이지의 다른 답변에서 시작 위치가 / home임을 발견했습니다. /USERNAME/.config/autostart를 실행하여 각 데스크톱 VM 바로 가기를 마우스 오른쪽 버튼으로 클릭 한 다음 해당 폴더에 붙여 넣어 이전 크랩 파일을 덮어 씁니다. 이제 그들은 '예쁜'VirtualBox 아이콘을 개발했습니다.
그리고 호스트 컴퓨터를 다시 시작하면 3 대의 VM이 자동으로 시작됩니다.
:-)
빌 윌리엄스
추신 : 아아 아직 여전히 가상 머신이 부팅 할 때 시작되지 않기 때문에 여전히 누락 된 것이 있습니다. 대신 호스트를 재부팅하기 전에 종료하라는 메시지가 표시 되더라도 가상 머신이 잠겨 있다는 오류 대화 상자가 생성됩니다.
VBox 5.1.34를 실행하는 Ubuntu 16.04에서 더 간단한 방법을 찾았습니다.
VBox에있는 동안 목록에서 실행중인 VM 또는 유휴 VM을 마우스 오른쪽 단추로 클릭하고 '바탕 화면에 바로 가기 만들기'를 선택하십시오. 바탕 화면에 아이콘이 표시되면 VBox가 생성 한 기본 명령을 볼 수있는 도구를 사용하여여십시오. 시스템을 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택하십시오) 클립 보드에 복사하십시오.
프로그램을 열어 '시작 응용 프로그램'을 업데이트하고 VirtualBox에서 만든 데스크톱 링크에서 복사 한 명령에 붙여 넣어 부팅시 시작하는 새 응용 프로그램을 만듭니다.
세션에 로그인 할 때 VM을 시작하려면 .desktop 파일을 정의 할 수 있습니다.
이 파일이 자동 시작 디렉토리로 복사되거나 이동되면 로그인 후 실행됩니다.
사용자 공간에서 Virtual Box를 실행하면 부팅하는 동안 원하지 않는 부작용을 피하는 데 도움이 될 수 있습니다 (예 : VM이 루트로 실행되고 부팅 시간이 엄청나게 증가하는 등).
이는 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
이 추가 정보를위한 좋은 입문서이다.
@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 ..."프로세스가 표시되어야합니다.
여기에 설명 된 그놈 세션 관리자를 얻을 수도 있습니다. 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
우분투 서버 16.04.1 LTS의 경우 다음을 수행하여 해결했습니다.
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
이것이 도움이되기를 바랍니다.
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
/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-재부팅