前言

我于去年八月份左右购入了一台 ROG Ally,其实我最初是想买 Steam Deck 的,但是它的低色域屏幕实在让我有点犹豫,而且当时市场上丐版的 Steam Deck 价格基本稳定在了 3K 出头,让我觉得有些不值,而 ROG Ally 虽然官方店还要抢购,但黄牛渠道现货价格已经回落到了原价。考虑到丐版 Steam Deck 到手后还要折腾换硬盘,而加一千多块买 ROG Ally,就可以得到更好的屏幕,更精致的外观,还有一步到位的 512G 存储,一番权衡后,我还是决定入手了 ROG Ally。

不过这一类 Win 掌机相比于 Steam Deck 最大的问题还是在于用的 Windows 系统,Windows 在小尺寸触屏设备上的体验实在是一言难尽,虽然华硕开发了专用的前端软件以尽可能优化体验,但有时还是免不了要在 Windows 桌面用手指戳来戳去。再加上微软试图在 Windows 的每一个角落都塞进去资讯热搜的行为让我十分反感,所以最终我还是决定给它装上 Linux。

得益于 asus-linux 这样的项目存在,很多华硕电脑的 Linux 支持都还不错,但是对于 ROG Ally 这样形态独特且比较新的设备,使其达到比较完美的 Linux 支持也是花了一段时间,我刚入手时,Ally 在运行 Linux 时还有很多问题,比如声音不正常,睡眠不可用,背键与陀螺仪不可用等等,但在几个月后的现在,在开源社区的努力下,Ally 的绝大部分功能在 Linux 下都已经可用且有很不错的体验。

这篇文章主要记录一下我在 ROG Ally 上安装 Linux 并逐渐完善达到比较舒服的使用体验的心得,其中部分内容应该也适用于其他型号的掌机,也可以作为一个参考。

项目简介

至于安装哪个系统,我主要尝试了三个项目,分别是 ChimeraOSNobara LinuxBazzite

ChimeraOS 是一个基于 Arch Linux 的,针对游戏掌机和 HTPC 适配的 Linux 项目,其内置了一些项目开发者自己编写的软件与系统修改以提升游戏体验,具体会在后面的内容介绍。它最初名为 GamerOS,后来改名为 ChimeraOS,来源于希腊神话中的喷火怪兽奇美拉,其项目的 logo 也是奇美拉的形象。需要注意的是不要将它与 Chimera Linux 搞混,二者没有任何关系。

Nobara Linux 项目的创建与主要维护者是 Thomas Crider,这个名字可能有些陌生,而他的另一个名字则更被人熟知一些,那就是 GloriousEggroll,他是著名的的第三方兼容层 Proton-GE 和 Wine-GE 的作者,其中的 -GE 就是指代的 GloriousEggroll。Nobara 的目的是在保证原汁原味的 Fedora Workstation 体验的前提下,提供很多提升日用与游戏体验的修复与优化。Nobara 这个奇怪的名字在搜索引擎里搜到的相关结果,除了 Nobara Linux,就只有《咒术回战》里的角色钉崎野蔷薇,这两者是否有什么关系,我不好说🤪。

Bazzite 是一个相对比较新的项目,去年八月才发布了第一个正式版,不过到现在已经比较稳定了,它是 Universal Blue 下的一个子项目,Unversal Blue,或者说叫 ublue-os,是一个基于 Fedora 的社区项目,目的是在 Fedora Silverblue 的基础上构建更加易用和稳定的 Linux 系统,而 Bazzite 在 Universal Blue 之上又添加了很多游戏向的优化和多款掌机的适配。Bazzite 本意是一种叫「钪绿柱石」的蓝绿色矿物,这个十分古怪的名字也和 Fedora Silverblue 有关,Fedora Silverblue 有几个其他桌面环境的变体都以矿物的名字来命名,比如 KDE 桌面的 Kinoite(一种蓝色硅酸铜矿石) 和 Budgie 桌面的 Onyx(缟玛瑙),虽然 Universal Blue 并不是 Fedora 官方维护的项目,但还是选了 Bazzite 这个矿物名字来命名。

