Linux大型游戏方案&&显卡直通

在网络上能够搜索到的资料,对于Linux大型3D游戏的建议,多数都是显卡直通方案,即在Linux中安装Windows虚拟机,通过一系列操作设置把显卡单独给虚拟机使用。

显卡直通的Windows虚拟机运行时,显卡性能损失很少,基本可以忽略。所以,显卡直通方案是可行的,但仅仅是技术上可行,应用上存在一些其它问题。

下面我们来论述一下,大型游戏方案,显卡直通的优劣,以及还有哪些其它方案可用。

论述之前,我们先把几种可能的方案列举如下:

  1. 双系统并存 (推荐)。

  2. 双显卡直通 (不推荐)。

  3. 单显卡直通 (不推荐)。

  4. 另外搞一台专门的Windows电脑 (任性方案)。

  5. Win To Go (不推荐)。

  6. Linux系统中安装Steam (不推荐)。

先说结论:

如果是玩游戏,比如Steam游戏,建议安装Linux+Windows双系统,简单省事没隐患。在Linux系统中直接安装Steam玩游戏的问题和隐患,请参考后面说明。

一、显卡直通

我们先说说显卡直通。

显卡直通在技术实现上有两种方式,一是单显卡直通,二是双显卡直通。

技术实现上相对容易一点的,是双显卡直通,即电脑上有两个显卡,其中一个直通给Windows虚拟机使用,另一个主机使用。这种情况下,Windows虚拟机启动后,Linux主机仍然可以操作和使用。这种方式需要电脑上有两个显卡,进一步可能还需要两套键盘鼠标,相对费钱,但相对单显卡直通在技术实现上会比较省事一些。

其次是单显卡直通,即电脑上只有一个显卡,把这个显卡直通给Windows虚拟机。这个方案中,Windows虚拟机启动后,Linux主机无法继续操作,因为没有显卡。直到Windows虚拟机关闭后,Linux主机才可以继续使用;不需要重启Linux主机。这种方式只需要电脑上有一个显卡,相对省钱。

无论双显卡直通还是单显卡直通,对于一般水平的Linux用户,第一次配置时,一次就成功的概率不高,甚至可能需要花上几天的业余时间才行。而熟练了以后,可能30分钟时间就完成了。主要问题在于,显卡直通涉及到一些平时办公家用很少用到的Linux操作,而用户在没有完全理解这些操作原理的情况下,只能照抄教程;而教程适用的环境与用户自己的系统环境有可能会存在差异,这些差异导致用户初次配置显卡直通时需要反复多次尝试。

研究下那些显卡直通的教程就会发现,显卡直通所涉及的操作其实不是特别复杂,技术相对比较简单,但真正理解的话,就需要一些知识背景,否则就只能照抄,很难达到自行维护Linux的水平。

理论上,对于开发者来说,完全可以把显卡直通这个功能做成一个在linux系统中随时可以一键安装或删除的功能,结果就像apt install命令一样,安装一个显卡直通包就行了。之所以还没有实现,驿窗推测大概率是因为,显卡直通应用还是属于小众,有点发烧的性质,缺少特别具体或者不可或缺的应用场景,所以没人开发。好消息是,已经有人注意到这个问题,并开始计划处理,但什么时候能够实现则很难确定。

二、非显卡直通

接下来我们看一下显卡直通以外的方案,主要有两个,一个是双系统,包括Win To Go;另一个是直接在Linux系统中安装steam。

2.1 双系统及Win To Go

双系统方案相对很容易理解,就是在电脑上同时安装Linux和Windows两个系统,在电脑启动时选择进入哪一个系统。

Win To Go方案在本质上与双系统类同:插入U盘后重启电脑,从Linux系统切换到U盘Windows系统。

双系统与Win To Go的区别在于,双系统方案是引导电脑里安装的Windows系统,Win To Go方案是引导U盘里安装的Windows系统。

二者的共同点是,Windows运行期间,Linux系统必须为关机状态,无法使用。

Win To Go方案需要把Windows系统装到移动U盘或者移动硬盘中,使用时插入电脑的USB口,然后重启电脑,在bios中选择从USB启动,就会启动到U盘中的Windows系统。

