Fedora Discover

最近被某个问题折磨的有点不爽,决定研究一下。
打开Discover更新软件,刷新列表的进度一直卡在99%。

(找了个网图)
查了一下,注意到了flatpak,在执行flatpak update -vv时会卡在loading https://registry.fedoraproject.org/index/static?label%3Aorg.flatpak.ref%3Aexists=1&architecture=amd64&os=linux&tag=latest,尝试使用Invoke-WebRequest下载这个地址,发现速度非常慢,虽然只有16M,但速度只有不到10KB/s,速度实在是不对劲,即使挂了梯子,速度也很慢。
鉴于我并不适用Flatpak,于是找了一下,找到了两个命令:

sudo flatpak remote-delete fedora  
sudo flatpak remote-add --if-not-exists fedora oci+https://registry.fedoraproject.org  

第一个命令是删掉fedora的库,第二个是加回来。
在执行第一条之后重启,问题就解决了,可以正常更新了。

Linux运行鸣潮

猛猛刷视频,偶然刷到了鸣潮的新角色。刺激啊,赤脚开弓,必须上线抽一发。
好,那么这就面临一个问题,鸣潮能在Linux上运行吗?
搜了一下,鸣潮使用了ACE,但不知道为什么这个ACE的检测很宽泛,甚至吃STEAMDECK参数。

下载游戏

首先,按正常流程运行鸣潮是不行的,这游戏的Launcher是不能正常运行的。很怪异,游戏可以跑,但Launcher不行。不过好在找到了一个有意思的项目,LutheringLaves。瞄了一眼代码,大概是通过解析鸣潮的配置文件来手动下载。运行了一下,非常流畅,没有卡住或者断开,很顺利的就下载完了。

Proton-GE

本来我想使用Steam自带的Proton运行鸣潮,但跑了一下发现并不可以,必须要使用ProtonGE。
ProtonGE是一个社区维护的Proton版本,额外添加了针对鸣潮的专项Fix,非常OK。
首先去ProtonGE Release下一个最新版。然后把里面的文件夹放在~/.steam/root/compatibilitytools.d这里(如果没有compatibilitytools.d文件夹就新建一个),然后重启Steam,就可以在兼容层里选择ProtonGE了。

这里还有一个更全的文档
安装并将ProtonGE设置为兼容层后,还需要设置参数,改为

STEAMDECK=1 %command%

然后,就可以正常运行了。


跑起来游戏,有少许乱码,而且语言是英文,好在进入之后能正常切换到中文。但仍然有问题,隔一段时间就会掉线,不是很清楚情况,感觉是Wine的某些网络组件实现有差异,不过最困难的步骤已经结束,之后有时间可以试试替换一些dll,看看能不能缓解问题。

SVP+VLC补帧配置

不知道为什么,突然想起要搞补帧了。可能在某个地方看到了小黄鸭补帧,突然想起来我很多年之前还买过SVP的License,准备弄下来看看。
五六年前,补帧还大量使用的是光流法,这样的补帧算法在现在AI大行其道的环境下显得很不够看。有人推荐使用Rife补帧,Rife是个什么?一查原来是SVP的组件,很好,但是Linux下好像不能用。这大概是SVP在Linux下免费的原因吧。。。虽然对于我这个付费用户来说,我宁愿它收钱hhh。
我在Windows下是用的SVP+Potplayer的方案,但是PotPlayer是windows独占应用。好在Linux下也有很多好用的播放器,挑了挑,最终选中了VLC。
安装SVP和VLC倒是没有什么问题。SVP提供了Linux的安装程序,运行的时候一股浓浓的Windows风格扑面而来。VLC在官网上有详细的安装说明。
问题比较大的是配置。SVP提供了一份Linux下的配置文档,讲的比较详细,但有很多问题,主要在Vapoursynth和启用SVP上。
VapourSynth这个组件,我没有找到任何安装文档,所有文档都说的是直接sudo dnf install Vapoursynth就能解决,包括其官网的安装说明也是让直接安装,但是我却提示找不到这个包。找了一下Fedora的包源,发现这个组件是由几个子组件组成的,于是我决定要不然单独安装子组件吧,于是使用以下命令安装:
sudo dnf install vapoursynth-libs python3-vapoursynth vapoursynth-tools vapoursynth-plugins
之后的结果表明这个方案是可行的。而且在写这篇文档的时候我发现了Fedora论坛对这个包的讨论,貌似讨论的是这个项目只有子组件,但没有名为vapoursynth的主组件,想来在fedora上这样的安装方式应当是正确的了。
然后就是VLC的配置。SVP有一个开关可以很方便的为VLC启用补帧,但需要指定VLCPlugin的路径。SVP官网说的是/usr/lib/vlc/plugins/video_filter,但这个路径是错误的,应当是只有32位的VLC才使用的是这个地址。我cd过去之后发现根本没有/usr/lib/vlc,网上所有文档也都说的是这个路径。最后我翻它自带的VLsub插件,发现它的路径在/usr/lib64/vlc这里,这才找到了实际的路径。

