第 4.1 节 安装显卡驱动及 Xorg(必看)

警告

当前页面的 N 卡驱动部分仍存在问题。无法使用。

警告

对于没有显卡直通的笔记本,必须安装英特尔 drm!

注意

虚拟机显卡驱动看前边的章节,不再赘述。

FreeBSD 已从 Linux 移植了显卡驱动,理论上,绝大部分英特尔核显、A 卡、N 卡均在 AMD64 架构上正常运行。

显卡支持情况

对于 FreeBSD 13.1,编译使用drm-510-kmod,支持情况同 Linux 5.10。AMD 可支持 R7 4750U。

FreeBSD 14.1-RELEASE、14-STABLE(OSVERSION >1400508)、FreeBSD 15 CUEERNT,编译使用 drm-61-kmod,支持情况同 Linux 6.1。

技巧

可以在 port 开发者手册中的最后一章中查询 OSVERSION 对应的版本和 Git 提交。

查看本机 OSVERSION:

root@ykla:~ # uname -U
1500019

安装英特尔核显/AMD 显卡驱动

注意

在使用 Gnome 时,如果自动锁屏/息屏,可能无法再次进入桌面。见 Bug 255049 - x11/gdm doesn't show the login screen

首先切换到 latest 源,或使用 ports 安装:

# pkg install drm-kmod

或者

# cd /usr/ports/graphics/drm-kmod/
# make BATCH=yes install clean

注意

在使用 Ports 时,drm 需要在 /usr/src 中有一份系统源代码。

注意

graphics/drm-kmod 这个包并非真实存在,他只是帮助判断系统版本以安装对应的 port 的元包:

  • FreeBSD 13.X

graphics/drm-510-kmod

  • FreeBSD 14.1 RELEASE、14-STABLE 及 FreeBSD 15 CUEERNT

graphics/drm-61-kmod

注意

像英特尔三代处理器的 HD 4000 这种比较古老的显卡,他在传统的 BIOS 模式下无需额外安装显卡驱动,但是 UEFI 下有可能会花屏(FreeBSD 13.0 及以后无此问题),且需要安装此 DRM 显卡驱动。

配置英特尔核显/AMD 显卡驱动

