NVIDIA - Arch Linux 中文维基

跳至內容

# NVIDIA

出自 Arch Linux 中文维基

相關文章

- NVIDIA/提示和技巧
- NVIDIA/故障排除
- Nouveau
- NVIDIA Optimus
- PRIME
- Bumblebee
- nvidia-xrun
- Xorg
- Vulkan

翻譯狀態：

- 本文（或部分內容）譯自 NVIDIA，最近一次同步於 2025-11-2，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

本文包含安裝和配置 NVIDIA 官方顯卡驅動的信息。想要了解社區開源驅動的信息，參見 Nouveau。如果您使用的是有混合顯卡的筆記本（如Intel核顯+NVIDIA顯卡）, 請額外參閱 NVIDIA Optimus 頁面。

## 安裝

警告：請避免從 NVIDIA 官網下載驅動包進行安裝。建議使用 Arch Linux 的 pacman 安裝驅動程序，這樣驅動程序能夠在更新系統時與其他組件一同更新。
注意：在具有混合圖形技術的機型上雙重啟動時，啟用Windows或第三方應用中的 集顯模式/節能模式 可能會完全禁用NVIDIA獨立顯卡(例如ASUS節能模式)，導致其無法被檢測到。

首先，從 nouveau NVIDIA代號查詢頁 中查找您的顯卡系列代號(例如：NV110, NVC0)。您也可以運行以下命令獲知顯卡型號/名稱：

    $ lspci -k -d ::03xx

隨後為您的顯卡安裝合適的驅動：

  注意：
  - 使用 dkms包 安裝時, 請參閱 DKMS#安裝 部分
  - 使用DKMS方式安裝的驅動並不與特定內核綁定，其會為安裝了頭文件的每個內核重新編譯NVIDIA內核模塊。

GPU 家族 | 驅動 | 支持狀態
--- | --- | ---
Blackwell (GBXXX)系列或更新版本 | nvidia-open包 適用於 linux包 nvidia-open-lts包 適用於 linux-lts包 nvidia-open-dkms包 適用於任意內核 | 上游推薦使用 支持中1
Turing (NV160/TUXXX)系列到 Ada Lovelace (NV190/ADXXX)系列 | 同時被以下包支持： nvidia-open包 在 Turing 架構上可能存在電源管理問題2, 可能會在 Turing 架構的筆記本上崩潰2 nvidia-580xx-dkmsAUR
Maxwell (NV110/GMXXX)系列到 Volta (NV140/GVXXX)系列 | nvidia-580xx-dkmsAUR | 舊版，支持中
Kepler (NVE0/GKXXX)系列 | nvidia-470xx-dkmsAUR | 過時，不再支持3,4
Fermi (NVC0/GF1XX)系列 | nvidia-390xx-dkmsAUR
Tesla (NV50/G80-90-GT2XX)系列 | nvidia-340xx-dkmsAUR
Curie (NV40/G70) 以及更老的系列 | Arch Linux沒有相應的驅動包

1. 如果以上驅動安裝後都不能正常工作，您也許需要使用 nvidia-open-betaAUR 以獲得更新版本的驅動。
2. NVIDIA 的開源內核模塊無法在 Turing 架構的顯卡上啟用 D3 電源管理。這會降低搭載Turing 架構顯卡且使用 NVIDIA Optimus 配置的筆記本電腦的續航時間。建議改用專有驅動模塊（例如 nvidia-580xx-dkmsAUR），並在 內核參數 中設置`NVreg_EnableGpuFirmware=0`。有關此問題的更多信息。
3. 在安裝了 Intel CPU 11 代或更新版本的處理器以及Linux 5.18 (或更高版本)的系統上可能無法正常工作，原因是與其與 Indirect Branch Tracking 這個安全功能不兼容。您可以在 Arch_的啟動流程中設置 `ibt=off` 內核參數來禁用它。請注意，這項安全功能負責緩解一些攻擊技術的影響。
4. NVIDIA不再積極為這些顯卡提供驅動。這意味著這些驅動不正式支持現在的Xorg版本。因此使用 Nouveau 驅動可能會更方便，因為它依然為這些老顯卡提供對當前Xorg的支持。但是，NVIDIA 提供的 legacy 驅動依舊可用，並且或許擁有更好的 3D 性能（穩定性）。

