ESXI部署Batocera游戏虚拟机,无线串流电视打造家庭游戏中心
Batocera介绍
Batocera 是基于 Linux 的操作系统,专为复古游戏设计,支持超过 220 个系统和模拟器,比如PS2、PS3、PSP等游戏,硬件性能够好甚至包括steam和switch游戏都可以模拟运行。
在中低端设备上运行更高效,因为 Linux 系统比 Windows 占用更少的资源。提供丰富的游戏库,支持上万款游戏,并且可以作为影音游戏主机系统使用。
起因
去年给家里的nas做了个小升级,把i3 6100换成了知名洋垃圾e2124G,从黑裙改成了用esxi6.7系统,用主板魔改bios驱动以后这个核显p630就一直闲置着了。
黑裙是sa6400,可以用核显生成照片缩略图。emby又一直是用客户端解码,个人觉得服务器解码没什么用,不管是电视还是手机都是客户端解码,只有电脑会用到服务端,但是电脑看影片哪有大屏电视来的舒服,就干脆没直通给群晖,电视都是kodi或者emby、Vidhub客户端解码了。
其他地方也不太能用到核显,想着干脆部署一个batocera玩玩复古游戏好了,用sunshine直接内网串流到电视上,再用moonlight连接蓝牙手柄岂不是美滋滋,平时虚拟机就关机,要用的时候再开也不费电,显卡直接直通就好了。
游戏rom和bios直接挂载虚拟机群晖的smb磁盘,可以减少占用esxi的空间。
之前已经部署过一次,但是后面又忘记怎么弄了,干脆写个文章做备忘录。
工具准备:
1、【显卡欺骗器】:这个是重中之重,最好是买一个支持hdmi 1080p 60hz支持hdr的版本,某宝一般三四块钱一个,最好买金属壳不带灯的,散热好一点,如果hdmi有其他用处可以买一个hdmi锁屏宝,双通的不占hdmi位。我之前是用的一个采集卡连接的one-kvm,因为是ms2109的2.0方案,帧率锁30导致游戏帧率一直上不去,排除了好几天原因才发现问题。

2、【固件包】:推荐用最新的官方固件包batocera.linux,各种模拟器都是最新的,尤其是pcsx2,V42版本更新后把2.2.0的pcsx2更新到最新的2.4.0了。如果嫌懒的话也可以用懒人包,但是那样就比较吃esxi的硬盘空间了。我用的是官方的【Batocera 42 - 2025/10/06】作演示。

3、【StarWind V2V Converter】:用来给esxi写入固件的,这个直接网上搜一下就有
4、【SSH工具】:这个因人而异,我一般是用FinalShell和Putty,这个自己上网搜一下吧,我就不给链接了,演示用的是Putty
第一步:创建虚拟机

我是esxi6.7最多支持到6.7U2虚拟机,操作系统选Linux,系统版本选最高的【其他4.x或更高版本的Linux(64位)】

选一个盘,我只有一个就默认就好了

CPU给4核,模拟器比较吃资源,最好是拉满。内存我有不少,给到8g,各位自己看给多少,最好不低于4G,必须勾选【预留所有客户机内存(全部锁定)】

【SCSI 控制器 0】【USB 控制器 1】【CD/DVD 驱动器 1】都用不上全部删掉,只保留下图部分的就好了。

切换选项卡到【虚拟机选项】-【引导选项】,把(是否为此虚拟机启用UEFI安全引导)的勾选去掉。

点下一页然后完成,虚拟机就准备好了。

第二步:用【StarWind V2V Converter】上传Batocera镜像
下载好的batocera压缩包解压出img镜像文件

打开StarWind V2V Converter,勾选Local file,点next下一步

选择解压好的img镜像文件,然后点击next

选择如图第二项下一步

填写esxi的内网ip地址,用户名和密码,

选择之前创建好的虚拟机点击convert进入下一步。

选默认的growable image就行了

确认信息没问题点转换

等镜像上传完毕会自动弹出一个v2v的网页,这段时间可以站起来溜达溜达

第三步:核显直通并屏蔽虚拟显卡
batocera是游戏系统,比较吃显卡性能,所以必须直通显卡,不然顶多玩一下小的模拟游戏就差不多了。
我这边示范是用UHD P630的因特尔核显直通,其他的也大差不差,理论上都是一样的。
打开ESXI的虚拟机页面,点击编辑,切换到【虚拟机选项】-【高级】-【编辑配置】

修改svga.present这一项的值改成FALSE,这一步的目的是为了禁用虚拟显卡,否则batocera开机后会默认把虚拟显卡作为默认显卡,然后点击确认保存。

