
我的目標是當我啟動和停止我的主機(Ubuntu 10.04)時,讓 Ubuntu 優雅地啟動和停止無頭虛擬機器 VM。
我正在使用一個腳本由...提供誇迪爾·卡里穆拉的頁面。
這是腳本中的 LSB 註解頭(我從「Required-Start」中刪除了 vboxnet 以減少依賴性):
### BEGIN INIT INFO
# Provides: vboxsvc
# Required-Start: $local_fs $remote_fs vboxdrv
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: VirtualBox Service
# Description: VirtualBox Service to startup and shutdown Virtual Machines
### END INIT INFO
正如 Quadir 所解釋的,我在 /etc/init.d/ 中找到了「vboxsvc」並執行了:
$sudo update-rc.d vboxsvc
這創建了運行級別的連結。例如在運行等級 2 中:
$ls -l /etc/rc2.d/
...
lrwxrwxrwx 1 root root 17 2010-11-03 20:02 S20vboxdrv -> ../init.d/vboxdrv
lrwxrwxrwx 1 root root 25 2010-11-03 20:03 S20vboxweb-service -> ../init.d/vboxweb-service
lrwxrwxrwx 1 root root 17 2010-11-11 21:43 S21vboxsvc -> ../init.d/vboxsvc
...
如果我手動啟動|停止服務:
$sudo /etc/init.d/vboxsvx start
它按預期工作。
如果我執行“service --status-all”,該服務不會出現在清單中,但當我使用 sysv-rc-conf --list 時,該服務就會出現。
當我啟動電腦時它不會自動啟動。另一方面,當我重新啟動或關閉時,該服務會自動停止。由於某種原因,當系統啟動時,連結 /etc/rc2.d/S21vboxnet 未執行或發生其他情況。
我知道 Upstart 是 Ubuntu 中現在做事的方式,但 SysV init 仍然受支持,對吧?
編輯:我想我已經接近解決問題了。我認為解決方案與對我的家庭文件系統進行加密有關。當 init 進程執行相應的啟動腳本並嘗試執行“sudo -H -u myuser VBoxManage myVirtualMachine -type vrdp > /dev/null”時,它無法訪問 myVirtualMachine 的資料(位於加密檔案系統中)因為我還沒有以myuser身分登錄,因此我的主檔案系統尚未安裝。
答案1
我認為整個問題是由我的主分割區被加密引起的。
我最終遵循了這個問題刪除加密。
我的建議是,除非您知道自己在做什麼,否則不要在安裝 Ubuntu 時加密您的主分割區。如果您這樣做,請注意,除非您已經登錄,否則您的主目錄下的所有內容都會被其他使用者(包括 root)鎖定。
答案2
讓一個新的系統使用者來運行 VirtualBox 不是比取消加密你的主資料夾更好嗎?
這樣您仍然可以獲得保護,並且虛擬機器可以毫無問題地啟動。