系统安装与初体验

bios 设置

在安装 Linux 系统前,首先需要修改一些 bios 选项。对于 ROG Ally,在开机显示启动 logo 时按音量减按键便可进入 bios,在 bios 中也可以用手柄进行操作,按 Y 键便可显示高级选项。对于绝大部分 Linux 系统的安装,安全启动都是需要关掉的,不然就会无法启动,不过 Bazzite 其实是支持安全启动的,只是需要一些额外配置 ,如果想要双系统安装,除了安全启动外,可能还需要在 Windows 里面关掉 Bitlocker 加密,解密的过程可能还需要挺长时间,我个人是只装了单系统,就没折腾这些。另外比较建议关掉开机音效,不然进系统后声音可能会有问题。

系统安装

因为 ROG Ally 只有一个 Type-C 的数据接口,所以在系统安装时最好准备一个有多 USB 接口的拓展坞和键鼠,不然可能无法进行操作

首先是 ChimeraOS 的安装,在其官网的 Download 页面便可以下载到安装镜像,将其烧录到 U 盘里或是使用 Ventoy 便可以启动进入,ChimeraOS 目前没有图形化的安装界面,但是目前的命令行安装界面已经足够傻瓜,进入安装器后,按照提示连接网络,选择确认格式化磁盘,便开始安装了,ChimeraOS 的安装器是在线安装的,也就是说需要从网络下载完整的系统镜像后才能安装,所以需要有比较好的网络环境。不过 ChimeraOS 也有本地安装的方法,需要事先准备好自行构建的或从 Release 界面 下载到的完整镜像,另外多准备一个 U 盘格式化为 ext4 并将卷标设置为 FRZR_UPDATE,将系统镜像复制进去,在进入蓝色安装界面后插入另一个 U 盘,安装器就会自动识别到本地镜像并开始安装了,不过我之前有发现使用这种方法本地安装的系统,会在第一次启动时一直卡在更新界面,不知道现在这个问题有没有解决。另外还有一个 B 站 UP 主单翼自己维护了一个 ChimeraOS 的 Fork,并提供了在 Windows 下本地安装的方法,感兴趣的可以参考下。

Nobara Linux 的安装也不复杂,其提供了四个不同桌面的版本,分别为 Offcial(修改美化后的 KDE 桌面)、Gnome、KDE 和 Steam Deck,对于掌机形态的设备,比较推荐安装 Steam Deck 版本,安装界面就是常见的 Calamares 安装程序,除了可能需要调整一下显示缩放比例之外,也没什么需要多讲的。

Bazzite 的安装就有些复杂了,最近的 2.3.0 版本更新中引入了新的本地安装镜像,并在官网上推出了 image picker,按照提示选择硬件为 ASUS Ally,桌面环境选择 KDE 或 Gnome(这里我选的是 KDE),之后便可以下载安装镜像了,不过这个安装镜像目前没有中文支持,安装界面倒是标准的红帽系安装器,安装后第一次开机会出现下面的界面,如果没有启用安全启动,则直接选择第一项回车即可。

安装完成进入系统后还会强制系统更新一次,因为不可变系统的特性,更新系统是需要下载几个 G 的完整镜像的,所以这个本地安装镜像存在的意义似乎只是让你多浪费几个 G 的网络流量。这里是 2.2.0 版本的在线安装镜像,目前应该仍然可用,在 grub 启动界面选择 AllyAlly-Gnome 即可,不过需要注意这个在线安装镜像不支持使用 Ventoy 启动,不然会无法进入安装界面。

因为有一些 Decky loader 插件在代码里把默认用户写死成了 「deck」,如果使用的是其他的用户名可能会导致插件无法工作,所以在安装时比较推荐将用户名设置为 「deck」,不过 ChimeraOS 默认的用户名和密码都是 「gamer」且无法在安装时更改,这点需要注意。

首次启动

由于都是采用的类 SteamOS 的游戏模式,所以三个系统在安装完成后都需要过一遍 Steam 游戏模式的初始设置。

