目前我的电脑使用的是Archlinux与win11双系统,但是如果每一个游戏都在两个系统中下载一遍的话,似乎有点太奢侈了。刚好我有多的硬盘,因此我想到了在win和linux之间共享硬盘的操作。使一个游戏得以在两个系统中同时使用。

理论可行,实践开始!

Win系统设置

  • 格式化需要共享的硬盘为NTFS文件系统。
  • 在Steam游戏库中选择要共享的硬盘作为游戏库。
    • 桌面模式设置位置:设置 -> 储存空间 -> 添加驱动器
    • 大屏幕模式设置位置:设置 -> 储存空间 -> 点击“+“号
  • 完成

Linux系统设置

在Linux中,我们需要完成几个重要操作。

  • 挂载硬盘
  • 配置游戏库
  • 配置强制使用兼容层

1.挂载硬盘

确认位置

使用fdisk工具确定硬盘在/dev/下的名称。 sudo fdisk -l

Disk /dev/nvme1n1:1.86 TiB,2048408248320 字节,4000797360 个扇区
磁盘型号:Colorful CN600 2TB DDR
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:647D1143-

设备            起点       末尾       扇区  大小 类型
/dev/nvme1n1p1    34      32767      32734   16M Microsoft 保留
/dev/nvme1n1p2 32768 4000794623 4000761856  1.9T Microsoft 基本数据

创建用于挂载的文件夹

mkdir ~/SteamShare

这样在用户目录下就可以看到用于挂载硬盘的文件夹了。使用pwd命令查看具体位置。

➜  ~ pwd
/home/yu/SteamShare

确认UUID

UUID全称:Universally Unique Identifier,即通用唯一识别码。

使用UUID挂载可以解决后续如更改盘符等操作后,挂载失败的问题。

这里使用blkid工具获得硬盘UUID

➜  ~ sudo blkid
/dev/nvme1n1p2: LABEL="Share" BLOCK_SIZE="512" UUID="948C9C238C9BFE44" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="e2471546-c4dc-47f0-a44a-ae8b9bb10521"
/dev/nvme1n1p1: PARTLABEL="Microsoft reserved partition" PARTUUID="b8353224-04af-499b-881d-0b51e5f8e40f"

可以得到我需要挂载的硬盘为/dev/nvme1n1p2,UUID为948C9C238C9BFE44

配置fstab自动挂载

配置/etc/fstab文件可以在系统启动时自动挂载硬盘到指定的位置。

但是建议不要随意更改这个文件中的配置,可能会直接BOOM。

使用sudo nano /etc/fstab命令编辑fstab文件。

在末尾加入

# /dev/nvme1n1p2 LABEL=Share
UUID={你硬盘的UUID}	{你的挂载点目录}	ntfs      	defaults,nofail,uid=1000,gid=1000,blksize=4096	0 0

使用sudo mount -a命令测试配置是否成功,如无报错即可放心使用。

2.配置游戏库

具体流程与Windows系统一致,不过多赘述。

3.配置强制使用兼容层

这一步是为了防止在Linux下下载的游戏无法在win中使用的。因为如果不配置这一步,部分支持Linux的游戏会下载二进制版本,而非windows所支持的exe格式。

具体的方法是在下载游戏之前进行配置

右击游戏 ➜ 属性 ➜ 兼容性 ➜ 强制使用特定 Steam Play 兼容性工具

常见问题

由于挂载权限问题导致无法运行游戏

之前尝试在Linux中运行共享硬盘中游戏时,出现不明原因的无法运行问题。后使用终端运行steam查看日志,发现问题所在:

wineserver: /Share/SteamLibrary/steamapps/compatdata/413150/pfx is not owned by you
wine: '/Share/SteamLibrary/steamapps/compatdata/413150/pfx' is not owned by you

打开文件夹检查权限,发现挂载后的用户与组为root:root

解决方法:

获取当前使用用户的UID与GID,修改fstab文件的挂载选项添加uid与gid。

UUID={你硬盘的UUID} {你的挂载点目录} ntfs defaults,nofail,uid={你的UID},gid={你的GID},blksize=4096 0 0

部分游戏无法使用兼容层运行

简单配置Steam即可

设置 ➜ 兼容性 ➜ 为所有其他产品启用 Steam Play

一个鸟人罢了