> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-5-zhang-xwindow-xi-tong/5.2.-xian-ka-qu-dong.md).

# 5.2.显卡驱动

**摘要**：识别你的显卡，找到提供驱动的 Port，安装它，然后通过 [sysrc(8)](https://man.freebsd.org/cgi/man.cgi?query=sysrc\&sektion=8\&format=html) 启用，以便在后续引导时运行。

在 FreeBSD 能够渲染图形环境之前，需要内核模块来驱动图形处理器。显卡驱动发展迅速且跨平台，因此它们是单独开发和发布的，而不随 FreeBSD 基本系统一起分发。

下表显示了 FreeBSD 支持的不同图形处理器、对应的内核模块以及提供驱动的 Port：

**表 1. 支持的图形设备**

| 类型           | 许可证 | 模块                                       | Port                                                                                                                                                                    |
| ------------ | --- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Intel®       | 开源  | `i915kms`                                | [graphics/drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/drm-kmod/)                                                                                             |
| AMD®         | 开源  | `amdgpu` 或 `radeonkms`                   | [graphics/drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/drm-kmod/)                                                                                             |
| NVIDIA®      | 专有  | `nvidia-drm`、`nvidia-modeset` 或 `nvidia` | [graphics/nvidia-drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/nvidia-drm-kmod/) 或 [x11/nvidia-driver](https://cgit.freebsd.org/ports/tree/x11/nvidia-driver/) |
| 系统控制台帧缓冲     | 开源  | `scfb`                                   | [x11-drivers/xf86-video-scfb](https://cgit.freebsd.org/ports/tree/x11-drivers/xf86-video-scfb/)                                                                         |
| VESA BIOS 扩展 | 开源  | `vesa`                                   | [x11-drivers/xf86-video-vesa](https://cgit.freebsd.org/ports/tree/x11-drivers/xf86-video-vesa/)                                                                         |
| VirtualBox®  | 开源  | `vboxvideo`                              | [emulators/virtualbox-ose-additions](https://cgit.freebsd.org/ports/tree/emulators/virtualbox-ose-additions/)                                                           |
| VMware®      | 开源  | `vmwgfx`                                 | [x11-drivers/xf86-video-vmware](https://cgit.freebsd.org/ports/tree/x11-drivers/xf86-video-vmware/)                                                                     |

支持的驱动技术包括：

* **直接渲染驱动**，支持 PRIME 卸载（offload）。PRIME 能让多个图形处理提供者共存。有关 PRIME 的详细说明，请参见 [显卡配置](/di-5-zhang-xwindow-xi-tong/5.5.-xorg-pei-zhi.md)。
* **内核模式设置（KMS）**，能让驱动直接指定显示模式。使用 [vt(4)](https://man.freebsd.org/cgi/man.cgi?query=vt\&sektion=4\&format=html) 控制台驱动时，这对于支持挂起和恢复是必须的。
* **用户模式设置**，这是最古老的驱动类别，仍然受到支持，但只能用于 [sc(4)](https://man.freebsd.org/cgi/man.cgi?query=sc\&sektion=4\&format=html) 控制台和较旧版本的 [Xorg(1)](https://man.freebsd.org/cgi/man.cgi?query=Xorg\&sektion=1\&format=html) 图形环境。

要识别系统中安装的图形处理器，可以使用以下命令：

```sh
% pciconf -lv | grep -B3 display
```

输出示例：

```sh
vgapci1@pci0:0:2:0:     class=0x030000 rev=0x0c hdr=0x00 vendor=0x8086 device=0x46a6 subvendor=0x1028 subdevice=0x0b29
    vendor     = 'Intel Corporation'
    device     = 'Alder Lake-P GT2 [Iris Xe Graphics]'
    class      = display
```

详细的驱动安装和启用说明在后续小节中给出。

> **警告**
>
> 如果图形处理器不受 Intel®、AMD® 或 NVIDIA® 驱动支持，则应使用 SCFB 或 VESA 模块。UEFI 模式下必须使用 SCFB 模块；BIOS 模式下必须使用 VESA 模块。可用以下命令检查引导模式：
>
> ```sh
> % sysctl machdep.bootmethod
> ```
>
> 输出示例：
>
> ```sh
> machdep.bootmethod: UEFI
> ```

## 5.2.1. Intel® 显卡

[graphics/drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/drm-kmod/) 包间接提供了一系列用于 Intel® 显卡的内核模块。近期版本的这些模块可以与其他图形处理器在 PRIME 中协同使用，无需特殊配置。

安装 Intel® 显卡驱动：

```sh
# pkg install drm-kmod
```

然后通过以下命令将模块添加到 **/etc/rc.conf** 文件：

```sh
# sysrc kld_list+=i915kms
```

## 5.2.2. AMD® 显卡

[graphics/drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/drm-kmod/) 包间接提供一系列 AMD® 图形处理器的内核模块。根据硬件代次，可使用 `amdgpu` 或 `radeonkms` 模块。FreeBSD 项目维护了一份 [AMD 图形支持矩阵](https://wiki.freebsd.org/Graphics/AMD-GPU-Matrix)，显示支持级别并确定应使用的驱动。

安装 AMD® 显卡驱动：

```sh
# pkg install drm-kmod
```

启用当前模块，将其添加到 **/etc/rc.conf**：

```sh
# sysrc kld_list+=amdgpu
```

对于旧型号显卡（HD7000/Tahiti 之前），请启用旧版模块：

```sh
# sysrc kld_list+=radeonkms
```

## 5.2.3. NVIDIA® 显卡

NVIDIA® 生产独立显卡处理器，并为 FreeBSD 提供专有驱动。FreeBSD Ports 提供了十余年的 NVIDIA 显卡驱动支持。

管理员应安装其硬件支持的最新驱动。

支持的 NVIDIA® 驱动版本、内核模块及支持的硬件如下：

**表 2. 支持的 NVIDIA® 显卡驱动版本**

| Port                                                                                                                                                                                          | 模块                              | 支持的硬件                                                                                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | -------------------------------------------------------------------------------------- |
| [graphics/nvidia-drm-kmod](https://cgit.freebsd.org/ports/tree/graphics/nvidia-drm-kmod/)                                                                                                     | `nvidia-drm` 或 `nvidia-modeset` | [supported hardware](https://www.nvidia.com/Download/driverResults.aspx/210651/en-us/) |
| [x11/nvidia-driver-470](https://cgit.freebsd.org/ports/tree/x11/nvidia-driver-470/)                                                                                                           | `nvidia-modeset`                | [supported hardware](https://www.nvidia.com/Download/driverResults.aspx/194639/en-us/) |
| [x11/nvidia-driver-390](https://cgit.freebsd.org/ports/tree/x11/nvidia-driver-390/) 或 [x11/nvidia-secondary-driver-390](https://cgit.freebsd.org/ports/tree/x11/nvidia-secondary-driver-390/) | `nvidia-modeset`                | [supported hardware](https://www.nvidia.com/Download/driverResults.aspx/191122/en-us/) |
| [x11/nvidia-driver-340](https://cgit.freebsd.org/ports/tree/x11/nvidia-driver-340/)                                                                                                           | `nvidia`                        | [supported hardware](https://www.nvidia.com/Download/driverResults.aspx/156167/en-us/) |
| [x11/nvidia-driver-304](https://cgit.freebsd.org/ports/tree/x11/nvidia-driver-304/)                                                                                                           | `nvidia`                        | [supported hardware](https://www.nvidia.com/Download/driverResults.aspx/123712/en-us/) |

安装最新 NVIDIA® 驱动：

```sh
# pkg install nvidia-drm-kmod
```

启用驱动，将模块添加到 **/etc/rc.conf**：

```sh
# sysrc kld_list+=nvidia-drm
```

这是直接渲染的 [KMS](/shu-yu-biao.md) 驱动。

内核模式设置用于在内核中设置显卡模式。通过以下 [loader.conf(5)](https://man.freebsd.org/cgi/man.cgi?query=loader.conf\&sektion=5\&format=html) 可调参数可在后续引导时启用：

```sh
hw.nvidiadrm.modeset="1"
```

PRIME 和 [Wayland](/di-6-zhang-freebsd-zhong-de-wayland/6.1.-wayland-jian-jie.md) 均需要内核模式设置。

旧版本驱动不支持直接渲染。请改用 modesetting 模块，执行以下命令：

```sh
# sysrc kld_list+=nvidia-modeset
```

对于 390 之前版本的 NVIDIA 驱动，请注意它们不支持内核模式设置，因此必须与旧版 [sc(4)](https://man.freebsd.org/cgi/man.cgi?query=sc\&sektion=4\&format=html) 控制台驱动和 1.20 之前版本的 [x11/xorg-server](https://cgit.freebsd.org/ports/tree/x11/xorg-server/) 配合使用。

在 **/etc/rc.conf** 中启用：

```sh
# sysrc kld_list+=nvidia
```

某些显卡需要下载特殊固件才能正常工作。[fwget(8)](https://man.freebsd.org/cgi/man.cgi?query=fwget\&sektion=8\&format=html) 工具可以下载并安装所需文件到 **/boot/firmware** 目录下。[fwget(8)](https://man.freebsd.org/cgi/man.cgi?query=fwget\&sektion=8\&format=html) 会扫描 'PCI' 设备并为需要固件的设备下载相应的固件。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://handbook.bsdcn.org/di-5-zhang-xwindow-xi-tong/5.2.-xian-ka-qu-dong.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
