在xorg.conf.new的Section "Monitor"中加入
HorizSync 31-80
Xorg -config xorg.conf.new -retro測試就變成了1600x1200。
cp xorg.conf.new /etc/X11/xorg.conf 然后startxfce4,分辨率里就有從640x400,640x480開始的若干選項,不過都是4:3,除了640x400。在host(win8.1)中嘗試執行
VBoxManage setextradata "freebsd10.1" "CustomVideoMode1" 1280x800x16
重啟guest虛擬機,修改
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1280x800"
EndSubSection
沒有什么效果,Xorg -config -retro的結果能辨認1280x1024不能辨認1280x800,估計是受限于vidcontrol -i mode的結果,之前就仔細看過,沒有1280x800,更別說我希望的1024x640了。
按照Xorg的文檔http://www.x.org/releases/X11R7.7/doc/man/man5/xorg.conf.5.xhtml,嘗試添加
Modes失敗,因為沒有Clocks值,還有hsyncstart等,沒法建立ModeLine。
嘗試到ports中安裝virtualbox-ose-additions失敗,說需要kernal的源碼。
pkg search virtualbox,找到pkg的正確名字,pkg install安裝,期間被是否要升級pkg,當然yes。
安裝成功,在/etc/rc.conf 中加入
vboxguest_enable="YES"
vboxservice_enable="YES"
重啟,重新嘗試Xorg -configure生成新的xorg.conf.new測試,顯示的花屏是800x600的,有點疑惑,怎么默認的尺寸反而變小了。立即cp到/etc/X11/xorg.conf,然后startxfce4,在設置display里,屏幕的名字變成了vbox,之前是什么默認名字具體不記得了。重點是,隨著在host中改變guest的窗口大小,resolution立馬自動調整成guest的窗口大小。vbox的addition起作用了。查看xorg.conf.new發現多了monitor1和screen1,之前是monitor0和screen0。
接下來我們就能從/var/log/Xorg.0.log里讀取信息了,加裝了virtualbox additions識別出的Clock是62.2MHz(1280x800),在log中有很多ModeLine可以分析。Max PixClock(DotClock)是1005MHz。
在xorg.conf.new中,在Monitor0(從Xorg.0.log還能讀出依賴關系,對應vbox的是screen0,不是screen1)下加入
Modeline "1024x640" 62.2 1024 1026 1028 1030 640 642 644 646
在Screen0中的24位的display中加入Modes "1024x640",這樣開機第一次從console進入xdm時就是1024x640,而且在xfce的display設置中也出現1024x640這個選項了。測試完別忘了cp xorg.conf.new /etc/X11/xorg.conf。
在host中指定nvidia的顯卡,而不是集成的intel顯卡來運行vbox,重啟guest的freebsd,再運行Xorg -configure來查看device是否有變化,結果顯示沒有變化。
還是很在意vboxmanage的行為,vidcontrol -i mode中能發現一行1280x800x16的模式,在最后,懷疑是vboxmanage的行為,而非guest additions的。所以,嘗試先將/etc/rc.conf中改為
vboxguest_enable="NO"
vboxservice_enable="NO"
執行
VBoxManage setextradata "freebsd10.1" "CustomVideoMode1" "1280x700x16"
徹底關閉vbox,重啟虛擬機,結果vidcontrol -i mode查看發現原來的1280x800x16這個選項不見了,有了1280x700x16這個選項。說明vboxmanage起作用了。
登入root進入xfce的桌面,查看display setting,發現沒啟動guest additions,多了超過host窗口大小的模式,像之前一樣,1600x1200什么的。1024x640這個模式是手動加入到xorg.conf中的,所以還能被選。隨著鼠標改變host中vbox窗口的大小,guest虛擬機的桌面不再隨著改變了。
最后,不想借用vboxmanage,所以重新把這個CustomVideoMode1值設空,執行
VBoxManage setextradata "freebsd10.1" "CustomVideoMode1"。
用getextradata查看發現為no value set。
最后,將/etc/rc.conf中的guest additions改回為“YES”。