After finding a lot of other posts on the topic that didn't work out for me this one did the trick so I'm reposting for my own sense of self preservation.
Copy the Virtualbox autostart plist template file to your system's LaunchDaemons folder.
sudo cp \
/Applications/VirtualBox.app/Contents/MacOS/org.virtualbox.vboxautostart.plist \
/Library/LaunchDaemons
Then edit /Library/LaunchDaemons/org.virtualbox.vboxautostart.plist
set Disabled
to false
, set KeepAlive
to true
, and confirm the last string entry in the command array is set to /etc/vbox/autostart.cfg
. The file should look like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.virtualbox.vboxautostart</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/VirtualBox.app/Contents/MacOS/VBoxAutostartDarwin.sh</string>
<string>--start</string>
<string>/etc/vbox/autostart.cfg</string>
</array>
</dict>
</plist>
Make the directory /etc/vbox
and create the file /etc/vbox/autostart.cfg
with the following content:
default_policy = deny
osxusername = {
allow = true
}
Make sure to change osxusername to the username on your system that the VMs are under.
Next properly set permissions:
sudo chmod +x /Applications/VirtualBox.app/Contents/MacOS/VBoxAutostartDarwin.sh
sudo chown root:wheel /etc/vbox
sudo chown root:wheel /etc/vbox/autostart.cfg
sudo chown root:wheel /Library/LaunchDaemons/org.virtualbox.vboxautostart.plist
Now, configure the VMs that should automatically start and set how they should be stopped:
VBoxManage modifyvm vmname --autostart-enabled on
VBoxManage modifyvm vmname --autostop-type acpishutdown
Finally, test the configuration by running:
sudo launchctl load /Library/LaunchDaemons/org.virtualbox.vboxautostart.plist
After a reboot, the VMs that have been set with autostart enabled should be running!
https://www.virtualbox.org/manual/ch09.html#autostart-osx
https://forums.virtualbox.org/viewtopic.php?f=8&t=51593&start=15#p240724
https://forums.virtualbox.org/viewtopic.php?f=11&t=51529#p236492
Ok this seems to work properly on a Sierra + VirtualBox5.2.0 r118431 (machines start properly on startup)
but seems it did not stop VMs on Mac Mini shutdown
Actually if I run
sudo launchctl list
I cannot see anything like 'org.virtualbox.vboxautostart' which I thought it would be the 'service' started
Seems like it is configured just as a 1 time script to be run on startup
Probably I am missing many things. Any idea?
By the way if I execute:
/Applications/VirtualBox.app/Contents/MacOS/VBoxAutostart --quiet --stop --config /etc/vbox/autostart.cfg
The VM are properly shutdown.
From what I can understand from /Applications/VirtualBox.app/Contents/MacOS/VBoxAutostartDarwin.sh it will capture HUP, KILL or TERM signals to the process to run such command. the problem is the script will not receive any signal because it exists after doing the start.
So Launchd won't send any signal -> it won't stop anything.