SteamDeck双系统共享btrfs游戏分区
SteamDeck现在主流的双系统共享分区都采用的是NTFS分区,因为ntfs是windows自家格式,在win下体验肯定是最好的,并且stramOS本身也支持ntfs格式,所以用起来也没啥大问题。但是,如果你更希望使用Linux原生格式作为共享分区,不妨看看这篇教程
前期工作:
首先双系统安装以及调整分区这个步骤没啥区别,我就不重复了。参考 【爱折腾】SteamDeck完全折腾指南-D1-双系统挂载相同分区 - 哔哩哔哩 (bilibili.com) 就行。如果涉及到home分区的调整,不建议用 PE下的DiskGenius,因为极大可能出现 “inode bitmap 中有标记为已使用的未用inode” 这样的报错。
所以个人推荐使用 gparted 的liveCD进行调整分区(https://gparted.org/livecd.php),或者直接用SteamDeck的恢复镜像中的的KDE分区工具也行。
另外因为涉及到较多的都是命令操作,强烈建议开启ssh服务,并且设置自启动,方便直接使用ssh工具操作
开启完成后,deck在内网中的话,直接使用任意的ssh工具连接操作即可
一、安装brtfs支持:
二、分区格式化和挂载:
首先确认你已经调整分区完毕,给共享分区留下足够的空间,我们确定下dev编号
通过分区大小判断哪个是划分出的共享分区,以我这里为例,驱动器名字为
/dev/nvme0n1p9 ,大小1.4T
格式化分区为btrfs,会丢失所有数据,如果原先是ntfs格式想换过来的话,请提前备份数据
创建你要挂载的目的路径
编辑 /etc/fstab,实现开机自动挂载
最后手动挂载看看效果
到此,linux这边的处理就都完成了,往后就是添加游戏库什么的,和之前的教程没有区别
三、windows驱动支持:
在切换到windows前,在steamos中看一下用户的uid和gid
可以看到我们deck用户的uid gid都是1000
然后切换到windows系统,首先安装btrfs驱动
项目地址 https://sgithub.com/maharmstone/btrfs
下载最新1.8.2版本,然后解压,右键 btrfs.ini,安装即可。到这一步btrfs分区应该能正常读写了(如果不行就重启下)
四、修改windows用户gid、uid
我们在上一步已经能让win读写btrfs了,按理说已经任务已经完成了,但其实事情没有那么简单。Linux文件系统的特点就是文件具有读写权限信息以及所属用户用户组信息。用户和组就是通过uid,gid标识的。winbtrf默认给windows用户组的gid应该是100,用户的话据我测试默认是65535。
这就导致在Windows这边新创建的文件,到linux下查看都是 “查无此人”。总不能每次都跑一下chown -R吧?
所幸winbtrf这边也给出了解决方案,可以通过注册表指定用户和用户组的id。
首先查询本机用户名和对应的sid
我的用户名是honjow,所以 sid S-1-5-21-2259988827-1787315176-3402371529-1001
接下来打开注册表编辑器,路径
首先打开 GroupMappings ,其中应该会有一个DWORD项,名字S-1开头的,可以看到默认值是100,这就是默认用户组的gid,我们前面需要把他改成前面deck用户的1000。点击编辑,选十进制,改成1000即可。
和GroupMappings同级的还有个Mappings目录,这里决定了用户的uid,默认情况下可能是空的,我们如法炮制,添加一条DWORD项,名称改为前面查到的用户sid,数据则填写十进制1000。保存,需要重启生效
这样一来我们在btrfs分区新创建的文件就都是gid uid就都是1000了,和steamOS下deck用户的一致。避免出现权限问题。
实测操作完成之后,在win下进行新下载的游戏,回到steamos中查看都是deck用户所属。
在安装winbtrfs之后,在btrfs分区中的文件右键菜单,会多一项btrfs相关的选项卡,方便进行权限等操作和确认。