不过 Bazzite 有些不同,首次启动时会进入桌面模式,并启动一个名为 Bazzite Portal 的程序进行初始设置。同时界面也会莫名变成竖屏,有些考验颈椎,需要在显示设置里面手动调整显示器方向。在 Bazzite Portal 里面可以进行一些有用的系统设置和安装常用软件(你也可以快速跳过这个程序,之后可以在桌面模式手动启动 Bazzite Portal 重新进行配置),连接网络并更新了 Steam 后,再次启动才会进入 Steam 游戏模式。

系统体验

虽说三个系统都是用的 Steam 的游戏模式,但在实际体验上还是有一些区别的。

首先 Nobara 对中文字体的配置好像有些问题,虽然在桌面模式可以正常显示中文,但在游戏模式中文都会变成方块,需要手动安装 noto-fonts-cjk 字体包之后才可以在游戏模式中正常显示中文,但是由于一些软件包存在冲突,会导致更新系统时自动卸载掉 noto-fonts-cjk,我对红帽系的包管理器不太熟悉,不是很确定有什么好的解决方案。

Bazzite 虽然可以在游戏模式正常显示中文,但是似乎字体匹配有些问题,有一部分文字会被显示成异体字,比如下图中的「置」和「与」,我尝试了修改 fontconfig,似乎也没什么作用,只能说又不是不能用吧😂。

还有 Steam 游戏模式本身是为 Steam Deck 开发的,所以在游戏模式会默认以 800p 或 720p 的分辨率启动游戏,如果想用更高的分辨率,就只能在每个游戏对应的属性里面手动调整分辨率。不过 ChimeraOS 对 Gamescope 做了一些修改,会让游戏默认以屏幕原生分辨率启动,方便很多,Bazzite 最近也合并了这个修改,只有 Nobara 目前还需要手动调整分辨率。

Steam 游戏模式自带的屏幕键盘是支持输入中文的,在键盘设置中添加中文键盘之后便可以使用了,不过 ChimeraOS 在游戏模式中即使添加了中文键盘也会无法输入中文,提示需要将系统加入 SteamOS 的预览通道,但问题是我的设备并不是 Steam Deck 而且系统也不是 SteamOS,是不存在预览通道这种东西的。而 Nobara 和 Bazzite 就可以正常输入中文,可能是他们所用的 Steam 客户端版本不同?

在桌面模式方面,ChimeraOS 是使用的完全未经魔改 Gnome 桌面,Bazzite 有 Gnome 和 KDE 两个版本,而 Nobara Steam Deck 版本使用的是 KDE 桌面。两种桌面环境各有优势与缺点,各个系统对桌面环境的配置也不太相同:

Nobara 和 Bazzite 的 KDE 版本桌面模式默认的缩放比例都比较高,有时整个屏幕都放不下一个窗口,可能需要手动调整一下显示分辨率。

Gnome 的屏幕键盘相对来说比较好用,在无障碍设置中打开屏幕键盘功能,在需要输入文字的场景会自动呼出,即便不会自动呼出,在任何界面从屏幕底部中间上划都可以手动呼出屏幕键盘,而 KDE 的屏幕键盘我从来没有一次能成功呼出过;

Nobara 和 Bazzite 的 KDE 版本都默认支持使用 Wallpaper Engine 设置壁纸,而 Gnome 目前不支持这个功能;

Nobara 和 Bazzite 的两个桌面版本都支持在桌面模式下使用 Steam Input,从而实现将摇杆和手柄按键映射为键鼠操作的功能,而 ChimeraOS 的桌面模式则需要借助 AntiMicroX 这样的软件才可以;

Bazzite 添加了 SteamOS 的 Nested Desktop 支持,可以将整个桌面作为一个窗口启动,将 Nested Desktop 添加入 Steam 游戏模式,就可以在游戏模式直接启动桌面了,也在某种意义上解决了 KDE 桌面屏幕键盘无法使用的问题,因为可以直接使用游戏模式的屏幕键盘,不过 Nested Desktop 还并不完美,比如不能在里面启动 Steam,毕竟已经有一个 Steam 在运行了,不能调整分辨率,不能修改语言,Bazzite 在最近的更新日志中提到会自动识别不同型号的掌机并调整 Nested Desktop 的显示分辨率,如果识别不到型号会以 1080p 显示,但是在我的 Ally 上,Nested Desktop 还是以 800p 显示的,不知道什么原因。