對於 32 位應用程式支持，請安裝 multilib 倉庫中對應的 lib32 nvidia 軟體包（例如 lib32-nvidia-utils包）。

nvidia-utils包 軟體包包含一個文件，其將會在重啟後屏蔽 nouveau 內核模塊。另外，您還可以將`kms` 從 `/etc/mkinitcpio.conf` 裡的`HOOKS` 數組中移除，並重新生成 initramfs。 這將防止 initramfs 包含 `nouveau` 模塊，以確保內核在早啟動階段不會加載它。

注意：如果您正在使用 Wayland ，您需要首先配置 #DRM 內核級顯示模式設置 後重啟，否則您可能會遇到黑屏。

一旦驅動安裝完畢，就可以進入下一步了：#Xorg配置或#Wayland配置

### 定製內核

安裝 nvidia-open-dkms包 軟體包以及你內核對應的頭文件。

確保您的內核設置了 `CONFIG_DRM_SIMPLEDRM=y` 選項，如果使用 `CONFIG_DEBUG_INFO_BTF`，則 PKGBUILD 中需要以下選項（從內核 5.16 開始）：

    install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids

linux包 6.15 引入了新的 NVIDIA GPU驅動 Nova。nvidia-utils包 默認會將其加入黑名單。您可以運行systemd-analyze來驗證這一點。 如果您還安裝了其他版本的驅動程序，可能還需要手動將`nova_core`和`nova_drm`模塊加入黑名單。

### DRM 內核級顯示模式設置

由於NVIDIA不支持自動 KMS 晚加載, 要正常運行Wayland 合成器或沒有 root 權限的 Xorg，您必須啟用 DRM (直接渲染管理器)內核級顯示模式設置。

nvidia-utils包 560.35.03-5 版本後默認啟用 DRM (Direct Rendering Manager) 內核級顯示模式設置，如您使用更舊的驅動版本，請為`nvidia_drm`模塊設置以下內核模塊參數：`modeset=1`。

您可以使用以下命令驗證DRM是否自動啟用：

    # cat /sys/module/nvidia_drm/parameters/modeset

其應當返回 `Y`。

警告：官方支持的內核 默認啟用 `simpledrm`, 如您使用545或更舊版本的NVIDIA驅動，您需要設置內核模塊參數 `nvidia_drm.fbdev`。因為當其不被啟用時，NVIDIA 驅動程序嘗試使用 `efifb` 或 `vesafb` 進行幀緩衝(其無法在`simpledrm`下工作)。
注意：版本 470 之前的 NVIDIA 驅動程序 ( 例如 nvidia-390xx-dkmsAUR) 不支持對 XWayland 進行硬體加速，導致非 Wayland 原生應用程式在 Wayland 會話中性能不佳。

#### 早啟動

對於基本功能，只需添加內核參數就足夠了。如果您希望確保驅動能被最早加載，或者遇到了啟動問題（例如 `nvidia` 內核模塊在顯示管理器啟動後才被加載），可以將 `nvidia`、`nvidia_modeset`、`nvidia_uvm` 和 `nvidia_drm` 添加到 initramfs 中。請參閱內核模塊#早期模塊加載以了解如何配置您的 initramfs 生成器。mkinitcpio用戶可能還需要在每次 nvidia-open包 驅動程序更新時重新生成 initramfs映像。請參閱#Pacman 鉤子以自動化這些步驟

##### mkinitcpio

如果使用 mkinitcpio initramfs，請按照 mkinitcpio#MODULES 添加模塊。

如果你將驅動添加到了 initramfs 中，記得每次更新 nvidia-open包 驅動程序後都要運行 mkinitcpio。請參見 #pacman hook 來自動執行這些步驟。

##### Booster

