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"
    

参考