深入探索

特色功能

ChimeraOS 的特色功能比较丰富,首先是一个名为 Chimera 的管理界面,和掌机处在同一个局域网的情况下,在浏览器中输入 ip:8844 便可进入,同时会在掌机屏幕上全屏显示一个随机密码,将密码输入网页便可登陆,如果不想使用随机密码,也可以在设置中手动设置一个固定的密码。使用 Chimera 可以很方便的管理非 Steam 游戏,进行系统设置等等。

另外它还预装了一个开源的游戏模式界面 OpenGamepadUI,可以在 Steam 游戏模式和 OpenGamepadUI 之间切换,在终端输入 chimera-session steam-plus 便可切换到 OpenGamepadUI 的 overlay 模式,此时 OpenGamepadUI 是以 overlay 的形式显示在 Steam 游戏模式之上的,同时一些额外按键也由它负责处理,比如右边 Armory Crate 按键呼出 Steam 快捷菜单,左边 Control Center 按键呼出电源菜单,长按手柄右边的 Armory Crate 按键便可以呼出 overlay,可以进行一些系统配置,如显示色彩饱和度和 TDP 控制,不过我试过这些功能似乎在 ROG Ally 上还不太可用;另外在终端中输入 chimera-session opengamepadui 便可以切换到 OpenGamepadUI 的原生界面了,更多的功能和使用方法可以查阅 OpenGamepadUI 的 github 界面;不过 OpenGamepadUI 目前还处于比较早期的开发阶段,很多功能不太完善,并且存在一些问题,比如在有些时候一次按键会被识别到两次,如果遇到这个问题,可以尝试切换到原版的 Steam 游戏模式,只需在终端中输入 chimera-session steam 即可,此时机器的额外按键会由 HandyGCCS 处理。

另外 ChimeraOS 还支持自动安装第三方兼容层,在游戏属性中选择兼容层,你会发现列表中已经有了如 Proton-GE 和 boxtron 这样的兼容层,但实际上这些兼容层并没有被安装,只有使用这些兼容层启动游戏时才会自动下载并安装。

ChimeraOS 的更多的功能与配置可以参考官方的 wiki

Bazzite 的特性就有点像是个缝合怪了,关于完整的特性列表可以参考 Bazzite 的 README,比较值得一提的是 Bazzite Portal 和 ujust,Bazzite Portal 上文已经提到过,这里不再赘述,这里主要说下 ujust,它是是一个命令行的配置工具,源于上游的 ublue-os 项目,直接在终端中运行 ujust 命令便可以查看所有支持的选项,比如 ujust update 检查系统更新,ujust setup-waydroid 自动配置 Waydroid 安卓容器等等。

ChimeraOS 和 Bazzite 都属于是不可变操作系统,或者叫 「immutable Linux System」,这是一个近两年流行起来的概念,简单来说就是系统的核心部分是只读不可修改的,有点类似于大多数的安卓系统,可以在一定程度上提升系统的安全性与稳定性,但在使用方式上与传统 Linux 系统会有些不同,在后面的内容上会逐渐提到,另外由于不可变系统的特性,系统更新也需要下载完整的系统镜像,更新完成后也需要重启才会生效。不过二者对于不可变系统的实现方式上有所不同,Bazzite 使用的是和上游 Fedora Atomic Desktop 相同的 ostree 实现方式,在原理上有点类似于 Git,并且可以回滚系统;ChimeraOS 则使用的是他们自己开发的 frzr 来实现的,新的系统镜像会以只读 btrfs 子卷的形式挂载,其他的需要读写的目录是一个单独的可读写子卷,而 /etc目录则是以 overlayfs 的形式挂载的,新的系统镜像部署后,旧的镜像就会自动删除,目前不支持回滚

Nobara 的特性更多则是对系统底层的修改,比如内核补丁、常用软件和驱动程序等等,在官网首页可以看到详细的特性列表,这里就不再一一介绍了。