如果您使用的是 Booster，請參閱 Booster#早期加載內核模塊。

##### dracut

如果您使用的是 dracut，請參閱 dracut#早期內核模塊加載。

#### Pacman 鉤子

為了避免更新 NVIDIA 驅動之後忘了更新 initramfs，你可以使用 Pacman Hooks：

    /etc/pacman.d/hooks/nvidia.hook

    [Trigger]
    Operation=Install
    Operation=Upgrade
    Operation=Remove
    Type=Package
    Target=nvidia-open
    Target=linux
    # Change the linux part above and in the Exec line if a different kernel is used
    # 如果使用不同的內核，請更改上面的 linux 部分和 Exec 行中的內容
    [Action]
    Description=Updating NVIDIA module in initcpio
    Depends=mkinitcpio
    When=PostTransaction
    NeedsTargets
    Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'

務必保證 `Target` 項所設置的軟體包與你在前面的安裝過程中所使用的相符（例如`nvidia-open-dkms` 或 `nvidia-open-lts` 等）。

注意：`Exec` 那一行看起來非常複雜，是為了避免在 `nvidia-open` 和 `linux` 軟體包都發生更新的時候重複運行 `mkinitcpio`。如果你覺得無所謂，可以刪掉 `Target=linux` 以及 `NeedsTargets`，然後 `Exec` 就可以簡化為 `Exec=/usr/bin/mkinitcpio -P`.

### 硬體加速視頻解碼

GeForce 8 系列及更新的顯卡通過 VDPAU 進行視頻硬體解碼。Fermi 架構（400、500系列）及更新的顯卡支持通過 NVDEC 進行硬體加速解碼。參見硬體視頻加速。

### 基於 NVENC 的硬體加速視頻編碼

想要使用 NVENC，則需要安裝 `nvidia_uvm` 模塊，並在 `/dev` 下創建相關設備節點。

最新的驅動程序包提供了一個 udev規則，它可以自動創建設備節點，因此不需要進一步的操作。

如果您使用舊的驅動程序 ( 例如 nvidia-340xx-dkmsAUR) ，則需要另外創建設備節點。調用 `nvidia-modprobe` 實用程序會自動創建它們。您可以自己創建 `/etc/udev/rules.d/70-nvidia.rules` 規則來自動運行它 :

    /etc/udev/rules.d/70-nvidia.rules

    ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe -c 0 -u"

## Xorg 配置

NVIDIA專有驅動不需要任何 Xorg 伺服器配置文件。您可以啟動 X 來檢驗沒有配置文件的 Xorg 能否正確運行。但是，您可能需要創建配置文件（優先創建`/etc/X11/xorg.conf.d/20-nvidia.conf`而不是`/etc/X11/xorg.conf`）來調整 Xorg 運行時的一些設置。您可以用NVIDIA Xorg 配置工具來生成配置，也可以手動創建它。假如是手動創建的話，它可以是一個最小配置文件(也就是意味著它僅僅把一些基礎的選項傳給 Xorg 伺服器)，也可以是包含大量的繞開Xorg 自動發現與預配置選項的設置的文件。

提示：更多配置項相關內容參見 NVIDIA/故障排除。

### 自動配置

NVIDIA的軟體包已經包含一個自動配置的工具來幫助您創建Xorg伺服器配置文件(`xorg.conf`)。您可以通過運行下面的命令來實現自動配置：

    # nvidia-xconfig

該命令會自動檢測並根據現有硬體的情況創建（或修改）`/etc/X11/xorg.conf`。

再一次檢查您的配置文件`/etc/X11/xorg.conf`中的默認色深、水平同步、垂直刷新和解析度是否正確。

### nvidia-settings

nvidia-settings包可以讓你通過 CLI 或者圖形界面配置很多選項。無參數運行`nvidia-settings`會啟動圖形界面版本的配置工具，而 CLI 選項參見nvidia-settings(1)。

你可以以非 root 用戶身份使用 CLI/圖形界面配置工具，並把設置保存到`~/.nvidia-settings-rc`或使用Save to X configuration File按鈕來保存到xorg.conf（用於多用戶環境）。

