在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”。