以下所有命令在輸入vboxmanager後都能看到,這裡只是列幾個用的多的。
顯示所有虛擬機:vboxmanage list vms
顯示所有正在運行的虛擬機:vboxmanage list runningvms
顯示虛擬機詳細信息:vboxmanage showvminfo winxp
修改虛擬機名稱:vboxmanage modifyvm winxp --name winxp_clone
修改虛擬機所占用的cpu內核數:vboxmanage modifyvm winxp --cpus 2
啟動虛擬機:vboxmanage startvm winxp --type headless
關閉虛擬機:vboxmanage controlvm winxp poweroff
注冊虛擬機(絕對路徑):vboxmanage registervm <filename>
修改端口映射規則:vboxmanage modifyvm winxp --natpf1 rule_ssh, tcp, , 8888, 10.0.2.15, 8888
將網絡連接修改成橋接:vboxmanage modifyvm winxp --nic1 bridged --bridgeadapter1 eth0
設置虛擬機vrde的ip地址:vboxmanage modifyvm winxp --vrdeport 3388
由於服務器需要斷電,有同事就把服務器關掉了,但是服務器上的虛擬機並沒有正常關閉,結果再開機的時候就顯示下面的錯誤:
- [root@localhost ~]# vboxmanage startvm winxp
- Waiting for VM "winxp" to power on...
- VBoxManage: error: The virtual machine 'winxp' has terminated unexpectedly during startup with exit code 0
- VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine, callee
用help命令查了一下,啟動的時候還有3個參數可以選用。
- VBoxManage startvm <uuid>|<name>...
- [--type gui|sdl|headless]
突然想起來,剛才用VNC連接就沒成功,可能和界面有關系。干脆用無界面的方式啟動,問題解決。
- [root@localhost ~]# vboxmanage startvm winxp --type headless
- Waiting for VM "winxp" to power on...
- VM "winxp" has been successfully started.
vboxmanage registervm [path]無法注冊,出現如下報錯:
- [root@localhost VirtualBox VMs]# vboxmanage registervm CentOS5.6_64\ Clone/
- VBoxManage: error: Runtime error opening '/root/.VirtualBox/centos5.6_64 Clone' for reading: -102 (File not found.).
- VBoxManage: error: /home/vbox/vbox-4.1.2/src/VBox/Main/src-server/MachineImpl.cpp[436] (nsresult Machine::init(VirtualBox*, const com::Utf8Str&, const com::Guid*))
- VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component VirtualBox, interface IVirtualBox, callee nsISupports
- Context: "OpenMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at line 90 of file VBoxManageMisc.cpp
在官方找到了答案,這裡path必須是絕對路徑!這個地方做的確認太不人性化了,具體見https://www.virtualbox.org/ticket/8468。
如果是在備份虛擬機時直接注冊,可以使用:
- vboxmanage clonevm winxp --name winxp_loadrunner --register
服務器上沒有安裝vnc,把clone的鏡像文件放到虛擬機中重啟以後突然發現無法連接上,因為和原來的虛擬機是使用同樣的ip。如果用的nat方式,還比較方便,開啟了dhcp肯定是可以的,利用port forward把另外一個主機的遠程連接端口映射出來也沒問題。但是如果是用bridge,那沒修改ip怎麼連接上呢?!
這裡就需要用到VRDE,它是在實體機上開的一個遠程桌面端口。這個和操作系統的遠程桌面不一樣,它是通過實體機來看虛擬機桌面,相當於直接在實體機上操作虛擬機,所以你能看到操作系統的開機畫面。理論上,這樣也可以在不用vnc連接實體機的情況下,安裝虛擬機操作系統。我現在都是用裝好的系統文件clone的,這個還沒試過,有試過的兄弟告訴我一下。
通過vboxmanage modifyvm winxp --vrdeport 3388命令就可以修改虛擬機的端口,連接的時候是使用RDP協議,在windows下直接用mstsc,linux下用rdesktop就可以。這個和你虛擬機安裝的操作系統無關。