通過以下命令來為當前用戶加載 `~/.nvidia-settings-rc`：

    $ nvidia-settings --load-config-only

參見 Autostarting 來在每次開機的時候自動執行此命令。

{{注意|

- 在保存了`nvidia-settings`的設置變更之後，Xorg 可能會無法啟動或者啟動時崩潰。修改或者刪掉生成的`~/.nvidia-settings-rc`及（或）Xorg 文件可能能夠恢復正常啟動。

### 手動配置

有些調整項無法通過 #自動配置 或 #nvidia-settings 自動啟用，但可以通過修改你的配置文件來進行配置。Xorg伺服器需要重新啟動以應用這些配置。

參見 NVIDIA Accelerated Linux Graphics Driver README and Installation Guide 來了解更多細節及選項。

#### 最簡配置

用 root 用戶創建一個配置文件`20-nvidia.conf`(或 `/etc/X11/xorg.conf`)：

    /etc/X11/xorg.conf.d/20-nvidia.conf

    Section "Device"
       Identifier     "Device0"
       Driver         "nvidia"
       VendorName     "NVIDIA Corporation"
    EndSection

#### 關閉啟動時的 Logo

如果您使用的是舊版驅動( nvidia-340xx-dkmsAUR )，您可能希望禁用在 X 啟動時顯示的 NVIDIA 徽標啟動畫面。添加`"NoLogo"`選項到`Device`節裡：

    Option "NoLogo" "1"

#### 覆蓋顯示器偵測

`Device`節下面的`"ConnectedMonitor"`選項允許您覆蓋X伺服器在啟動時的顯示器偵測過程，這可能有助於在啟動時節約大量時間。可用的選項包括：`"CRT"`用於模擬信號連接，`"DFP"`用於數字顯示器，`"TV"`用於電視。

下面的例子是強制NVIDIA的驅動繞開啟動檢測並且強制把顯示器識別為DFP：

    Option "ConnectedMonitor" "DFP"

注意： "CRT"適用於所有傳輸模擬信號的15 pin VGA連接器，包括平板顯示器上的VGA接口。"DFP"僅適用於DVI、HDMI和DisplayPort等數位訊號連接器。

#### 啟用亮度控制

本文或本節內容已經過時。

原因： 可能已過時[1], 上游軟體包看起來也很久沒更新了 (在Talk:NVIDIA討論)

添加內核參數：

    nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1

或者，在`Device`節下添加:

    Option "RegistryDwords" "EnableBrightnessControl=1"

如果亮度控制依舊無法生效，請嘗試安裝nvidia-bl-dkmsAUR。

注意：安裝 nvidia-bl-dkmsAUR 會提供 `/sys/class/backlight/nvidia_backlight/` 接口以用於背光亮度控制，但是你的系統可能會繼續發送亮度調整信號到 `/sys/class/backlight/acpi_video0/`。 解決方案之一是監視文件變化，例如為 `acpi_video0/brightness` 添加 inotifywait 並將變化翻譯並寫入 `nvidia_backlight/brightness`。 參見 Backlight#sysfs modified but no brightness change.

#### 啟用 SLI

本文或本節內容已經過時。

原因： 從版本 455.23.04 開始，某些 SLI 模式不再受支持。 (在Talk:NVIDIA討論)
警告：自 GTX 10xx系列（1080、1070、1060等等）開始，僅 2 路 SLI 是受支持的。3 路或 4 路 SLI 或許能夠在 CUDA/OpenCL 應用上使用，但是會讓幾乎所有 OpenGL 應用崩潰。

根據NVIDIA驅動的 README 附錄 B: 這個選項可以在支持的配置中控制 SLI 渲染的相關配置。一個支持的配置是指有一塊 SLI 認證的主板以及 2 或者 3 個 SLI認 證的 GeForce GPU 的計算機。

您可以用`lspci`查找第一個 GPU 的 PCI 總線 ID：

    # lspci -d ::03xx

    00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)
    03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
    04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
    08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)

