Nouveau (简体中文) - ArchWiki

# Nouveau (简体中文)

相关文章

- NVIDIA
- Xorg

本文包含安装和配置NVIDIA显卡开源驱动 Nouveau 的内容. 有关官方闭源驱动的信息请查看NVIDIA.

## 安装

安装 xf86-video-nouveau 包, 它会引入 mesa，为DRI驱动提供3D加速功能

为x86_64提供32-bit支持, 请从multilib源中安装lib32-mesa。

## 加载

Nouveau的内核模块应该在系统启动时就已加载完成。 如果没有的话：

- 确保你的内核参数中没有`nomodeset` 或者 `vga=`， 因为Nouveau需要内核模式设置才能成功运行（见下文）。
- 另外，确保你没有在`/etc/modprobe.d/`中通过modprobe名单禁用Nouveau。

### 提前启动KMS

Tip: 如果你对这个问题的解决有问题的话，请访问这个页面.

Nouveau 驱动依赖Kernel Mode Setting (KMS)。当系统启动时，由于KMS初始化显示驱动程序可能会使分辨率发生改变。只需要安装Nouveau驱动，足以使系统能够识别并使用"延迟启动"模式初始化它。查看 Nouveau KernelModeSetting page[dead link 2013-05-20] 获取更多细节

Note: 用户可能会更喜欢提前启动的方法，因为它不会在引导过程中产生讨厌的分辨率变化问题

这种方法会在initramfs加载后尽可能早的启动KMS。 为了实现这个，可以在`/etc/mkinitcpio.conf`的`MODULES` 数组中添加 `nouveau`：

    MODULES="... nouveau ..."

如果你使用了一个自定义的EDID文件，你应该像这样把它加入到initramfs 中：

    /etc/mkinitcpio.conf

    FILES="/lib/firmware/edid/your_edid.bin"

重新生成初始ramdisk映像：

    # mkinitcpio -p <kernel preset; e.g. linux>

如果你的Nouneau出问题了，导致你不得不多次重建nouveau-drm去测试，请不要在initramfs中添加`nouveau` ，那样太容易因为忘记重建initramfs而使测试更加艰难。仅仅使用“延迟启动”知道你能确保你的系统已经稳定。如果你需要自定义固件，使用initrams可能会有更多问题（一般不建议）

## 提示与技巧

### 保留已安装的Nvidia驱动

如果你想保留已经安装的官方驱动但又想要使用Nouveau驱动，像下面注释掉`/etc/modprobe.d/nouveau_blacklist.conf` 中的内容

    #blacklist nouveau

并通过新建文件`/etc/X11/xorg.conf.d/20-nouveau.conf` 来告诉Xorg引导Nouveau驱动而不是Nvidia驱动，文件内容如下:

    Section "Device"
        Identifier "Nvidia card"
        Driver "nouveau"
    EndSection

Tip: 如果你需要经常性在两种驱动间切换，你可以使用 这些脚本.

如果你已经安装了官方驱动，又想在不重启的情况下测试Nouveau驱动，请确保‘nvidia’模块未被加载：

    # rmmod nvidia

然后加载'nouveau' 模块:

    # modprobe nouveau

并且通过内核信息确保它已被正常加载:

    $ dmesg

### 安装最新的开发包

你可以通过AUR安装最新的git包：

- 你可以通过mesa-gitAUR安装最新的Mesa（包含最新的DRI驱动）。
- 你可以通过xf86-video-nouveau-gitAUR[broken link: archived in aur-mirror] 安装最新的DDX驱动。
- 你也可以尝试安装像 linux-mainlineAUR 这样比较新的内核版本，这可能会带来更好的性能。
- 要获得Nouveau最新的更新, 你应该使用AUR中的linux-gitAUR 包，并且编辑PKGBUILD 以使用Nouveau自己的内核库，目前它位于： git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau.

你可以在 Nouveau Source page找到上游驱动源.

### Tear-free compositing

编辑`/etc/X11/xorg.conf.d/20-nouveau.conf`, 并在`Device` 部分添加以下内容:

    Section "Device"
        Identifier "nvidia card"
        Driver "nouveau"
        Option "GLXVBlank" "true"
    EndSection

### 双输出

Nouveau 支持xrandr拓展和多显示器，教程详见RandR12

这是一个完整的例子 `/etc/X11/xorg.conf.d/20-nouveau.conf` 用来演示在双输出模式下运行两个显示器。当然，你可能更喜欢像GNOME显示控制中心 (`gnome-control-center display`)这样的图形化配置工具.

    # the right one
    Section "Monitor"
              Identifier   "NEC"
              Option "PreferredMode" "1280x1024_60.00"
    EndSection

    # the left one
    Section "Monitor"
              Identifier   "FUS"
              Option "PreferredMode" "1280x1024_60.00"
              Option "LeftOf" "NEC"
    EndSection

    Section "Device"
        Identifier "nvidia card"
        Driver "nouveau"
        Option  "Monitor-DVI-I-1" "NEC"
        Option  "Monitor-DVI-I-2" "FUS"
    EndSection

    Section "Screen"
        Identifier "screen1"
       Monitor "NEC"
        DefaultDepth 24
          SubSection "Display"
           Depth      24
           Virtual 2560 2048
          EndSubSection
        Device "nvidia card"
    EndSection

    Section "ServerLayout"
        Identifier "layout1"
        Screen "screen1"
    EndSection

### 设置控制台分辨率

使用fbset工具调整控制台分辨率. 你也可以通过 video= kernel 这样的选项来调整控制台分辨率 (详见 KMS).

### 电源管理

GPU缩放依赖于GPU上的各个阶段的准备。 查看 Nouveau PowerManagement page 以获得更多细节。

### 启用 MSI (Message Signaled Interrupts)

这可能会有轻微的性能提高，不过只支持NV50以后的显卡，并且默认是禁用的。

Warning: 这可能会导致一些主板/GPU的不稳定！

配置文件位于： `/etc/modprobe.d/nouveau.conf`:

    options nouveau msi=1

如果使用 提早启动, 把 `FILES="/etc/modprobe.d/nouveau.conf"` 这行加入到 `/etc/mkinitcpio.conf`中, 然后重建内核镜像:

    # mkinitcpio -p <kernel preset; e.g. linux>

重启系统使更改生效.

## 故障排除

添加以下内容到内核命令(如果使用grub启动，在启动菜单下按`e`)来打开视频调试:

    drm.debug=14 log_buf_len=16M

建立详细的Xorg日志：

    startx -- -logverbose 9 -verbose 9

查看加载的视频模块的参数和值：

    modinfo -p video

Categories:

- Graphics (简体中文)
- X server (简体中文)

Hidden categories:

- Pages with dead links
- Pages with broken package links