如何使得支持OpenGL的Flatpak應(yīng)用和游戲在專有Nvidia圖形驅(qū)動(dòng)下工作
一些支持 OpenGL 并打包為 Flatpak 的應(yīng)用和游戲無法使用專有 Nvidia 驅(qū)動(dòng)啟動(dòng)。本文將介紹如何在不安裝開源驅(qū)動(dòng)(Nouveau)的情況下啟動(dòng)這些 Flatpak 應(yīng)用或游戲。
這有個(gè)例子。我在我的 Ubuntu 18.04 桌面上使用專有的 Nvidia 驅(qū)動(dòng)程序 (nvidia-driver-390
),當(dāng)我嘗試啟動(dòng)以 Flatpak 形式安裝的***版本 Krita 4.1 (構(gòu)建了 OpenGL 支持)時(shí),顯示了如下錯(cuò)誤:
$ /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=krita --file-forwarding org.kde.krita
Gtk-Message: Failed to load module "canberra-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Could not initialize GLX
Winepak 游戲(以 Flatpak 方式打包的綁定了 Wine 的 Windows 游戲)似乎也受到了這個(gè)問題的影響,這個(gè)問題從 2016 年出現(xiàn)至今。
要修復(fù)使用 OpenGL 和專有 Nvidia 圖形驅(qū)動(dòng)時(shí)無法啟動(dòng)的 Flatpak 游戲和應(yīng)用的問題,你需要為已安裝的專有驅(qū)動(dòng)安裝一個(gè)運(yùn)行時(shí)環(huán)境。以下是步驟。
1、如果尚未添加 FlatHub 倉庫,請(qǐng)?zhí)砑铀?。你可以?a class="ext" rel="external nofollow" target="_blank">此處找到針對(duì) Linux 發(fā)行版的說明。
2、現(xiàn)在,你需要確定系統(tǒng)上安裝的專有 Nvidia 驅(qū)動(dòng)的確切版本。
這一步取決于你使用的 Linux 發(fā)行版,我無法涵蓋所有情況。下面的說明是面向 Ubuntu(以及 Ubuntu 風(fēng)格的版本),但希望你可以自己弄清楚系統(tǒng)上安裝的 Nvidia 驅(qū)動(dòng)版本。
要在 Ubuntu 中執(zhí)行此操作,請(qǐng)打開 “軟件與更新”,切換到 “附加驅(qū)動(dòng)” 選項(xiàng)卡并記下 Nvidia 驅(qū)動(dòng)包的名稱。
比如,你可以看到我的是 “nvidia-driver-390”:
這里還沒完成。我們只是找到了 Nvidia 驅(qū)動(dòng)的主要版本,但我們還需要知道次要版本。要獲得我們下一步所需的確切 Nvidia 驅(qū)動(dòng)版本,請(qǐng)運(yùn)行此命令(應(yīng)該適用于任何基于 Debian 的 Linux 發(fā)行版,如 Ubuntu、Linux Mint 等):
apt-cache policy NVIDIA-PACKAGE-NAME
這里的 “NVIDIA-PACKAGE-NAME” 是 “軟件與更新” 中列出的 Nvidia 驅(qū)動(dòng)包名稱。例如,要查看 “nvidia-driver-390” 包的確切安裝版本,請(qǐng)運(yùn)行以下命令:
$ apt-cache policy nvidia-driver-390
nvidia-driver-390:
Installed: 390.48-0ubuntu3
Candidate: 390.48-0ubuntu3
Version table:
*** 390.48-0ubuntu3 500
500 http://ro.archive.ubuntu.com/ubuntu bionic/restricted amd64 Packages
100 /var/lib/dpkg/status
在這個(gè)命令的輸出中,查找 “Installed” 部分并記下版本號(hào)(不包括 “-0ubuntu3” 之類)?,F(xiàn)在我們知道了已安裝的 Nvidia 驅(qū)動(dòng)的確切版本(我例子中的是 “390.48”)。記住它,因?yàn)橄乱徊轿覀冃枰?/p>
3、***,你可以從 FlatHub 為你已安裝的專有 Nvidia 圖形驅(qū)動(dòng)安裝運(yùn)行時(shí)環(huán)境。
要列出 FlatHub 上所有可用的 Nvidia 運(yùn)行時(shí)包,你可以使用以下命令:
flatpak remote-ls flathub | grep nvidia
幸運(yùn)地是 FlatHub 上提供這個(gè) Nvidia 驅(qū)動(dòng)的運(yùn)行時(shí)環(huán)境。你現(xiàn)在可以使用以下命令繼續(xù)安裝運(yùn)行時(shí):
針對(duì) 64 位系統(tǒng):
flatpak install flathub org.freedesktop.Platform.GL.nvidia-MAJORVERSION-MINORVERSION
將 “MAJORVERSION” 替換為 Nvidia 驅(qū)動(dòng)的主要版本(在上面的示例中為 390),將 “MINORVERSION” 替換為次要版本(步驟2,我例子中的為 48)。
例如,要為 Nvidia 圖形驅(qū)動(dòng)版本 390.48 安裝運(yùn)行時(shí),你必須使用以下命令:
flatpak install flathub org.freedesktop.Platform.GL.nvidia-390-48
對(duì)于 32 位系統(tǒng)(或能夠在 64 位上運(yùn)行 32 位的應(yīng)用或游戲),使用以下命令安裝 32 位運(yùn)行時(shí):
flatpak install flathub org.freedesktop.Platform.GL32.nvidia-MAJORVERSION-MINORVERSION
再說一次,將 “MAJORVERSION” 替換為 Nvidia 驅(qū)動(dòng)的主要版本(在上面的示例中為 390),將 “MINORVERSION” 替換為次要版本(步驟2,我例子中的為 48)。
比如,要為 Nvidia 圖形驅(qū)動(dòng)版本 390.48 安裝 32 位運(yùn)行時(shí),你需要使用以下命令:
flatpak install flathub org.freedesktop.Platform.GL32.nvidia-390-48
以上就是你要運(yùn)行支持 OpenGL 的 Flatpak 的應(yīng)用或游戲的方法。