在`Device`節下添加 BusID（例如前面例子裡的那 3 個）：

    BusID "PCI:3:0:0"

注意：這個格式很重要。BusID的值必須指定為`"PCI:<BusID>:0:0"`的格式。

根據需要的 SLI 渲染模式來添加值到`Screen`節下面：

    Option "SLI" "AA"

下表列出了可用的渲染模式。

Value | Behavior
--- | ---
0, no, off, false, Single | 渲染時僅使用單GPU。
1, yes, on, true, Auto | 啟用SLI並讓驅動自動選擇合適的渲染模式。
AFR | 啟用SLI並使用交替幀渲染模式。
SFR | 啟用SLI並使用分割幀渲染模式。
AA | 啟用SLI和使用SLI抗鋸齒。與全場景反鋸齒結合使用以改善視覺效果。

另外，您可以使用 `nvidia-xconfig` 實用工具來將這些變動寫入`xorg.conf`：

    # nvidia-xconfig --busid=PCI:3:0:0 --sli=AA

從shell來驗證一下SLI是否被啟用：

    $ nvidia-settings -q all | grep SLIMode

       Attribute 'SLIMode' (arch:0.0): AA
        'SLIMode' is a string attribute.
        'SLIMode' is a read-only attribute.
        'SLIMode' can use the following target types: X Screen.

警告：啟用 SLI 之後，你的系統可能會在啟動 xorg 的時候假死、沒有反應。建議你在重啟之前禁用你的顯示管理器。

如果這個配置沒有效果，你可能需要使用 `nvidia-settings` 提供的PCI總線ID：

    $ nvidia-settings -q all | grep -i pcibus

    Attribute 'PCIBus' (host:0[gpu:0]): 101.
      'PCIBus' is an integer attribute.
      'PCIBus' is a read-only attribute.
      'PCIBus' can use the following target types: GPU, SDI Input Device.
    Attribute 'PCIBus' (host:0[gpu:1]): 23.
      'PCIBus' is an integer attribute.
      'PCIBus' is a read-only attribute.
      'PCIBus' can use the following target types: GPU, SDI Input Device.

並將 xorg.d 配置中的 PrimaryGPU 選項注釋掉：

    /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf

    ...

    Section "OutputClass"
    ...
        # Option "PrimaryGPU" "yes"
    ...

使用後面這個配置或許會順便解決任何圖形界面啟動問題。

### 多台顯示器

參見Multihead以獲取更多信息。

#### 使用 nvidia-settings

nvidia-settings 工具可以配置多個監視器。

對於 CLI 配置，首先運行以下命令獲取 `CurrentMetaMode`:

    $ nvidia-settings -q CurrentMetaMode

    Attribute 'CurrentMetaMode' (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}

將 `::` 之後的所有內容保存到屬性末尾（在本例中為：`DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}`），並使用 `nvidia-settings --assign "CurrentMetaMode=your_meta_mode"` 重新配置顯示器。

提示：您可以為所使用的不同監視器和解析度配置創建 shell alias。

#### ConnectedMonitor

本文或本節內容已經過時。

原因： `"TwinView"選項`已在 302.07 版本移除，且TwinView 功能現已默認啟用 (在Talk:NVIDIA討論)

如果驅動程序沒有正確檢測到第二個監視器，則可以使用 ConnectedMonitor 強制設置。

    /etc/X11/xorg.conf

    Section "Monitor"
        Identifier     "Monitor1"
        VendorName     "Panasonic"
        ModelName      "Panasonic MICRON 2100Ex"
        HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option "UseEDIDFreqs" "false"
        VertRefresh     50.0 - 160.0
        Option         "DPMS"
    EndSection

    Section "Monitor"
        Identifier     "Monitor2"
        VendorName     "Gateway"
        ModelName      "GatewayVX1120"
        HorizSync       30.0 - 121.0
        VertRefresh     50.0 - 160.0
        Option         "DPMS"
    EndSection

    Section "Device"
        Identifier     "Device1"
        Driver         "nvidia"
        Option         "NoLogo"
        Option         "UseEDIDFreqs" "false"
        Option         "ConnectedMonitor" "CRT,CRT"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 6200 LE"
        BusID          "PCI:3:0:0"
        Screen          0
    EndSection

    Section "Device"
        Identifier     "Device2"
        Driver         "nvidia"
        Option         "NoLogo"
        Option         "UseEDIDFreqs" "false"
        Option         "ConnectedMonitor" "CRT,CRT"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 6200 LE"
        BusID          "PCI:3:0:0"
        Screen          1
    EndSection

