轉載
原文地址:https://www.cnblogs.com/nshuai/p/5857610.html
裝上VirtualBox就琢磨着如何讓它開機自動啟動,又或者能夠通過命令行的形式直接啟動指定的虛擬機。
看了下VirtualBox的官方文檔,發現有一個命令可以滿足我的需求,即VBoxManage。
VBoxManage提供了一系列的虛擬機管理命令,包括創建/刪除/啟動/修改等等,這里不一一列舉。有點像Xen的XM命令。
不過這里只關心啟動虛擬機的命令:VBoxManage startvm。VBoxManage的完整命令列表可以參考這里。
VBoxManage startvm子命令可以開啟一台狀態為關閉或者保存的虛擬機。該命令的語法為:
VBoxManage startvm uuid>|name... [--type gui|sdl|headless]
可以通過虛擬機的uuid或者name來指定某台虛擬機,可以通過另外一個子命令list列出系統已有的虛擬機:
$ VBoxManage list vms
"XP" {8842d793-228c-458e-a880-8051193fd2db}
我系統上已經安裝了一台名為XP的虛擬機,后面括號內部的是它的UUID。
VBoxManage startvm子命令可以通過–type參數指定啟動的方式,其中gui就是圖形化界面,這和我們平時啟動的方式一樣。
sdl也是圖形化界面,但是少掉了部分功能,比如沒有菜單等,一般用於調試過程。最后headless是在后台運行,並且默認開啟vrdp服務,可以通過遠程桌面工具來訪問。
關於這三種啟動方式的介紹可以看手冊中的這一篇。所以一般我們使用gui或者headless類型啟動。
使用gui類型啟動虛擬機:
$ VBoxManage startvm XP --type gui
執行結束后,就會啟動指定的虛擬機,幾乎和平時沒什么區別。
使用headless類型啟動虛擬機:
$ VBoxManage startvm "XP" --type headless
或者
$ VBoxHeadless --startvm "XP"
結果返回:
$ rdesktop -a 16 -N -g 1280x800 127.0.0.1:3389
Autoselected keyboard map en-us
ERROR: connect: Connection refused
翻了下手冊,結果發現要獲得VRDP的支持還需要安裝額外的擴展包,詳細說明可以參考這里。
從VirtualBox的下載頁面選擇相應的版本下載擴展包。下載完成后,雙擊即可以完成安裝,或者在菜單中File-Preference-Extensions可以安裝和查看已安裝的擴展包。
安裝好再次執行上面的遠程命令,這下可以看見虛擬機界面了吧。
可以通過ctrl+alt+enter切換全屏。不過我這里用rdesktop全屏后,屏幕就黑了,只有點過的地方才會恢復。
不知道是什么原因,我就干脆用TigerVNC了,同時在啟動headless的時候加上-n參數{$ VBoxHeadless -n -s winxp (VBoxHeadless -s winxp --vnc --vncport 5900 --vncpass password)},通過以下命令遠程連接:
$ vncviewer localhost:5900
按下F8會出現一個菜單,里面可以切換全屏。
一切相關的命令:
$ VBoxManage list runningvms # 列出運行中的虛擬機
$ VBoxManage controlvm XP acpipowerbutton # 關閉虛擬機,等價於點擊系統關閉按鈕,正常關機
$ VBoxManage controlvm XP poweroff # 關閉虛擬機,等價於直接關閉電源,非正常關機
$ VBoxManage controlvm XP pause # 暫停虛擬機的運行
$ VBoxManage controlvm XP resume # 恢復暫停的虛擬機
$ VBoxManage controlvm XP savestate # 保存當前虛擬機的運行狀態