然后再点击【编辑】-【添加其他设备】-【PCI设备】-【P630】点击保存,这样显卡就直通好了。


给硬盘多分配一点空间,缓存和存档主题等都要占用空间,我因为是演示用就只加了5G空间,建议最好不低于20G

点击运行虚拟机开启batocera,因为现在虚拟显卡被禁用了,所以这边看不到画面是正常的,现在要去路由器后台找到batocera的内网ip地址,就可以用SSH工具连接了


打开Putty,输入batocera的ip地址打开,用户名:root,密码:linux。输入密码的时候不显示字符,直接回车就行。


第四步:挂载smb磁盘,载入roms和BIOS
在putty中输入,这个是赋予boot文件夹读写权限
mount -o remount,rw /boot
输入如下命令修改boot文件挂载smb文件夹
nano /boot/batocera-boot.conf

修改sharedevice=INTERNAL为sharedevice=NETWORK,回车按如下格式粘贴smb的盘符信息
sharenetwork_smb1=ROMS@192.168.31.8:Download/batocera/roms:username=用户名,password=密码
sharenetwork_smb2=BIOS@192.168.31.8:Download/batocera/bios:username=用户名,password=密码
其实也可以用share文件夹挂载所有文件,包括主题存档之类的都外置,但是我测试下来发现这样会因为smb的权限问题导致sunshine安装失败,所以就只挂载roms和bios,有知道怎么挂载share的同学可以留言说一下。

向下移动光标,在amdgpu=true前面加一个#符号注释掉这一行,不然不能驱动核显。如果是AMD显卡就不用注释。英伟达显卡的话就把nvidia-driver=true前面的#去掉就行了。

确认后按CTRL+X,按Y,再回车保存退出编辑。
保存后用
batocera-save-overlay
写入修改

然后重启虚拟机,用df -h查看smb是否挂载成功了,返回如图提示就是成功了。

第五步:安装sunshine串流电视,创建服务脚本实现开机自动串流
把HDMI欺骗器插到hdmi接口上,我买的锁屏宝还没到就不上图了。运行如下命令
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
安装flatpak版本的sunshine
flatpak install flathub dev.lizardbyte.app.Sunshine

按Y回车确定两次就开始在线安装了,这个安装速度看网络环境和运气,我上一次安装很快,这次不知道怎么就特别慢。实在觉得慢的话可以按CTRL+C取消然后重新安装,速度有可能会快一点。


测试sunshine看是否安装成功
flatpak run dev.lizardbyte.app.Sunshine
返回这个就是开启了,可以在浏览器访问sunshine后台用电脑浏览器访问https://(batocera内网地址):47990访问batocera的sunshine页面,必须是https,不然进不去的。设置好账号和密码。
点高级,继续访问
用moonlight输入batocera的IP地址连接好,然后就可以开始串流了

把手柄连接到电脑,先长按一个手柄按键分配按键。


按start打开设置界面,设置中文


看系统信息页面,核显驱动成功,F1文件管理器能看到挂载的smb磁盘文件也都读取到。


然后是创建服务脚本,按CTRL+c退出sunshine,创建services目录
mkdir -p /userdata/system/services
创建并编辑Sunshine服务脚本
nano /userdata/system/services/Sunshine
粘贴如下命令行,这个脚本会处理服务的启动(start)和停止(stop)
#!/bin/bash
case "$1" in
start)
# 启动 Sunshine 并后台运行,保存进程ID
flatpak run dev.lizardbyte.app.Sunshine &
echo "$!" > /tmp/sunshine.pid
;;
stop)
# 停止 Sunshine
if [ -f /tmp/sunshine.pid ]; then
kill -TERM $(cat /tmp/sunshine.pid)
rm -f /tmp/sunshine.pid
fi
;;
esac

按CTRL+C,Y,回车保存,用下面的命令给服务脚本赋权
chmod +x /userdata/system/services/Sunshine
开启sunshine开机自启动服务
batocera-services enable Sunshine
测试下服务运行,输出结果跟上面的打开sunshine一致就是成功了
batocera-services start Sunshine

moonlight串流进batocera看SUNSHINE服务已经开启,重启测试是否正常自启动

安装串流完成,另外还有一个重点,如果电视串流很卡的话记得进moonlight里面把视频解码器改成h.264或者HEVC,电视的解码能力都比较一般,AV1基本都解码不了。
接下来就是直接下载bios和roms,这个教程有很多就不一发出来了。


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