早期的时候,受USB传输速度限制,Win To Go方案很难应用,因为USB传输速度太慢,导致系统运行卡顿严重。现在电脑USB口传输速度已经达到10Gbps(USB3.1Gen2和USB3.2Gen2),U盘本身的读写速度也能超过400MB/秒。这就让电脑从U盘运行Windows系统有了实际应用的可能性。注意只是可能性,结果不一定可行。

并且,Win To Go制作的U盘Windows系统,除了可以当作windows系统来使用,还可以当作普通的移动U盘使用,完全不影响(使用rufus工具即可实现)。对于那些必须要有一个移动U盘或者移动硬盘的用户来说,可以考虑体验一下,至少能给移动存储设备增加一个启动系统的功能,只不过需要占用一些存储空间。Win To Go的具体制作方法请参考后续说明。

Win To Go方式比较适合那些偶尔使用Windows硬件环境的用户。这里的硬件环境,是指需要Windows独立显卡环境。一般的使用,尤其不需要独立显卡的使用,可以直接在Linux系统中安装Windows虚拟机,不需要Win To Go那么麻烦,也不需要关闭Linux系统,很方便。所以,Win To Go的使用频率应该比较低才对。

如果要频繁使用带独立显卡的Windows硬件环境,那么双系统才是更好的选择。Win To Go方案虽然可以运行,但实际使用中仍然存在一些麻烦的小问题,体验不好。后面有Win To Go方案实际测试说明。

Win To Go启动U盘创建提示:

制作Win To Go的win10移动硬盘或U盘不需要额外的Windows电脑,只需要在Linux主机中安装一个Win10的虚拟机,把U盘插到主机上,然后在Win10虚拟机中即可制作Win To Go启动U盘。

接下来,我们说一下双系统(包括Win To Go)相比显卡直通,主要的优缺点。

最主要的一点是,我们前面提到的,显卡直通的技术不太容易被用户吃透,这导致用户尤其是初级用户需要花费大量时间和精力去研究显卡直通技术并实现。并且,在付出大量时间和精力之后,得到的也只是一个游戏方案,未来很少有机会把它应用到其它项目上,这个结果导致用户的投入有些得不偿失,驿窗不建议用户在这方面浪费时间和精力。

相对于显卡直通技术,双系统的实现非常容易:在电脑上安装双系统,想要切换系统,重启电脑就能实现。

如果是偶尔临时使用一下带独立显卡的Windows系统,那么可以考虑在U盘里装一个Win To Go,既能当系统使用,又能当移动U盘使用,还不占用系统的硬件资源,并且,Win To Go制作过程可以在debian中使用Windows虚拟机完成,基本不需要额外条件。(驿窗不推荐长期或频繁使用Win To Go)

总结起来就是,双系统方案在技术上比显卡直通容易很多,适合初级用户,也适合长期使用;Win To Go适合偶尔使用带独立显卡支持的windows系统

Linux系统中制作Win To Go启动U盘的方法如下:

  1. debian主机中用virt-manager安装win10虚拟机。

  2. 准备好rufus和win10.iso,放到win10虚拟机里。

  3. debian主机插上U盘(不挂载),在win10虚拟机界面点击菜单虚拟>重定向USB设备,勾选插入的U盘,再点击关闭

  4. 在win10虚拟机里,按常规方法用rufus制作启动U盘:

    4.1. win10虚拟机里启动rufus。
    4.2. 设备:选择插入的U盘。
    4.3. 引导类型选择:点击右侧的选择按钮来选择win10.iso。
    4.4. 镜像选项:选择Windows To Go
    4.5. 分区类型:选择GPT
    4.6. 目标系统类型:选择UEFI(非CSM)
    4.7. 文件系统:选择NTFS

其它选项默认就行,点击下方的开始按钮:

  • 版本选择:可以选择Windows10专业版,然后点击OK按钮。

  • 阻止Windows To Go访问内部磁盘:不勾选就可以访问主机上的系统,建议不勾选。

  • 创建一个使用此用户名的本地账号:不要勾选,等系统启动时再创建。

  • 剩下的两项保持默认即可。

  • 点击OK按钮。会显示警告:删除U盘上所有数据,点击确定按钮。

  • 等待完成,然后重启系统并进入bios设置从此U盘启动即可。

  • Windows To Go的第一次启动,因为需要对全新系统进行一些设置,所以可能会自动重启一到两次,并且进行一些提问和设置,过程与新买的笔记本电脑完全相同,请按提示操作即可。

  • 结束。

