VirtualBox
# sudo pico /etc/rc.local
(在ubuntu 1404後開機自動執行script的功能已移到 crontab -e 裡,請把原來的script 改為 @reboot /path/script)
在最後加上
# 當核心更新後,VirtualBox 會無法啟動,所以要預先編譯 核心 /etc/init.d/vboxdrv setup # sudo -H -b -u username /usr/bin/VBoxHeadless --startvm "SERVER_WWW_64" --vrde off & 在最後加上 & 這個參數,讓 user 在登出後 VM 可以繼續執行,不然在 user 登出後,VM會立馬關閉。 ps: username ---> 登入的id,也就是建立 VM 的帳號
若有二個以上的 VM 要執行,那麼,在 各個 VM 啟動的指令間,加上 sleep 60
參數說明:
在 /etc/rc.local 是以 root 的權限執行,但 VM 是由 使用者所建立的,所以要模擬使用者的權限來執行sudo -H -b -u username | 以使用者 username 的身份來執行 |
/usr/bin/VBoxHeadless --startvm | 以背景的方式執行,不會有視窗產生 |
"SERVER_WWW_64" | VM 的名稱 |
--vrde off | 關閉虛擬機遠端連線 |
& | 讓這一條指令以背景執行,這樣,在實體機開機完成後就能啟動 VM 的執行 |
若是直接在 /etc/rc.local 裡的指令是
/usr/bin/VBoxHeadless --startvm "SERVER_WWW_64" --vrde off &
會發現 VM 並沒有啟動,那是因為不是由 root 建立這個 VM,所以,這就是 執行身份不符合所產生的問題。
ps: /etc/rc.local 裡的每一行命令都是以 root 的身份執行。