打开 /etc/rc.conf:

  • 如果为 intel 核芯显卡,添加 kld_list="i915kms"

  • AMD

    • 如果是 HD7000 以后的 AMD 显卡,添加 kld_list="amdgpu"(大部分人应该使用这个,如果没用再换 radeonkms

    • 如果是 HD7000 以前的 AMD 显卡,添加 kld_list="radeonkms"(这是十多年前的显卡了)

故障排除

  • KLD XXX.ko depends on kernel - not available or version mismatch.

提示内核版本不符,请先升级系统或使用 ports 编译安装。

  • /usr/ports/xxx no such xxx

即找不到路径,请先获取 ports,请看前文。

视频硬解

# pkg install xf86-video-intel libva-intel-driver

或者

# cd /usr/ports/x11-drivers/xf86-video-intel/ && make install clean
# cd /usr/ports/multimedia/libva-intel-driver && make install clean

亮度调节

通用

对于一般计算机:

# sysrc -f /boot/loader.conf  acpi_video="YES"

对于 Thinkpad:

# sysrc -f /boot/loader.conf  acpi_ibm_load="YES"
# sysrc -f /boot/loader.conf  acpi_video="YES"

英特尔/AMD

backlight 自 FreeBSD 13 引入。

# backlight          #打印当前亮度
# backlight decr 20  #降低 20% 亮度
# backlight +        #默认调整亮度增加 10%
# backlight -        #默认调整亮度减少 10%

如果上述操作不起作用,请检查路径 /dev/backlight 下都有哪些设备。

  • 示例(照抄不会起作用的,自己 ls /dev/backlight 看看):

# backlight -f /dev/backlight/amdgpu_bl00 - 10
# backlight -f /dev/backlight/backlight0 - 10  

参考文献

笔记本核显 + Nvidia 独显(仍存在问题!不要用)

警告

笔记本电脑一般不能单独用 nvidia 打开 xorg。除非 你的笔记本电脑支持 显卡直通。否则请先按照上部分对核显进行配置。

安装:

# pkg install nvidia-drm-kmod

或者

# cd /usr/ports/graphics/nvidia-drm-kmod/ 
# make install clean

配置:

# sysrc kld_list+="nvidia-drm.ko"
# echo 'hw.nvidiadrm.modeset="1"' >> /boot/loader.conf

查看显卡驱动状态

开机后在 kde 设置里查看显卡,默认用的是 intel 核显,终端里 nvidia-smi 仅有 nvidia-xorg-service 8MB

然后在终端用这个命令调用 N 卡:

$ nvrun 程序名 # 默认无 GUI 运行
$ nvrun-vgl 程序名 # GUI 运行程序

mesa-demos 包含一些 opengl 示例,可用于测试驱动是否可用,非必要安装。

安装包后,若 xorg 启动成功则无需额外配置;若失败,再用 pciconf -lv 查找显卡的 busid,例如

vgapci0@pci0:1:0:0:	class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x0df4 subvendor=0x1043 subdevice=0x15f2
    vendor     = 'NVIDIA Corporation'
    device     = 'GF108M [GeForce GT 540M]'
    class      = display
    subclass   = VGA

/usr/local/etc/X11/xorg-nvidia-headless.conf 找到 Device 一节,并对应修改 BusID ,上面为 ”pci0:1:0:0“:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusID          "PCI:1:0:0"
EndSection

检验是否成功启用独显,可以用 mesa-demos 中的程序测试,运行 bounce,用 nvidia-smi -l 1 观察(每隔一秒刷新一次)。在未使用 nvidia 驱动时会使用 7M 显存,在启用程序时显存并没有变化。

运行 nvrun-vgl bouncenvidia-smi -l 1 观察使用 nvidia 驱动时使用了 13M 显存。

开启 vlc 硬解

安装:

pkg install libva-vdpau-driver libvdpau libvdpau-va-gl

或者

# cd /usr/ports/multimedia/libva-vdpau-driver/ && make install clean
# cd /usr/ports/multimedia/libvdpau/ && make install clean
# cd /usr/ports/multimedia/libvdpau-va-gl/ && make install clean

工具->偏好设置->输入/编解码器->硬件加速解码:选择 VDPAU 视频解码器

nvrun-vgl vlc 启动 vlc,并播放视频

显存使用上升,标志着正在使用硬解。

独显直连/台式机(仍存在问题!不要用)

安装驱动

安装几个 nvidia 相关的包:

# pkg install nvidia-drm-kmod nvidia-settings nvidia-xconfig

技巧

nvidia-drm-kmod 目前依赖安装的 nvidia-driver 默认为 550。

注意

如果 pkg 找不到 graphics/nvidia-drm-kmod 就编译安装,该包提供了 PRIME 等支持。

或者:

# cd /usr/ports/graphics/nvidia-drm-kmod/ && make install clean
# cd /usr/ports/x11/nvidia-settings/ && make install clean
# cd /usr/ports/x11/nvidia-xconfig/ && make install clean
# sysrc kld_list+="nvidia-drm.ko" #配置驱动
# echo 'hw.nvidiadrm.modeset="1"' >> /boot/loader.conf
# reboot #重启

查看驱动状态

这时候应该已经可以驱动显卡了。

查看驱动信息:

$ nvidia-smi

如果发现系统没有使用 nvidia 驱动,需要自动生成配置文件:

# Xorg -configure #生成配置文件。注意,若正常显示无需这步和下步!
# cp /root/xorg.conf.new /etc/X11/xorg.conf

然后重新启动就可以发现正常使用 nvidia 驱动了

技巧

在默认情况下,通过 pkg 安装的 nvidia-driver 是包含 Linux 兼容层支持的, 如果要使用 Linux 兼容层,需要执行以下命令;如果不需要,则无需执行:

# sysrc linux_enable="YES"

当然,如果使用官方的 pkg 软件包,安装好驱动重启后:

$ kldstat

会发现系统自动加载了 linux.ko 模块。如果觉得太臃肿,不需要 Linux 兼容层,可以自己通过 ports 编译 nvidia-driver,去掉 linux compatibility support

xorg

可选软件包:

xorg 完整包: xorg

xorg 最小化包: xorg-minimal(不建议)

安装

通过 pkg 安装

# pkg install xorg

通过 ports 安装

# cd /usr/ports/x11/xorg
# make install clean

故障排除

  • 如果显卡使用驱动有问题请直接联系作者:https://github.com/freebsd/drm-kmod/issues

  • 如果笔记本出现了唤醒时屏幕点不亮的问题,可以在 /boot/loader.conf 中添加 hw.acpi.reset_video="1" 以在唤醒时重置显示适配器。

警告

应该尽量避免试图手动生成 xorg.conf 这个文件。你打不开桌面很大概率不是因为这个文件的配置有问题!你应该去检查显卡驱动或者桌面本身的问题。Xorg 几乎是不会出问题的!

参考文献

最后更新于

FreeBSD 中文社区 2024