系统更新

ChimeraOS 和 Bazzite 都支持在 Steam 游戏模式下直接更新系统,就和 SteamOS 一样在系统设置里面检查更新就行了,不过需要注意的 Bazzite 更新时显示的进度条和时间并不准确,具体需要的时间取决于网络速度,可能会出现进度条卡在 99% 不动的情况,因为更新实际上并没有完成。

ChimeraOS 使用 frzr 部署系统,同时有三个更新通道,分别为 stable、testing 和 unstable,运行 sudo frzr-deploy chimeraos/chimeraos:<channel>,将其中的 <channel> 替换为前面提到的三个通道,便可以切换到不同的更新通道了,或者也可以部署特定的版本,比如运行 sudo frzr-deploy chimeraos/chimeraos:44-1 就可以安装 44-1 版本,或是 sudo frzr-deploy filename.img.tar.gz 就可以部署本地的系统镜像,若是你有自己的 fork 版本,也可以运行 sudo frzr-deploy username/chimeraos:<channel> 来安装自己的 fork 版本,其中 username/chimeraos 是你的用户名和项目名。

Bazzite 在更新时,不但会更新系统,还会一并更新 flatpak 软件包和 Distrobox 的容器,如果系统更新出现了问题,得益于 rpm-ostree 的特性,也可以很方便地回滚系统,系统默认会保留前几次更新的版本,运行 rpm-ostree rollback 便可以回滚到上一个版本,或者在启动时连接键盘按 ESC 键来显示 grub 界面,在 grub 界面选择特定的版本回滚,另外运行 sudo ostree admin pin 0 可以锁定当前版本防止被自动更新覆盖掉。另外 Bazzite 的更新相对比较频繁,即使是默认的 stable 通道,也有可能在一天内更新不止一次,所以我个人不是很推荐频繁更新,可以关注一下他们的更新通知,有比较大的更新时会在这里通知。

Nobara 不能直接在 Steam 游戏模式更新系统,要想更新系统,需要进入桌面模式,在桌面模式运行 Update System 来更新系统,若是比较习惯使用终端,则可以运行 nobara-sync 来更新系统,实质上以上二者都是下面命令的 alias: sudo dnf update rpmfusion-nonfree-release rpmfusion-free-release fedora-repos nobara-repos --refresh && sudo dnf distro-sync --refresh && sudo dnf update --refresh

软件包管理

三个系统都鼓励用户使用 flatpak 来安装软件包,使用桌面环境自带的软件商店安装软件默认就是使用的 flathub 的源,对于国内用户,可以考虑使用上海交通大学的镜像源 来加速 flathub。除了 Flathub 之外,各个系统都有自己独特的方式安装其他来源的软件包。

ChimeraOS 是基于 Arch Linux 的,所以理论上也可以安装 Arch Linux 官方源和 AUR 的软件包,但因为 ChimeraOS 是不可变系统,根目录默认是只读的,所以无法安装额外软件包。要想安装额外软件包,需要先解锁系统,运行 frzr-unlock 便可解除系统根目录的只读状态,这时便可以安装额外软件包了,ChimeraOS 还内置了 pikaur 来管理 AUR 软件包,不过需要注意,一旦解锁根目录,直到下次更新前都无法再次将根目录上锁,同时下一次更新之后,所有对根目录做的修改,包括安装的系统软件包都会恢复到默认状态。

Bazzite 安装软件包的方式可以说十分丰富,首先,对于需要全局安装的软件,可以运行 sudo rpm-ostree install packagename 来安装 Fedora 软件源内的软件包,这种方式安装的软件包是以 overlay 的方式叠加在只读系统之上的,安装之后需要重启才能生效,叠加的软件包越多,系统更新与启动的速度就越慢,所以要尽量避免用这种方式安装软件。除此之外,Bazzite 还预装了 distrobox,可以在容器内运行其他发行版并安装来自其他发行版的软件包;Gear Lever 来安装并管理 AppImage 软件包,等等。