然后,需要在SVP里设置一下这个Plugin的路径:

然后使用以下命令给这个路径设置写入权限:
sudo chmod 777 /usr/lib64/vlc/plugins/video_filter
然后在菜单里打开VLC支持就可以正常补帧了……吗?
对于一般的视频确实是可以了,但我拿来测试的视频却无法正常播放。
视频位于机械硬盘里,很不幸,拜Linux糟糕的NTFS驱动所赐,我的机械硬盘分区在之前一段时间遭到了毁灭打击。我在Linux下向Windows中写入了140G的文件,但在回到Windows中却发现所有文件全部凭空消失。chkdsk了之后发现这些文件全部变成了游离的碎片嵌在了NTFS系统里,虽然花了很长时间,牺牲了一些数据恢复了正常,我却不确定有没有其他文件损坏。
这些视频无法播放,我很自然的想到了是文件损坏的问题,于是回到Windows,却发现播放是正常的。通过PotPlayer差看了一下编码,是HEVC,好像不是很刁钻,但为什么有问题呢?
印象里在哪儿看到过HEVC的推广缓慢很大的原因就是版权问题,一查果然如此,VLC依赖ffmpeg,但Fedora默认安装的ffmpeg是不是完全体而是ffpmeg-free,缺了不少的解码库。但我按照网上的说法去替换的时候,却发现无论如何也安不上完全体ffmpeg。仔细查了一下,原来fedora默认是不带ffmpeg源的,只提供ffmpeg-free。我之前启用过NPMFusion的NonFree源,本以为有版权问题那肯定是在这个源里了,万万没想到这软件是在Free源里,实在是有点抽象了,原来这里的Free不是自由而是免费?

1
2
sudo dnf install  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm  
sudo dnf swap 'ffmpeg-free' 'ffmpeg' --allowerasing

使用上面的命令,将FFmpeg-free替换为完全体ffmpeg,之后再运行VLC,视频就可以正常播放了。启用补帧,也正常看到了SVP的标志,补帧也正常运行了。

安卓模拟器

不知道为什么,突然想要搞一搞安卓模拟器。
大概是因为之前有看到可以搞,所以就想试一试。
Linux下有一个比较好用的安卓模拟器叫Waydroid,可以直接下载。
但安装的过程是有说法的,它自带的安装器通过官方渠道下载安卓镜像的速度极慢,并且不支持代理,设置http_proxy完全没有作用,没办法,只能自己拼了。好在Waydroid支持手动下载镜像并作为ExtraImage安装,所以也算是能比较好的解决。
Waydroid官方的镜像地址在这里,要下载System和Vendor两个部分,然后把里面的img放在/etc/waydroid-extra/images/目录下,然后执行sudo waydroid init -f就可以使用了。
Waydroid在Fedora42上有点问题,打开之后会有SELinux的警告,但好像不影响什么,仍然可以跑得起来。所以就先不管了。


安装完Waydroid之后还没结束,因为是在PC上安装的模拟器,如果要运行ARM架构的应用,那么就需要安装转译层。不愧是Linux,这些东西都要自己拼。
我选择的是linhoudini,是个挺出名的转译层,有大佬已经整理好了相关的脚本,可以直接clone下来使用。

1
2
3
4
5
git clone --depth=1 https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt
sudo venv/bin/python3 main.py install libhoudini

这个脚本还支持安装很多其他的东西,但我好像用不着,就先只装了libhoudini。
安装结束之后,就可以通过下列命令安装应用了:

1
waydroid app install XXX.apk

虽然是这么说,但我尝试了两个游戏(QQ飞车,元梦之星),都无法正常运行,全部都会闪退。看起来这个转译层还是任重而道远啊,感觉还差的特别多。

能跑到主界面,但进去之后会崩溃。
过两天再试试其他的应用,看看有没有哪个是能跑的。

移除软件源

前一阵为了解决并不存在的QQ音乐打不开的问题,反复安装卸载了很多次Wine,这个过程中也添加了WineHQ的源,结果几天更新软件才发现WineHQ的源连不上了,不知道是什么情况,但无法连接,每次安装软件都要等很久,很麻烦。
搜索了一下,原来添加的软件源的位置都在/etc/yum.repos.d/这个目录下,cd过去ls一下就可以看见每一个源了。
然后选择性删掉winehq.repo,一切就都平静了。

