设为首页 收藏本站
查看: 1637|回复: 0

[经验分享] 虚拟机里的游戏机

[复制链接]

尚未签到

发表于 2015-4-13 10:30:31 | 显示全部楼层 |阅读模式
  最近正准备升级电脑,恰好看到关于xen的vga passthrough介绍,于是决定配一个来玩玩。
众所周知在虚拟机里玩3D游戏在以前是不太可能的,主要因为虚拟显卡没有3D加速。现在虽然各个虚拟机(vmware,virtualbox等)有基本的3D加速,但基本上只能运行有compositing的桌面而已,对付游戏则是无能为力了。而xen支持vga
passthrough,虚拟机看到的是真实的硬件。于是,在vm里玩大型3D游戏成为了可能。
值得一说的是这个技术还远为成熟,现在可选的硬件和软件都不是很多。所以购买硬件前要调研清楚。关键是cpu、主板和显卡。本人用的是i7
2600(注意没有k)+Asrock exetreme4 gen3(Asrock exetreme4也可以)+Radeon HD
6850。xenwiki上有关于显卡的粗略介绍。其实最说不清的是主板,intel把这个功能叫vt-d,amd叫它做iommu,相对来说amd的主板支持这一功能的要多一些。
然后是软件,linux下有xen。kvm也有初步支持,但整体上落后至少一年。windows下有vmware ESXi。本人目前用的是debian sid 64bit, kernel 3.2 + xen 4.1.2。用amd/ati
显卡的话配置比较简单,基本上就是安装系统,安装xen...(下文中粗体为命令)。以下内容为配置。
都装好后,lspci,找到显卡的id。比如我运行lspci后的输出:
...
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series
Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset
Family SMBus Controller (rev 05)
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee
ATI Barts PRO [ATI Radeon HD 6800 Series]
01:00.1 Audio device: Advanced Micro Devices [AMD] nee ATI Barts
HDMI Audio [Radeon HD 6800
Series]
03:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9120
SATA 6Gb/s Controller (rev
12)
...
可以看到,01:00.0和01:00.1就是我的显卡。我们要让主机把设备空出来,这个可以通过pcistub或pciback驱动实现。debian
好像没有把pcistub编译进kernel,所以不能在grub里设置把该设备“藏”起来。其实,如果想在linux下用独显,也不能在启动时就把显卡藏起来。本人在linux下只用集显输出,这样也省掉了显卡切换的麻烦。
我们用pciback。网上找到一个好用的脚本,保存为/sbin/pciback-bind下
$cat
/sbin/pciback-bind



1 #!/bin/bash
2
3 if [ $# -eq 0 ]; then
4         echo "Require PCI devices in format: ::."
5         echo "Eg: $(basename $0) 0000:00:1b.0"
6         exit 1
7 fi
8
9 [ -z "`lsmod | grep pciback`" ] && sudo /sbin/modprobe xen-pciback
10
11 for pcidev in $@; do
12         if [ -h /sys/bus/pci/devices/"$pcidev"/driver ]; then
13                 echo "Unbinding $pcidev from" $(basename $(readlink /sys/bus/pci/devices/"$pcidev"/driver))
14                 echo -n "$pcidev" > /sys/bus/pci/devices/"$pcidev"/driver/unbind
15         fi
16         echo "Binding $pcidev to pciback"
17         echo -n "$pcidev" > /sys/bus/pci/drivers/pciback/new_slot
18         echo -n "$pcidev" > /sys/bus/pci/drivers/pciback/bind
19 done
  
只要/sbin/pciback-bind 0000:01:00.0 0000:01:00.1
就可以把显卡驱动换成xen-pciback。这时如果运行xm pci-list-assignable,输出应该是
0000:01:00.0

0000:01:00.1
关键步骤已经完成,剩下的就和其他虚拟机创建差不多了。以win7为例,创建一个叫win7cn.cfg的配置文件。内容如下:




kernel = "hvmloader"
builder='hvm'
memory = 3584
name = "win7cn"
vcpus=4
cpus="4-7"  #cpu pinning,以后会提到
# I have 8 threads, 4 was a good number for me.
pae=1
acpi=1
apic=1
#关于网络配置以后会细述
vif = [ 'bridge=xenbr0, mac=00:aa:0a:14:11:02, ip=192.168.1.123, type=paravirtualised' ]
#虚拟磁盘,我用的是lvm分区。传说性能最好,以后会提及
disk = [ 'phy:/dev/green/hvm,hda,w' , 'file:/mnt/games/win/game.iso,hdc:cdrom,r' ]
#device_model = 'qemu-dm'
boot="dc"
sdl=0
opengl=1
vnc=1
vnclisten="0.0.0.0"
vncconsole=0
vncpasswd=''
stdvga=1
#nographic=1 #!!! only uncomment this if you are using win8 or are trying to get a nvidia card to work
serial='pty'
tsc_mode=0
#soundhw='all'
usb=1
usbdevice='mouse'
xen_platform_pci=1
gfx_passthru=0
# Leaving this as 0 is how it works for me with Radeon HD cards
# You can change this later for iGPUs or nVdia if needed.# Try it with 0 first
pci=['01:00.0', '01:00.1' ]
# These values are the ones you found out by doing the lspci command earlier
  
里面有些设置以后有空再详细写写。这时我们只要xm create
win7cn.cfg就可以创建虚拟机了。但这时的默认输出仍是虚拟显卡,所以要先用vncviewer登录win7桌面,装好amd的显卡驱动,重启。大功告成。
用nvidia显卡的朋友参考下面链接
http://www.davidgis.fr/blog/index.php?2011/12/07/860-xen-42unstable-patches-for-vga-pass-through
下面链接或许有用
http://wiki.xensource.com/xenwiki/XenPCIpassthrough
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56589-1-1.html 上篇帖子: Xen 4.0新特性介绍 下篇帖子: XEN笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表