Nobara 因为不是不可变系统,所以软件包管理要简单很多,它内置了一个名为 Nobara Package Manager 的软件,可以直接在软件中搜索并安装软件源中的软件包,当然你也可以用 dnf 在命令行安装软件。不过有一点我在前面提到的,它有些软件包的依赖关系有点迷,我手动安装的 noto-fonts-cjk 字体包,因为依赖问题,会在系统更新时被自动移除,可能是我不太会用红帽系的 dnf 包管理器吧。

额外配置

系统安装后,若想有更好的体验,还需进行一些额外配置。

Decky Loader

Decky Loader 是一个专门为 Steam Deck 开发的插件管理器,但也可以在其他类 SteamOS 的系统下使用,并且大部分插件也可以正常使用。安装也只需照着官方的安装教程安装即可。不过需要注意的是 ChimeraOS 的 Gnome 桌面与 KDE 桌面不同,下载的 .desktop 文件无法直接双击运行,所以最好还是用命令行方式安装:curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh

Bazzite 则在 Bazzite Portal 里集成了安装 Decky Loader 的功能,或者使用 ujust setup-decky 来在命令行中安装 Decky Loader

有些插件由于在代码中把用户名写死成了 deck,如果系统的用户名不是 deck,可能会导致插件无法正常工作,我目前发现 Animation Changer 这个插件存在这个问题,并且已经有人提了 pr,虽然作者已经合并了,但并没有发新版本,如果你目前的用户名不是 deck,且想要正常使用这个插件的话,就需要手动修改一下:

# 给插件目录写入权限
sudo chmod -R 755 ~/homebrew/plugins/

编辑 ~/homebrew/plugins/SDH-AnimationChanger/main.py 文件,找到以下几行:

CONFIG_PATH = '/home/deck/.config/AnimationChanger/config.json'
ANIMATIONS_PATH = '/home/deck/homebrew/animations'
OVERRIDE_PATH = '/home/deck/.steam/root/config/uioverrides/movies'
DOWNLOADS_PATH = '/home/deck/.config/AnimationChanger/downloads'

修改为:

CONFIG_PATH = os.path.expanduser('~/.config/AnimationChanger/config.json')
ANIMATIONS_PATH = os.path.expanduser('~/homebrew/animations')
OVERRIDE_PATH = os.path.expanduser('~/.steam/root/config/uioverrides/movies')
DOWNLOADS_PATH = os.path.expanduser('~/.config/AnimationChanger/downloads')

之后重启 Decky Loader sudo systemctl restart plugin_loader.service,应该就好了。

如果遇到其他插件有类似情况,也可以参考着修改。

TDP 控制

TDP 控制对掌机形态的设备来说是十分重要的,可以通过控制 TDP 来降低发热,增加续航,Steam 游戏模式快捷菜单中的 TDP 控制选项是只适用于 Steam Deck 的,并不适用于其他型号的掌机,为了使其他型号的掌机可以控制 TDP,就需要借助插件了,支持控制 ROG Ally TDP 的插件有很多,比如 PowerControl修改版的 PowerToolsSimpleDeckyTDP,我用下来觉得 SimpleDeckyTDP 是目前体验最好的。

另外 Bazzite 还提供了 ujust 命令来快速安装 SimpleDeckyTDP,只需运行 ujust setup-decky simpledeckytdp 即可。

就我个人的体验来说,ROG Ally 将 TDP 设置在 15 到 20 瓦就可以保证绝大多数游戏在相对可玩的帧率下运行了,继续提高 TDP 对帧数收益不大,且风扇更吵,发热更大。

额外按键与陀螺仪

ROG Ally 除了有一套 xbox 布局的摇杆与按键外,还有正面背面各两个按键和一个陀螺仪,这些输入设备默认在 Steam 里面是无法使用的。要想使用额外按键,需要借助一些其他软件,若是要使用陀螺仪,更是需要一些内核补丁。