NTFS文件出错

今天QQ音乐突然运行不起来了,看着错误写的是LoadDLL出错,就以为是Wine出错了,然后卸了装,装了卸,完全没起作用。
想到了会不会是硬盘出了什么错误,导致DLL出了问题,于是重启到Windows,准备看看这玩意儿在windows下还能不能正常跑。
结果到了Windows下果然跑不了,chkdsk检查了一下,出现了一堆错误,不知道是什么情况,难道是Linux的驱动问题?
在网上找到了很多人吐槽Linux和Windows混用导致NTFS分区文件出错的问题,看起来我也遇到了这种事。
目前没有找到什么可行的解决方案,全部转换成exFat估计是可以的,但现有的文件实在是不太好搞。目前找到了一个看起来有点用的方法,就是关掉Windows的快速启动。有人说这个快速启动会导致NTFS分区出问题,如果和Linux混用的话可能会很麻烦。我准备先关掉看看。
如果再出问题怎么办呢?估计只能转换成exFat了,随着我逐渐全面转向Fedora,可以稍微集合一下Windows下的软件,都放在系统盘里估计也差不多了。其他的部分都换成exFat,应该会比NTFS稳定很多。

关于输入法的快捷键

之前切换输入法一直都用的是Ctrl+空格,但这跟我在Windows下的习惯不一样,适应了很久。
为什么没有在Fedora上改成我常用的Shift+Alt呢?因为我发现设置了Shift+Alt之后总是不生效,猛猛按就是不起作用。我以为是和什么其他功能的快捷键有冲突,但去设置里又没有找到什么用Shift+Alt快捷键的应用。
直到刚才,我又想尝试设置,然后又发现不起作用,我恼羞成怒,开始猛敲这个快捷键,然后它突然就生效了。
我仔细试了试,这才恍然大悟,原来Linux的快捷键是有先后顺序的,Shift+AltAlt+Shift是两个不同的快捷键。我虽然设置的是Shift+Alt,但一直都是用Alt+Shift的指法,结果总是不能触发。
原来如此,原来如此,接下来把两个快捷键都设置上,切换就非常丝滑了。

分区自动挂载

Fedora有个毛病,硬盘在启动的时候不会自动挂载,而且通过设置里也没法自动挂载,虽然有相关设置,但每次都只给我挂载一个分区,不知道是什么情况,感觉又得自己拼了。

设置

首先写一下正常的方法。
打开设置->磁盘和相机->设备自动挂载,里面就有自动挂载的相关设置。

虽然,不知道为什么相机和磁盘会放在一个子菜单里,或许这又是Liunx独特的设计逻辑,不深究了。。。
理论上这么设置一下就可以做到自动挂载,但实际上不行,即使全部勾上,在登录的时候也只会挂载其中一部分,而且貌似还不是固定的,有的时候只挂载Windows分区,有的时候会把sda1或者sda2也挂载上。而且这样设置之后,登录的时候会自动弹出输入密码的提示框。明明没有正常工作,怎么好意思问我要密码的。所以这个方案不行。

修改fstab

最终还是要改系统文件,所以不可变发行版果然是不靠谱的。
fstab文件控制着启动系统时硬盘的挂载逻辑,位置是/etc/fstab。理论上,可以直接手动修改这个文件来达到自动挂载的目的,但我第一次手动修改之后直接无法进入系统了,在黑底白字的救援模式下敲了好一阵才复原了fstab,所以不推荐直接手改。
不手改的话怎么办呢?Fedora自带一个KDE分区管理器,可以借助这个软件来修改fstab。
Linux挂载分区不仅仅是挂载就结束了,还需要指定挂载选项,如果缺少了挂载选项或者设置的不对,可能会出现打不开,无法写入,不能执行里面的应用等等情况。我第一次直接改就出现了QQ音乐无法启动的问题。所以需要先知道一个正常的挂载选项是什么样的。
首先打开Dolphin文件管理器,然后手动点击各个分区,让Dolphin挂载每一个分区,然后在终端里输入mount命令,很容易可以找到刚才挂载的几个分区。

可以直接使用Dolphin默认的挂载路径,也可以自己指定挂载路径。我因为按这个路径配置了很多,再加上担心和Dolphin的什么功能冲突,所以就直接沿用了这个路径。
重点是后面那一大串,复制下来,然后转到KDE分区管理器
选中要设置的分区,因为我们已经挂载过了,无法进行编辑,所以需要先进行卸载。
卸载完之后,再次点击右键,就可以看见编辑挂载点的选项了。

识别方式选择UUID,路径输入要挂载到的路径(或者沿用Dolphin提供的路径)。点击更多按钮,把刚才从mount命令里复制出来的对应分区的挂载选项塞进去。

