2013年11月29日 星期五

用 VRDP 連線 VirtualBox 虛擬機(四):多螢幕

之前解決「放大 VirtualBox 『多螢幕』虛擬機的顯示視窗時,會當機並關閉」的問題後,又在想用 VRDP (即 rdesktop-vrdp, VirtualBox 改過的 rdesktop)是否也能連線遠端一個開啟多螢幕的『虛擬機』?經過一翻研究、測試,終於看到這個畫面。
上圖中遠端的「虛擬機」已設定為多螢幕,而本地電腦的螢幕為一大一小,所以將遠端「虛擬機」的螢幕也調整成一大一小,右上角黑色區域是畫面快照的結果。以下就是整個設定、連線及調整過程做個說明。(以雙螢幕為例,多螢幕以此類推)

一、設定「虛擬機」為多螢幕

首先要將「虛擬機」設為多螢幕,啟動『Oracle VM VirtualBox 管理員』,選定欲設定的「虛擬機」後,再從《設定值》→《顯示》→《視訊》→《監視器數量》設為 2
注意:《監視器數量》設為 2 後,《視訊記憶體》需求量需提高,要將記憶體數量調高至『綠色』區域。上圖是將之調整為 16 MB。

  接著,再設定遠端連線功能,並允許遠端的多重連線,詳細操作如下:
  • 《設定值》→《顯示》→《遠端顯示》→《啟用伺服器》設為啟用(☐ → ☑)
  • 《設定值》→《顯示》→《遠端顯示》→《延伸多重連線》設為啟用(☐ → ☑)
其中,《延伸功能》之這次新增加的設定,其餘說明請參考 "解決「不能以 rdesktop 連接遠端的 VirtualBox 虛擬機」的問題",不再重覆。

二、用 rdesktop-vrdp 連接遠端的「虛擬機」

用 rdesktop-vrdp 連接遠端「虛擬機」一次只能得到一個螢幕的桌面,所以要連線兩次才能得到雙螢幕(註:多螢幕以此類推)。為能在連線過程中辨認所欲連線的螢幕,在命令中要增加一個指定『螢幕編號』的參數,
[SiB@Celeron-D ~]$ rdesktop-vrdp 192.168.10.17:3389 -d Primary@1
[SiB@Celeron-D ~]$ rdesktop-vrdp 192.168.10.17:3389 -d Second@2
其中,『 -d 』是指定所連線的『螢幕編號』的參數,其後的『 @ 』後之數字即為所欲連接的『螢幕編號』,而前面的名稱在這裏是沒有作用,空白也無妨。

三、調整遠端「虛擬機」的螢幕大小、位置

連線後螢幕大小可能與『本地主機』的螢幕不符,要從「虛擬機」所在的「主機電腦」調整「虛擬機」的螢幕大小。由 VBoxManage 命令調整螢幕的完整命令語法如下:
VBoxManage controlvm VM_test
setvideomodehint <xres> <yres> <bpp>
[[<display>] [<enabled:yes|no> | [<xorigin> <yorigin>]]] |
其中
命令、參數說 明
VBoxManage
controlvm命令的分類名
VM_test指定「虛擬機」的『名稱』或『通用唯一識別碼 (UUID)』,通常是指定名稱比較簡單。
setvideomodehint設定『顯示模式』的參數
<xres>螢幕寬度,單位為『像素』或『點』
<yres>螢幕高度,單位為『像素』或『點』
<bpp>用以表示每點色彩的位元數,通常為 16,可視網路流量增減為 8、24 或 32。
<display>螢幕編號,『主螢幕』為 0,『輔助螢幕』由 1 開始
<enabled:yes|no>螢幕是否啟用,yes 啟用,no 關閉
<xorigin>『輔助螢幕』原點相對於『主螢幕』原點的水平位移,單位為『像素』
<yorigin>『輔助螢幕』原點相對於『主螢幕』原點的垂直位移,單位為『像素』

:螢幕原點是指螢幕的像素座標為 (0,0) 之點,VRDP 是定在左上角。

1. 螢幕大小相同

雙螢幕的大小相同時,只要設定兩個螢幕的原點位置即可
[SiB@Core-i7 ~]$ VBoxManage controlvm VM_test setvideomodehint 1280 948 16 0
[SiB@Core-i7 ~]$ VBoxManage controlvm VM_test setvideomodehint 1280 978 16 1 yes 1280 0
第一個命令與單螢幕時的調整命令相同,上例中的螢幕大小『1280 948』是為保留視窗邊框而將螢幕略為縮小,『 0 』是指定調整『主螢幕』。
  第二個命令是調整『輔助螢幕』之用(即上例中的『 1 』),『 yes 』是指『輔助螢幕』為開啟狀態(或為可視狀態),『 1280 0 』是設定『輔助螢幕』的原點位置相對於『主螢幕』的位移量。
  因為螢幕的大小相同,位移量設定時只要設『水平方向』的位移量即可,『垂直方向』的位移量保持與『主螢幕』相同。

2. 螢幕大小不同

雙螢幕的大小不相同時,兩個螢幕的『水平方向』和『垂直方向』的位移量都要調整,使用操作時才會方便。
[SiB@Core-i7 ~]$ VBoxManage controlvm VM_test setvideomodehint 1280 948 16 0
[SiB@Core-i7 ~]$ VBoxManage controlvm VM_test setvideomodehint 1024 738 16 1 yes 1280 256
第一個命令與上個例子相同,不再說。第二個命令最後的『 1280 256』是將兩個螢幕的下緣對齊。

四、使用經驗分享

  • 若「本地主機」的螢幕高低不同(如:不同型號的螢幕),『垂直方向』的位移量調整,可以順便考慮這項差異調整試用看看。

已測試版本:

  • 遠端主機:Fedora 19  +  VirtualBox 4.3.2  +  Extension Pack 
  • 虛  擬  機:Fedora 20 beta  +  VirtualBox Guest Additions 4.3.2
  • 本地電腦:Fedora 19  +  VirtualBox 4.3.2

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)