線上書籍

Home

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 

# 當核心更新後,VirtualBox 會無法啟動,所以要預先編譯 核心 /etc/init.d/vboxdrv setup sudo -H -b -u username /usr/bin/VBoxHeadless --startvm "SERVER_DNS" --vrde off & sleep 60 sudo -H -b -u username /usr/bin/VBoxHeadless --startvm "SERVER_WWW" --vrde off & sleep 60 sudo -H -b -u username /usr/bin/VBoxHeadless --startvm "SERVER_FTP" --vrde off &

參數說明:

在 /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 的身份執行。