ChimeraOS 在 steam-plus 和 OpenGamepadUI 模式下正面两个按键是可以使用的,被分别映射为了快捷菜单和电源菜单,而两个背键和陀螺仪目前是不可用的,若是切换到了 steam 模式,两个背键会被识别为一个按键,具体按键的行为可以在 /etc/handyggcs/handyggcs.conf 里面配置。若是想使用陀螺仪,可以尝试一下 NeroReflex 的 Fork,这个版本已经包含了必要的内核补丁,并预装了他开发的一个软件 ROGueENEMY 用来处理额外按键和陀螺仪的行为,手柄按键、额外按键与陀螺仪将会被模拟成一个 DualSense 手柄来被 Steam 识别,此时两个背键会被识别为手柄触摸板按压,也可以在配置文件 /etc/ROGueENEMY/config.cfg 中将模拟模式修改为 DualSense Edge,这样两个背键就会被识别为手柄的两个 Fn 键。要切换到 NeroReflex 版本,只需运行 sudo frzr-deploy rog-ally-gaming/chimeraos:stable 即可。

对于 Nobara,首先需要安装打了补丁的内核,ALLY_Nobara_fixes 这个仓库中包含了所需的补丁,也可以在 Release 界面 下载已经编译好的内核,比如目前最新的版本是 kernel-6.7.8-200.fsync.ally.fc39.x86_64.tar.gz

tar xvf kernel-6.7.8-200.fsync.ally.fc39.x86_64.tar.gz
cd RPM
sudo dnf install *.rpm

之后安装 hhd

# 安装 hhd
curl -L https://github.com/hhd-dev/hhd/raw/master/install.sh | sh
# 安装 hhd-decky 控制插件
curl -L https://github.com/hhd-dev/hhd-decky/raw/main/install.sh | sh

之后便可以通过 decky 插件来控制并管理陀螺仪和背键了,可以选择模拟 DualSense 或 DualSense Edge 手柄,或者开关陀螺仪。

另外 Steam 默认对 DualSense 和 DualSense Edge 手柄配置的摇杆死区较大,而 ROG Ally 的摇杆死区不需要这么大,可以按照自己的喜好在控制器设置里面调整死区。

而 Bazzite 几乎就是开箱即用了,默认的内核就已经包含了所需的内核补丁,并且预装了 hhd 软件来模拟手柄,只需安装一个 hhd-decky 插件就行了。

如果对 PS5 的按键图标不是很适应,可以安装 CSS Loader 插件,然后加载 PS5-to-Xbox-glyphs 图标,但这只对 Steam 内的界面生效,在游戏内可能还是会显示 PS5 的图标,可能需要适应一段时间。Bazzite 对这个图标居然也有 ujust 快捷安装命令:ujust install-hhd-xbox-glyph-theme

还有一点,ROGueENEMY 和 hhd 都说自己是支持控制 ROG Ally 的 RGB 灯效的,但是我之前在 Windows 里面手动关掉了灯效,之后好像就没办法在 Linux 系统里面调整灯效了,不过我个人倒不太在意,没有灯效还能省点电。

扬声器问题

我自己的 ROG Ally 遇到过一个有点烦人的问题,就是有时候左边扬声器声音会变得很小,这个问题我在网上搜索了一下,有些人在 Windows 上遇到过类似的问题,有人说是硬件问题,送售后修好了,有人说是软件问题,重装音频驱动就好了。我个人没在 Windows 上遇到这个问题,刚装上 Linux 的前几天也没问题,用了一段时间后才会出现,将系统整个重装又会好一段时间,所以我怀疑可能是软件问题,但是也没找到可行的解决办法,经过一段时间的尝试,我找到一些缓解方法。

如果发现左边扬声器声音忽大忽小,可以手动把音量拉满,然后让左边扬声器随便播放一些声音,比如这个声音测试网站,可以分别测试左右扬声器,确认左右扬声器音量一致就可以调回正常音量了;

如果上面的方法还是不行,那就尝试关机,拔掉充电器,然后长按电源键 10 秒以上,再次开机,声音大概率就好了;

另外在 Steam 游戏模式的声音设置里,关掉 UI 音效,似乎能降低这个问题出现的频率。

游戏体验

既然是游戏掌机,怎么能不提游戏体验呢,我这段时间主要玩的有三个游戏:《古墓丽影:崛起》、《古墓丽影:暗影》和《底特律:化身为人》