通過添加帶有 `Screen` 選項的重複設備配置，能讓 X 在一張顯卡上使用兩台顯示器而不需要 `TwinView`。注意，`nvidia-settings` 將去掉您添加的任何 `ConnectedMonitor` 選項。

#### TwinView

本文或本節內容已經過時。

原因： `"TwinView"選項`已在 302.07 版本移除，且雙屏支持現已默認啟用 (在Talk:NVIDIA討論)

若你想用一個大屏幕,而不是兩個屏幕.將`TwinView`設為`1`。只有所有顯示器都接到同一張顯卡上時，TwinView 才能工作。

    Option "TwinView" "1"

示例配置：

    /etc/X11/xorg.conf.d/10-monitor.conf

    Section "ServerLayout"
        Identifier     "TwinLayout"
        Screen         0 "metaScreen" 0 0
    EndSection

    Section "Monitor"
        Identifier     "Monitor0"
        Option         "Enable" "true"
    EndSection

    Section "Monitor"
        Identifier     "Monitor1"
        Option         "Enable" "true"
    EndSection

    Section "Device"
        Identifier     "Card0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"

        #refer to the link below for more information on each of the following options.
        Option         "HorizSync"          "DFP-0: 28-33; DFP-1: 28-33"
        Option         "VertRefresh"        "DFP-0: 43-73; DFP-1: 43-73"
        Option         "MetaModes"          "1920x1080, 1920x1080"
        Option         "ConnectedMonitor"   "DFP-0, DFP-1"
        Option         "MetaModeOrientation" "DFP-1 LeftOf DFP-0"
    EndSection

    Section "Screen"
        Identifier     "metaScreen"
        Device         "Card0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "TwinView" "True"
        SubSection "Display"
            Modes          "1920x1080"
        EndSubSection
    EndSection

另請參考設備選項信息

如果您有多個支持 SLI 的顯卡，則可以把多個顯示器接到不同的顯卡上。「MetaModes」選項與 SLI Mosaic 模式配合使用可實現此功能。下面是一個適用於上述情況的配置，它可以完美運行 GNOME。

    /etc/X11/xorg.conf.d/10-monitor.conf

    Section "Device"
            Identifier      "Card A"
            Driver          "nvidia"
            BusID           "PCI:1:00:0"
    EndSection

    Section "Device"
            Identifier      "Card B"
            Driver          "nvidia"
            BusID           "PCI:2:00:0"
    EndSection

    Section "Monitor"
            Identifier      "Right Monitor"
    EndSection

    Section "Monitor"
            Identifier      "Left Monitor"
    EndSection

    Section "Screen"
            Identifier      "Right Screen"
            Device          "Card A"
            Monitor         "Right Monitor"
            DefaultDepth    24
            Option          "SLI" "Mosaic"
            Option          "Stereo" "0"
            Option          "BaseMosaic" "True"
            Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
            SubSection      "Display"
                            Depth           24
            EndSubSection
    EndSection

    Section "Screen"
            Identifier      "Left Screen"
            Device          "Card B"
            Monitor         "Left Monitor"
            DefaultDepth    24
            Option          "SLI" "Mosaic"
            Option          "Stereo" "0"
            Option          "BaseMosaic" "True"
            Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
            SubSection      "Display"
                            Depth           24
            EndSubSection
    EndSection

    Section "ServerLayout"
            Identifier      "Default"
            Screen 0        "Right Screen" 0 0
            Option          "Xinerama" "0"
    EndSection

