.. _freebsd_xfce4: ================== FreeBSD XFCE桌面 ================== .. note:: 目前我比较倾向于使用基于 :ref:`wayland` 的 :ref:`freebsd_sway` ,所以本文仅做记录备用,后续可能再做实践... 不过,wayland也因为是比较新的图形技术,尚有很多传统图形程序没有移植支持,所以必要时可能还会使用XFCE4桌面 我在完成 :ref:`freebsd_nvidia-driver` 安装之后,尝试使用 :ref:`freebsd_sway` ,也会在后续实践中尝试本文XFCE4图形桌面: - 安装XFCE:: pkg install xorg xfce xfce4-goodies lightdm lightdm-gtk-greeter dbus 软件包说明: .. csv-table:: XFCE4软件包说明 :file: freebsd_xfce4/xfce4_pkg.csv :widths: 30, 70 :header-rows: 1 - :ref:`freebsd_nvidia-driver` 安装配置 - 启动:: startxfce4 报错,检查 ``/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`` 。难怪之前 :ref:`freebsd_sway` 和 :ref:`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`` 默认已经加载了 .. note:: 参考 `How To Fix No Screen Found Xorg Error On FreeBSD [Dual GPU] `_ 和 `xorg fails to start on freebsd even after installing nvidia and drm-kmod `_ 不过,虽然解决了 :ref:`freebsd_nvidia-driver` 的版本问题,但是运行 :ref:`freebsd_sway` 和 :ref:`freebsd_hikari` 报错依旧 配置Greeter和LightDM ======================= - 修改 ``/usr/local/etc/lightdm/lightdm.conf`` 启用:: greeter-session = lightdm-gtk-greeter - 修改 ``/etc/rc.conf`` 添加:: lightdm_enable="YES" 参考 ====== - `Install FreeBSD with XFCE and NVIDIA Drivers [2021] `_