然后,一路确定,一个可以正常挂载的分区就处理好了。
重复上述步骤,对每一个分区都设置挂载点,然后重启系统,各分区就会自动挂载,也不需要输入密码了。

VR环境配置

本来是不想在Linux上搞VR的,因为我有VirtualDesktop,在Windows上的体验非常好。我尝试使用Wine去跑VirtualDesktop,失败了,尝试安装了.Net框架,没有起作用,网上好像也没有相关的文档。没有VD,就感觉Money白花了。但重启电脑玩VR,玩完再切回来是一件更痛苦的事情,所以还是下定决心配好VR环境。

ALVR

我使用的设备是Meta Quest 2, 需要经过串流到电脑上才能正常使用。ALVR是一个开源的VR串流软件,据说效果比VD差不少,但鉴于我的Wifi速度很慢,我使用VD的时候也是通过USB共享网络,间接使用有线进行串流的,所以ALVR在速度方面应该不会差太多。

首先自然是要把项目下载下来。ALVR提供了一个Launcher,貌似可以做到自动更新,但国内的情况来看,用Launcher还不如我自己手动下载来得快,所以我手动下载了Streamer,这个是用来进行串流的工具,把它放在合适的地方,我放在了这里:

1
$HOME/.local/alvr_streamer

下载完ALVR后,Quest2上也需要下载ALVR的客户端,这个在Quest2的应用商店里就可以下载的到,是免费的。
下载完之后,还不能着急连接,因为仍然需要一些东西进行配置。
ALVR会拉起SteamVR,但需要额外给SteamVR添加一个命令行参数,否则头显会黑屏,这个参数在ALVR启动SteamVR的时候会又提示,即:

1
2
Make sure you have put the following line in your SteamVR launch options and restart it:
/home/jackmyth/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%

当然,上述路径要根据实际情况进行修改,直接复制ALVR的提示就好。

然后启动SteamVR,就可以正常看见VR画面了。

OpenXR Runtime

我要玩的游戏是BeatSaber,但这个游戏在打开之后会一直卡住,仿佛是没有找到VR环境,无法进入VR状态,也没有和手柄头显建立连接。头显里也不显示任何游戏内容。
我并没有在网上找到什么解决方案,但有老哥说自己已经在Linux上玩上BeatSaber了,所以我觉得这套流程应该是可以跑通的。
在我鼓捣的时候,我发现SteamVR提示:SteamVR不是默认的OpenXR Runtime,我就在想,大概是BeatSaber想要调用OpenXR,但是找不到默认的,于是无法进入VR状态。听起来很合理,我准备把它设置为默认的Runtime,但是却报了错误:

看到这个,我不仅没沮丧,反而感到了兴奋,这不就是问题吗?没有应用Handle这个协议,自然是不能进入VR状态的。
在网上找了一圈,找到了一个手动设置的命令:

1
$HOME/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/../vrmonitor.sh vrmonitor://openxr/makedefault

看了一下命令,很显然是手动调用脚本来执行这个makedefault的行为。在执行之后,SteamVR认出了自己是默认的OpenXR Runtime,打开BeatSaber,游戏成功进入了VR状态。
之后就不是问题了,微调一下ALVR Streamer的配置,就可以开玩了。

Xbox手柄驱动

Xbox手柄,也是一个大问题,我本来以为这个东西是可以开箱即用的,但是发现好像并不是这么回事。虽然Fedora的设置里有游戏控制器这个选项,但打开Xbox手柄,什么都没有发生,大概是因为我使用的是无线适配器连接的,有线或许能起作用吧,但在我这里是不行。
没办法,还是得自己拼。一通搜索发现Xbox在Linux上是需要单独安装驱动的。
我一开始找到了xpadneo这个项目,但在安装之后依然没有起作用。我仔细看了一下它的说明文档,好像说支持蓝牙无线链接,但我这个不是一个简单的蓝牙设备,貌似是单独的一个Wireless Dongle,需要不同的驱动。
我在它的项目页面找了一下,发现了xone这个项目。
安装过程非常简单,按照说明clone项目,然后运行安装脚本

1
2
3
git clone https://github.com/dlundqvist/xone
cd xone
sudo ./install.sh

这个脚本需要dkms的支持,不过不用担心,如果没有的话脚本会有提示的。
如果脚本提示找不到dkms,那么使用dnf安装就好

1
sudo dnf install dkms

在安装完之后,Xbox手柄的有线连接应该就可以用了,但无线连接还需要一条命令,当初的我就是没看到后面的文档,捣鼓了半天都连不上,结果是自己着急了。

1
sudo install/firmware.sh

安装完之后,重新插拔无线适配器,就可以正常配对了。