#### 對於同時擁有AMD核顯和NVIDIA獨立顯卡的用戶

由於NVIDIA自動生成的xorg.conf配置默認不包含AMDGPU這會導致雙屏用戶其中一個屏幕不能顯示 需要先進行自動配置，然後在`/etc/X11/xorg.conf.d/`下新建`20-amdgpu.conf`：

    Section "Device"
         Identifier "AMD"
         Driver "amdgpu"
    EndSection

##### TwinView 和垂直同步

如果您正在使用 TwinView 和垂直同步 (nvidia-settings 中的 Sync to VBlank 選項 ) ，您將注意到只有一個屏幕能正常同步，除非您有兩個相同的顯示器。雖然 nvidia-settings 確實提供了一個選項來更改垂直同步的屏幕 (Sync to this display device 選項 ) ，但這並不總是有效。一個解決方案是在啟動時添加以下環境變量，例如在 `/etc/profile` 中附加 :

    export __GL_SYNC_TO_VBLANK=1
    export __GL_SYNC_DISPLAY_DEVICE=DFP-0
    export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0

你可以把 `DFP-0` 改為你首選要同步的屏幕 (`DFP-0` 是DVI接口， `CRT-0` 是VGA接口). 您可以從 "X Server XVideoSettings" 部分的 nvidia-settings 中找到顯示器的標識符。

##### 用 TwinView 玩遊戲

如果你想在使用 TwinView 時玩全屏遊戲，你會注意到遊戲將兩個屏幕識別為一個大屏幕。雖然這理論上沒問題（因為虛擬 X 屏幕實際上是屏幕大小的總和），但您可能不希望同時在兩個屏幕上顯示。

要糾正 SDL 的這種行為，請嘗試 :

    export SDL_VIDEO_FULLSCREEN_HEAD=1

對於 OpenGL，向 xorg.conf 中添加適當的 Metamode 並重新啟動 X:

    Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;"

另一種可以單獨使用或與上述方法結合使用的方法是在單獨的 X 伺服器中啟動遊戲。

#### 馬賽克拼接模式

馬賽克模式是使用多個顯示器進行跨顯卡合成的唯一方式。您的窗口管理器不一定能區分不同的顯示器。馬賽克模式需要一個有效的 SLI 配置。即使使用基本模式而不使用 SLI，GPU 仍然必須支持 / 兼容 SLI。

##### 基本馬賽克拼接模式

Base Mosaic 模式適用於任何 Geforce 8000 系列或更高版本的 GPU。無法從 nvidia-setting GUI 中啟用它。您必須使用 nvidia-xconfig 命令行程序或手動編輯 `xorg.conf`。必須指定元模式。以下是 2x2 配置中四個 DFP 的示例，每個 DFP 以 1920x1024 運行，兩個 DFP 連接到兩個顯卡：

    # nvidia-xconfig --base-mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"

注意：雖然文檔列出了 2x2 的監視器配置，在基礎馬賽克模式下 GeForce 顯卡被人為限制了只能使用3個顯示器。Quadro 卡支持 3 個以上的顯示器。截至 2014 年 9 月，Windows 驅動程序已取消了這一人為限制，但仍保留在 Linux 驅動程序中。

##### SLI 馬賽克拼接模式

如果您有 SLI 配置，並且每個 GPU 都是 Quadro FX 5800、Quadro Fermi 或更新型號，那麼您可以使用 SLI 馬賽克模式。可以從 nvidia-settings GUI 內或從命令行通過以下方式啟用：

    # nvidia-xconfig --sli=Mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"

## Wayland配置

關於 XWayland，請參閱 Wayland#Xwayland。

有關進一步的配置選項，請查看相應混成器的 wiki 頁面或文檔。

注意：在驅動程序版本 555.xx 之前，或者在使用不支持通過`linux-drm-syncobj-v1`協議進行顯式同步的混成器時，NVIDIA 驅動程序可能會出現嚴重問題，表現為閃爍、幀順序錯亂等，這在原生 Wayland 或 Xwayland 應用程式中均會發生。

