Chương trình sau tự động load một máy ảo VirtualBox khi hệ thống startup ở trạng thái Headless (Không hiển thị giao diện).

Do máy ảo được cài đặt dưới tư cách của user nên cần chỉ định rõ user nào đang sở hữu máy ảo VirtualBox tại biến VMUSER và tên của máy ảo tại VMNAME.

Máy ảo được khởi động kiểu Headless nên đương nhiên muốn truy cập thì phải mở giao diện của VirtualBox, điều này không có lợi nếu truy cập từ xa. Tôi thường thiết lập Static IP cho máy ảo và cấu hình giao diện mạng (Network Interface) là Bridge để nó hoạt động như một máy tính trong mạng LAN.

Tạo một startup script trong /etc/init.d như sau.

/etc/init.d/startvm

#! /bin/sh
### BEGIN INIT INFO
# Author:            Nguyen Hong Hai
# Provides:          startvm
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run a VirtualBox VM on startup
### END INIT INFO
 
# Please change these variables
VMUSER="icreativ"
VMNAME="Jessie Web Server"
 
case "$1" in
    start)
        echo "Starting ${VMNAME}..."
        sudo -H -b -u ${VMUSER} /usr/bin/VBoxVRDP -s "${VMNAME}"
        ;;
    stop)
        echo "Saving state of ${VMNAME}..."
        sudo -H -u  ${VMUSER} /usr/bin/VBoxManage controlvm "${VMNAME}" savestate
        ;;
    halt)
        echo "Turning off ${VMNAME}..."
        sudo -H -u  ${VMUSER} /usr/bin/VBoxManage controlvm "${VMNAME}" acpipowerbutton
        ;;
    *)
        echo "Usage: /etc/init.d/startvm {start|stop|halt}"
        exit 1
        ;;
esac
 
exit 0

Đăng ký service để tự động load khi khởi động.

$ sudo update-rc.d startvm defaults