FreeBSD XFCE桌面

备注

目前我比较倾向于使用基于 wayland显示服务器协议 的 FreeBSD Sway桌面 ,所以本文仅做记录备用,后续可能再做实践…

不过,wayland也因为是比较新的图形技术,尚有很多传统图形程序没有移植支持,所以必要时可能还会使用XFCE4桌面

我在完成 FreeBSD NVIDIA驱动 安装之后,尝试使用 FreeBSD Sway桌面 ,也会在后续实践中尝试本文XFCE4图形桌面:

  • 安装XFCE:

    pkg install xorg xfce xfce4-goodies lightdm lightdm-gtk-greeter dbus
    

软件包说明:

XFCE4软件包说明

软件包

说明

xorg

X显示服务器

xfce

xfce桌面

xfce4-goodies

xfce桌面的应用以及美化

lightdm

图形桌面管理器

lightdm-gtk-greeter

传统GDM启发而来的高度可配置登陆屏幕

dbus

提供两个应用程序间一对一通讯

报错,检查 /var/log/Xorg.0.log 有如下错误:

[   676.058 ] (II) LoadModule: "glx"
[   676.058 ] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[   676.059 ] (II) Module glx: vendor="X.Org Foundation"
[   676.059 ]    compiled for 1.21.1.4, module version = 1.0.0
[   676.059 ]    ABI class: X.Org Server Extension, version 10.0
[   676.059 ] (II) LoadModule: "nvidia"
[   676.059 ] (II) Loading /usr/local/lib/xorg/modules/drivers/nvidia_drv.so
[   676.059 ] (II) Module nvidia: vendor="NVIDIA Corporation"
[   676.059 ]    compiled for 1.6.99.901, module version = 1.0.0
[   676.059 ]    Module class: X.Org Video Driver
[   676.059 ] (II) NVIDIA dlloader X Driver  510.60.02  Wed Mar 16 11:07:20 UTC 2022
[   676.059 ] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[   676.059 ] (--) Using syscons driver with X support (version 2.0)
[   676.059 ] (--) using VT number 9

[   676.059 ] (II) Loading sub module "fb"
[   676.060 ] (II) LoadModule: "fb"
[   676.060 ] (II) Module "fb" already built-in
[   676.060 ] (II) Loading sub module "wfb"
[   676.060 ] (II) LoadModule: "wfb"
[   676.060 ] (II) Loading /usr/local/lib/xorg/modules/libwfb.so
[   676.060 ] (II) Module wfb: vendor="X.Org Foundation"
[   676.060 ]    compiled for 1.21.1.4, module version = 1.0.0
[   676.060 ]    ABI class: X.Org ANSI C Emulation, version 0.4
[   676.060 ] (II) Loading sub module "ramdac"
[   676.060 ] (II) LoadModule: "ramdac"
[   676.060 ] (II) Module "ramdac" already built-in
[   676.060 ] (WW) NVIDIA(0): The NVIDIA GeForce GT 750M GPU installed in this system is
[   676.060 ] (WW) NVIDIA(0):     supported through the NVIDIA 470.xx Legacy drivers. Please
[   676.060 ] (WW) NVIDIA(0):     visit http://www.nvidia.com/object/unix.html for more
[   676.060 ] (WW) NVIDIA(0):     information.  The 510.60.02 NVIDIA driver will ignore this
[   676.060 ] (WW) NVIDIA(0):     GPU.  Continuing probe...
[   676.060 ] (EE) No devices detected.
[   676.060 ] (EE)
Fatal server error:
[   676.060 ] (EE) no screens found(EE)
[   676.060 ] (EE)

奇怪,已经加载 nvidia 模块,为何显示没有检测到设备… 仔细看了一下,原来我的显卡 NVIDIA GeForce GT 750M GPU 太古老了,已经被最新的 510.60.02 放弃支持了,需要回退到 NVIDIA 470.xx Legacy drivers 。难怪之前 FreeBSD Sway桌面 和 FreeBSD hikari桌面 都失败了

参考 NVIDIA Unix Driver Archive 可以看到,对于 FreeBSD x86 ,最新的 Latest Legacy GPU version (470.xx series) : 470.141.03

搜索一下,在FreeBSD仓库,则是 nvidia-driver-470-470.129.06 (之前安装了最新的 nvidia-driver-510.60.02 ):

pkg delete nvidia-driver-510.60.02

pkg install nvidia-driver-470-470.129.06

然后重启系统,再次重试成功

结束X后黑屏

我遇到一个问题,就是启动 startxfce4 之后,结束会话会出现黑屏

  • 检查显卡所在pci位置:

    # pciconf -l | grep vga
    vgapci0@pci0:1:0:0:  class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x0fe9 subvendor=0x106b subdevice=0x0130
    

则修改 /etc/X11/xorg.conf

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    # 添加以下这行
    BusID          "PCI:1:0:0"
EndSection

添加 BusID 时候,不要在PCI 包含domain ID,也就是说 pci0:1:0:0 写成 PCI:1:0:0

不过,仅仅上述修改还没有解决问题,真正解决问题是修订了 /etc/rc.conf ,将:

kld_list="nvidia-modeset"

修改为:

linux_enable="YES"
dbus_enable="YES"
hald_enable="YES"
lightdm_enable="YES"
kld_list="nvidia nvidia-modeset linux"

才解决: 现在启动时候就是 lightdm ,并且退出也能够正常回到窗口管理器。我感觉关键行是:

dbus_enable="YES"
hald_enable="YES"

因为在此之前我检查过 kldstat 输出,原本就已经加载了:

linux
nvidia
nvidia-modeset

也就是说 kld_list 默认已经加载了

不过,虽然解决了 FreeBSD NVIDIA驱动 的版本问题,但是运行 FreeBSD Sway桌面 和 FreeBSD hikari桌面 报错依旧

配置Greeter和LightDM

  • 修改 /usr/local/etc/lightdm/lightdm.conf 启用:

    greeter-session = lightdm-gtk-greeter
    
  • 修改 /etc/rc.conf 添加:

    lightdm_enable="YES"
    

参考