vim /etc/init.d/virtualbox chmod +x /etc/init.d/virtualbox update-rc.d virtualbox defaults
The /etc/init.d/virtualbox script should look like this:
#!/bin/sh # 2017-08-07 jj5 - SEE: How make Debian wait for all VirtualBox guests to # stop during shutdown/reboot?: https://superuser.com/a/929292/615689 ### BEGIN INIT INFO # Provides: virtualbox_start_and_stop # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: # Description: Start virtualbox on boot, and shutdown safely on shutdown/reboot. ### END INIT INFO case "$1" in start) echo "Starting Virtualbox " # Do whatever to start or resume your virtualbox instances. # Perhaps look for a txt file someplace with VMs that need to be # restarted or resumed... then start 'em. ;; stop) echo "Stopping Virtualbox" # Do something to either shutdown or savestate your virtualbox instances. # maybe also save the instances that should be resumed into a txt file # someplace for the start method above. # 2017-08-07 jj5 - SEE: # https://askubuntu.com/a/457564 # 2017-08-07 jj5 - NOTE: You should make sure that ACPI Shutdown actually # shuts down the guest... # 2017-08-07 jj5 - SEE: Force Ubuntu Desktop to shutdown on power button: # https://www.progclub.org/blog/2017/08/07/force-ubuntu-desktop-to-shutdown-on-power-button-keypress-acpi-shutdown/ while [ -n "$( sudo -u jj5 VBoxManage list runningvms )" ]; do sudo -u jj5 VBoxManage list runningvms \ | sed -r 's/.*\{(.*)\}/\1/' \ | xargs -L1 -I {} sudo -u jj5 VBoxManage controlvm {} acpipowerbutton; sleep 1; done; ;; *) echo "Usage: /etc/init.d/virtualbox {start|stop}" exit 1 ;; esac exit 0
You may also need to Force Ubuntu Desktop to shutdown on power button keypress…