重启后的新版《古墓丽影》游戏我很久之前就通关了,可以说是一部非常不错的作品,之后的两部崛起和暗影因为设备和时间原因一直没有玩,买了 ROG Ally 之后,我就把这两部游戏重新拾起来游玩了,目前崛起已经通关并全收集,暗影进度刚推了一半,虽说剧情和游戏性不如第一部优秀,但整体还算是佳作。游玩体验方面,虽然这两个游戏都有原生 Linux 版,但我实际玩下来发现还是用 Proton 启动 Windows 版体验更好一些,比如我在玩暗影的时候,遇到过手柄震动抽风的情况。不过需要注意,暗影的 Windows 版需要在桌面模式启动一次,在启动器中将 DX12 选项关掉,之后才可以在游戏模式正常启动,不然就会黑屏,两个游戏我都设置分辨率为 720p,然后用全局 FSR 上采样到 1080p,虽然观感不及原生 1080p,但也比 72 0p 好上很多。默认中画质下,在自带的基准测试中,崛起在 15W TDP 能有 70 到 80 的平均帧,暗影在 20W TDP 也有 50 至 60。在中画质的基础上我甚至还能调高一些特效选项,比如材质和抗锯齿,也不会对帧率造成太大影响。不过古墓丽影似乎每一部都有一副掉帧地图,在崛起中是地热山谷,在暗影中是隐秘之城,NPC 多,植被多,非常容易掉帧,这时只能选择降低一点画质或者忍一忍了,另外值得一提的是,这两个游戏我 Steam 和 Epic 都有,Steam 的版本在运行时明显帧率更稳定,掉帧更少,看来 Steam 的着色器预缓存效果还是很不错的。

《底特律:化身为人》这个游戏是我最近才购入的,并没有玩很久,这个游戏将分辨率设置为 720p 的话,即使用 FSR 上采样,观感也会很差,如果设置分辨率为 1080p,然后调低游戏内渲染分辨率,再打开游戏内的 FSR 锐化,观感会好一些,但有些场景锯齿感还是比较明显,所以我干脆就直接在原生 1080p 下玩了。这个从主机移植而来的游戏是知名的优化差,但在 ROG Ally 上运行的似乎还不错,在 20W 的 TDP 下,默认中画质,大部分场景都可以稳定在 30 帧,这对于一个剧情类的游戏已经比较可玩了,只是在第三个章节,NPC 很多,掉帧会比较严重。在玩这个游戏的时候我真的经常会被它精美的画质和出色的动作捕捉惊艳到,即使是中画质下,观感也一点不差。

另外需要注意,要想使 Steam 游戏模式的全局 FSR 生效,需要将游戏的显示模式调整为全屏独占或窗口化,要确认 FSR 是否生效,只需将性能界面等级拉到 4,在左边的性能监视信息中,如果 FSR 显示为 ON,就说明 FSR 已经生效了。

结语

比较三个系统的不同,各有特色又各有不足。

ChimeraOS 有很多特色功能,在其他系统上都看不到,同时还提供了详细的 Fork 指南,如果原系统有什么不满意的地方,或是要添加额外的功能,大可以自己 Fork 下来进行修改,整体上像是一套自建房,可以完全根据自己的需要定制功能,但也免不了有不完美的地方。

而 Nobara 则更像一套毛坯房,只给你了一套最基础的架构,想要达到可用的状态,还需要进一步的精装修。

Bazzite 像是可以直接拎包入住的公寓房,尽量努力照顾到所有人的需求,但也因此会多出一些你从来不会用到的功能。

就我个人而言,ChimeraOS 是我最早注意到且用得最久的系统,因为它是基于 Arch Linux 的,而我正好对 Arch 比较熟悉,为了满足我个人的需求,我还曾 Fork 下来做了不少修改;Nobara 我只是简短地尝试过,但很多功能需要自己手动配置有些麻烦我就没有深入使用;Bazzite 是我目前正在使用的系统,因为我想要的大部分功能它都有提供,完全可以开箱即用了,而且 Bazzite 这个项目还非常年轻,我也十分期待它未来会发展成什么样。