부팅 시 VirtualBox 헤드리스 VM 시작

부팅 시 VirtualBox 헤드리스 VM 시작

Ubuntu 12.04 호스트에서 두 개의 VirtualBox 헤드리스 VM을 실행하고 있습니다. 시스템이 부팅될 때 이러한 VM이 자동으로 시작되도록 하고 싶습니다.

다음과 같이 두 개의 crontab 항목이 설정되어 있습니다(VM을 소유한 사용자 아래).

@reboot /usr/bin/vboxheadless -startvm io
@reboot /usr/bin/vboxheadless -startvm pbx

그러나 그것은 트릭을 수행하지 않는 것 같습니다. 터미널에서 직접 명령을 실행하면 기계가 문제 없이 시작되지만 시스템이 시작된 후에는 시작할 수 없는 것 같습니다. VirtualBox 프로그램/라이브러리가 로드되기 전에 crontab이 실행 중일 수도 있다고 생각합니다.

이러한 VM을 자동으로 시작하려면 어떻게 해야 하나요?

답변1

이것이 내가 사용하는 것입니다. 부팅 시 VM을 시작하고 종료/재부팅 시 상태를 저장합니다.

#!/bin/bash
### BEGIN INIT INFO
# Provides:       vmboot
# Required-Start: vboxdrv
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Stop/Start VMs on System shutdown
### END INIT INFO

VBOXUSER=vboxuser
SU="sudo -H -u $VBOXUSER"
VBOXMANAGE=/usr/bin/VBoxManage
VBOXHEADLESS=/usr/bin/VBoxHeadless
RUNNINGVMS=$($SU $VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/')
ALLVMS=$($SU $VBOXMANAGE --nologo list vms | sed -e 's/^".*".*{\(.*\)}/\1/')

case $1 in
stop)
if [[ -n $RUNNINGVMS ]]; then
echo "Saving the state of all running VMs..."
for v in $RUNNINGVMS; do
    $SU $VBOXMANAGE --nologo controlvm $v savestate
done
fi
;;
start)
for v in $ALLVMS; do
if [[ -n $($SU $VBOXMANAGE --nologo showvminfo $v | grep saved) ]]; then
    echo "Restoring VMs..." && $SU $VBOXHEADLESS -s $v & > /dev/null
fi
done
;;
*)
echo "Usage: /etc/init.d/vmboot start | stop"; exit 1
;;
esac
exit 0

/etc/init.d에 저장하면 됩니다. 내 이름을 vbox로 지정했습니다. 달리면 update-rc.d <script name> defaults갈 수 있을 것입니다.

답변2

VM을 수동으로 시작할 때 루트가 아닌 계정으로 로그인한 것으로 의심되지만 cron루트로 실행되므로 VM에 대해 알지 못합니다. 명령을 실행하여 확인할 수 있습니다.

sudo /usr/bin/vboxheadless -startvm io

오류가 발생하는 경우

Invalid machine name or UUID!

VM이 루트 계정에 등록되지 않았습니다. 이 경우 계정에서 명령을 실행하는 셸 스크립트를 만들고 다음을 사용하여 해당 스크립트를 예약합니다 cron.

#!/bin/sh

USERNAME=...

su -c "/usr/bin/vboxheadless -startvm io" - $USERNAME
su -c "/usr/bin/vboxheadless -startvm pbx" - $USERNAME

답변3

MB/CPU 지원 하드웨어 시각화가 ProxMox인 경우에도 보조 옵션입니다. Linux, KVM 및 웹 인터페이스의 자체 포함 설치입니다. 커널 수준에서 실행되므로 virtualbox에 비해 성능이 훨씬 뛰어나며 virtualbox가 사용하는 "가상" 드라이브 대신 실제로 KVM 아래의 게스트를 훨씬 적은 디스크 Io를 사용하는 물리적 드라이브에 연결할 수 있습니다.

시스템이 하드웨어 시각화를 지원하는지 빠르게 확인하세요.

egrep -c '(vmx|svm)' /proc/cpuinfo

관련 정보