### 配置

`nvidia_drm` 模塊有如下兩個可選的內核參數。在使用560.35.03-5或更高版本的nvidia-utils包時，這兩個參數默認已啟用

#### modeset

使用Wayland時，`modeset`必須被啟用。560.35.03-5或更高版本的驅動已經默認啟用了這一設置。

如您使用的是較舊的驅動，您可能需手動啟用 `modeset`，請參閱 #DRM 內核級顯示模式設置和 Wayland系統需求進行配置。

#### fbdev

本文或本節內容已經過時。

原因： 截至linux包 6.14.2 和570.133.07 版本專有驅動，禁用 fbdev 後 Wayland 運行良好，且`cat`命令可能返回`N`，因此本節內容僅適用於較舊版本的驅動程序 (在Talk:NVIDIA討論)

啟用`fbdev`對於某些 Wayland 配置是必要的。

在Linux 6.11以及更高版本上這是一個硬性需求，但目前尚不清楚這是預期行為還是一個錯誤[2]

您可以參考 #DRM 內核級顯示模式設置中的方法進行設置。其區別在於驗證其是否打開時，您需要執行：

    # cat /sys/module/nvidia_drm/parameters/fbdev

如果沒有成功設置，其將返回缺少文件錯誤，而不是`N`。

### 休眠支持

Wayland 的休眠可能比 X 更容易受到默認設置的影響，詳細信息請參見 Tips and tricks#Preserve video memory after suspend。

如您使用 GDM，請參考 GDM#Wayland 與 NVIDIA 專有驅動。

### nvidia-application-profiles-rc.d

某些 Wayland 合成器在默認情況下會占用大量的 VRAM，您可以通過對它們的進程名稱應用 GLVidHeapReuseRatio 應用程式配置鍵來解決這個問題。例如，niri 用戶可通過以下方式釋放 ~2.5GiB 的顯存占用：

    /etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json

    {
        "rules": [
            {
                "pattern": {
                    "feature": "procname",
                    "matches": "niri"
                },
                "profile": "Limit free buffer pool on Wayland compositors"
            }
        ],
        "profiles": [
            {
                "name": "Limit free buffer pool on Wayland compositors",
                "settings": [
                    {
                        "key": "GLVidHeapReuseRatio",
                        "value": 0
                    }
                ]
            }
        ]
    }

## NVswitch

本文或本章節的語言、語法或風格需要改進。參考：幫助:風格

原因：需要多個語法改進，以及關於 fabric manager 的部分應當製作為一個 AUR 包。（在Talk:NVIDIA討論）

對於具有 NVswitch 的系統，例如 AWS 上的 H100x8：

- 安裝 nvidia-fabricmanager

- 安裝所有fabric manager所需要的內核模塊

使用 fabricmanager 時，pytorch 會報告未找到 GPU。

安裝 fabric manager:

1. 從此處下載tarball。

1. 版本 555.42.02 運作良好

1. 修改 sbin/fm_run_package_installer.sh 中的安裝腳本以修復安裝文件路徑

要獲取匹配的內核驅動程序：

1. 克隆 nvidia-beta-dkms 和 nvidia-utils-beta 的 AUR

1. 將 PKGBUILD 更改為使用版本 555.42.02

1. 構建安裝並重啟

隨後運行 `systemctl enable nvidia-fabricmanager` 以及 `systemctl start nvidia-fabricmanager`，現在 pytorch 應當能正確識別到GPU。

## 提示和技巧

參考 NVIDIA/提示和技巧.

## 故障排除

參考 NVIDIA/故障排除.

## 另請參見

- Current graphics driver releases in official NVIDIA Forum
- NVIDIA Developers Forum - Linux Subforum

分類：​

- 圖形
- X 伺服器
- 使用「模板:過時」標記的頁面或章節
- 使用「模板:風格」標記的頁面或章節

NVIDIA
新增話題