下面是Win To Go启动U盘制作过程的视频:

通过win10虚拟机制作win_to_go启动U盘

Windows To Go系统可以安装应用程序,比如输入法或者Steam游戏等。 选择一个靠谱的U盘,除了容量、质量和速度方面的考虑,还要耐高温,因为Windows To Go运行时,U盘的温度会比较高。所以,买U盘时选择知名大厂很重要。

Windows To Go实际测试:

读速400MB/s的U盘,工作温度范围为零下25℃到零上85℃,制作成Windows To Go后插到电脑的USB3.2Gen2口上引导Windows系统,安装Steam,运行csgo大概两个小时。系统操作比较卡,但进入游戏后游戏运行非常顺畅,没有一丝卡顿。U盘摸着感觉烫手。结论是只适合偶尔使用,仍然建议Linux+Windows双系统的方式。

测试环境:

  • 主机系统:debian12.1 & kde

  • 虚拟机工具:virt-manager4.1.0

  • 虚拟机系统:win10guest64位(20H2,19042.631)

  • Windows To Go制作工具:rufus4.2

  • Windows To Go用到的iso:win1022H2.iso

  • Windows To Go安装U盘:samsung USB3.1 128G

  • 主板:ASUS ROG STRIX B550A-GAMING(USB3.2Gen2)

  • CPU:AMD R7 5800X

  • 内存:KINSTON FURY DDR4-3200 16Gx2

  • 显卡:GIGABYTE NVIDIA RTX 3060 GAMING OC 12G

2.2 Linux系统中安装Steam

在Linux系统中可以直接安装Steam,然后通过Steam运行游戏,比如csgo2,驿窗的测试结果是,Debian12.4可以成功运行csgo2。

不过请注意,这种方法并不是绝对可行,原因如下:

  1. 很多游戏不支持Linux系统。

    Steam上的游戏,都会标注适用的操作系统,有的只支持Windows系统,有的可以支持Windows+macOS系统,有的可以支持Windows+Linux系统,只有少数可以同时支持Windows+macOS+Linux三个系统。

    这个差异,导致在Linux系统中安装Steam后,只能运行那些支持Linux系统的游戏,不能运行不支持Linux系统的游戏。

    比如,csgo可以在Linux中玩,但使命召唤在Linux中就玩不了,因为使命召唤不支持Linux,只支持Windows。

    这种情况导致,很多你感兴趣的游戏,在Linux上都无法尝试,而换成windows则完全没问题。

  2. 支持Linux的游戏,可能存在额外隐患甚至bug。

    多数支持Linux的游戏,通常原生的适配环境都是Windows系统,然后通过wine方式把游戏从Winodws系统移植到Linux系统。这个移植,由于一些原因,可能存在隐患或者bug,导致游戏运行不流畅或者有严重bug。即,游戏公司通常优先支持Winows,然后考虑是否支持macOS,再有资源的话,才会考虑是否支持Linux。移植需要成本,移植后维护更需要资源,但在Winows上则没有这些问题。

    这个问题的根源,主要还是因为Winodws系统的市场占有率太高了,而Linux系统的市场占有率太低,低到多数游戏厂商认为,没必要支持Linux系统。少部分支持Linux的,立场也可能会从坚定支持变成摇摆不定。

    以csgo为例,csgo第一代版本,在Linux中,偶尔会闪退,整体体验基本没有问题。但之后csgo升级为csgo2以后,Linux中虽然频繁升级,但运行时各种问题仍然层出不穷,最严重的时候,鼠标按键会间歇性失灵,无法射击。这种按键失灵的情况,刚开始升级到csgo2时并不存在,而是后续游戏多次升级后运行相对稳定后,再次升级才出现的。(驿窗推测,类似的情况,在游戏平台发展史上可能会持续很长时间。此推测仅限于猜测,未经第三方证实,请自行验证。)

    从厂商的角度,其实也可以理解,毕竟,Windows才是游戏运行的首选平台。

  3. 结论:当前Linux中安装Steam的方式,可以体验;综合考虑是不推荐,建议Linux+Windows双系统,用Windows系统来体验游戏:无后顾之忧啊。

最近一次更新:2024-02-04