FreeBSD桌面–第3部分– X11窗口系统–𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗

2020-11-26 03:08:16

在本文中,我将介绍在FreeBSD上设置X11 Window System。

您可能想查看FreeBSD桌面-全局页面上的FreeBSD桌面系列的其他文章,在这里您可以找到该系列所有片段的链接以及每个片段内容的目录。

我总是觉得X11的配置/设置似乎有些困难或奇怪。我将尝试收集有关FreeBSD操作系统的所有有用信息。 FreeBSD手册5.4中有很多内容。 Xorg配置–部分。

首先,如果您发现任何不受“ intel”或“ nvidia”之类的“加速”驱动程序支持的设备,则在BIOS模式下启动时将使用“ vesa”驱动程序(视频电子标准协会),而您将使用“在UEFI模式下引导时,使用scfb'驱动程序(系统控制台帧缓冲区)。可以通过machdep.bootmethod sysctl(8)参数进行检查。

这样,您将知道在进行故障排除时或仅在运行将使用“ scfb”的ARM系统时使用“ scfb”驱动程序还是“ vesa”驱动程序。

我们将安装X11服务器,XDM登录管理器,XTERM终端仿真器和Openbox窗口管理器。我们还将安装英特尔显卡驱动程序。为此,请在下面输入命令。

当然,您将需要配置网络连接,但是我们在前面的部分中已经进行了介绍。

要使用X11硬件加速,您还需要将常规用户添加到“视频”组中。

切记还要在/etc/login.conf文件中添加UTF-8作为默认编码(charset和lang参数),如下所示。另外,在添加它们之后,以root用户身份运行cap_mkdb /etc/login.conf命令,然后以常规用户身份重新登录。

下面显示了/etc/login.conf文件中需要添加到默认配置文件的行。

(...)默认值:\:passwd_format = sha512:\:copyright = / etc / COPYRIGHT:\:welcome = / etc / motd:\:setenv = MAIL = / var / mail / $,BLOCKSIZE = K:\:路径= / sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin〜/ bin:\:nologin = / var / run / nologin:\:cputime = unlimited:\:datasize = unlimited:\:stacksize = unlimited:\:memorylocked = 64K:\:memoryuse = unlimited:\:filesize = unlimited:\:coredumpsize = unlimited:\:openfiles = unlimited:\:maxproc = unlimited:\:sbsize = unlimited :\:vmemoryuse =无限:\:swapuse =无限:\:pseudoterminals =无限:\:kqueues =无限:\:umtxp =无限:\:priority = 0:\::ignoretime @:\ +:字符集= UTF-8 :\ +:lang = zh_CN.UTF-8:\:umask = 022:(...)

#diff -u login.conf.ORG login.conf --- login.conf.ORG 2018-05-22 07:10:09.864831000 +0200 +++ login.conf 2017-07-07 04:47:04.643412000 +0200 @@ -46,6 +46,8 @@:umtxp = unlimited:\:priority = 0:\::ignoretime @:\ + +:charset = UTF-8:\ +:lang = en_US.UTF-8:\: umask = 022:

必须在〜/ .xinitrc文件的开头添加UTF-8编码(与/etc/login.conf文件中的lang参数相同),如下所示:

2010年,英特尔推出了Nehalem架构,该架构在CPU中集成了GPU(以及自2003年以来AMD在CPU中拥有的内存控制器)。这意味着大多数计算机/笔记本电脑/服务器(英特尔拥有约80%的市场份额)将集成X11英特尔驱动程序应支持的集成GPU,并且:

'drm-next-kmod'软件包可用于FreeBSD 12-CURRENT开发分支和即将推出的FreeBSD 11.2-RELEASE(当前处于BETA2阶段),您可以在https://lists.freebsd.org上的FreeBSD邮件列表中阅读其相关内容。 /pipermail/freebsd-stable/2018-February/088406.html和https://svnweb.freebsd.org/ports?view=revision&revision=462202。

您可能会使用内置的KMS模块,该模块是/boot/kernel/i915kms.ko文件。您可以在/boot/loader.conf(在引导菜单中加载)或/etc/rc.conf主FreeBSD配置文件中配置此模块的加载-这将在启动过程中加载模块。我更喜欢第二种选择,因为从/etc/rc.conf文件加载内核模块以及启动所需的服务然后从/boot/loader.conf文件一个接一个地装载它们时,FreeBSD系统的启动速度更快。为了将系统启动时间降至最短,我们将仅配置一个内核模块以从/boot/loader.conf文件进行加载-ZFS模块的zfs_load = YES行。

如果您发现基本系统的KMS模块不支持您的图形卡,那么您将不得不尝试'drm-next-kmod'软件包以获得最新的Intel图形芯片支持,有时需要运行FreeBSD CURRENT版本,该版本没问题,您将立即获得所有新东西作为奖励😉

要将KMS(内核模式设置)英特尔模块添加到/etc/rc.conf文件中,请在其下面添加一行。

我们还可以添加其他有用的内核模块加载,例如保险丝(用于外来文件系统),aesni(如果您的CPU具有这些扩展名,则用于加密加速),geom_eli(用于加密本身)或coretemp(用于温度传感器)。我将在未来的系列中介绍所有这些内核模块,并给出确切的解释。

如果需要使用“ drm-next-kmod”模块而不是基本系统模块,则/etc/rc.conf文件如下所示。

如果您发现'drm-next-kmod'仍不支持您的最新显卡,则可以尝试使用最新版本的'drm-next-kmod'。当前的'drm-next-kmod'在图形支持方面与Linux 4.11相当,最新的WIP(正在进行中)树位于4.15,因此无论如何都可以启用某些图形卡,这里是– https: //github.com/FreeBSDDesktop/freebsd-base-graphics/tree/drm-v4.15-WIP –使用后果自负。 😉

从历史上看,您将创建整个/etc/X11/xorg.conf文件,其中将包括完整的X11 Window System配置。最近,为了符合FreeBSD hier(7)目录结构和逻辑,还可以将其配置为/usr/local/etc/X11/xorg.conf文件……甚至最近,您也可以仅配置X11服务器的这些部分而无需接触其他部分。这种“个人”配置是在/usr/local/etc/X11/xorg.conf.d目录中完成的,其中每个设置都有单独的文件,例如用于显卡配置的card.conf。

由于后一种方法是最现代的方法,因此在以后的安装中,我们将在本指南中使用该方法。

DontZap选项用于使用[CTRL] + [ALT] + [BACKSPACE]快捷方式启用X11服务器中止。当没有其他选项起作用时,我发现它很有用。仅X11服务器需要重新启动。我当然可以通过SSH登录到这台笔记本电脑并杀死所需的进程,但是我没有随身携带两台笔记本电脑来为这种情况做准备😉

接下来,我们将为键盘配置波兰语布局和两个附加选项,Terminate:ctrl_alt_bksp允许使用[CTRL] + [ALT] + [BACKSPACE]快捷方式终止X11服务器,而ctrl:nocaps则忽略Caps Lock键,因为我也是如果没有用,那么请不要使用该选项。

最后一个是图形卡配置,我们将在此处放置“ intel”,因为它完全支持我们的图形。

请记住不要在“ intel”驱动程序卡上启用SNA加速方法(选项“ AccelMethod”“ sna”),因为它会阻止挂起/恢复工作。我们还将使DPMS尽可能节省功率。

您还必须决定如何启动X11 Window Server,可以登录计划文本控制台,然后键入xinit(1)或startx(1)来读取〜/ .xinitrc配置和守护程序,或者您可能想要成功登录后,使用带有〜/ .xsession配置的Xdm / sddm / slim等X11登录管理器进行加载。 xinit和startx之间的区别在于,startx命令使用-nolisten tcp之类的参数执行xinit命令,例如,不监听外部连接。启动另一层二进制文件(startx)只是为了将参数传递给command是没有意义的,因此我们将省略startx并直接使用合适的别名转到xinit命令。

哪个更好–是某些登录管理器还是直接使用xinit启动X11?两者都很好,仅取决于您的喜好。例如,我使用文本登录,然后在xinit命令中键入“ x”作为别名,最近切换到xdm以及〜/ .xsession的符号链接,这导致了非常相似的〜/ .xinitrc文件,并且也喜欢它。

当我使用xinit直接启动X11服务器时,我使用别名来通过以下参数对xinit进行操作:

当然,我将该别名保留在〜/ .zshrc文件中(用于ZSH shell),因此,每次我在文本控制台中登录时,只要键入“ x”,X11会话就开始读取〜/ .xinitrc文件的内容。

当xinit基于〜/ .xinitrc文件运行命令时,XDM登录管理器将查找〜/ .xsession文件。由于无论启动方法如何,您都将加载相同的内容,因此我们将创建〜/ .xsession的链接,该链接指向〜/ .xinitrc文件。这样,无论您选择哪种方法,您都将始终以启动的X11会话结束。

%ln -s〜/ .xinitrc〜/ .xsession%ls -l〜/ .xsessionlrwxr-xr-x 1 vuk vuk 8 2018.05.22 00:27 .xsession-> .xinitrc

关于〜/ .xinitrc(或〜/ .xsession)文件的另一种情况。它被解释为shell脚本(是的,您可以在if / then / else / fi和case / esac或for /的同时执行POSIX shell脚本),但是它不需要可执行。该文件中的最后一个命令一定不要放在后台(末尾必须不带&char),因为X11会话将结束。

我为XDM登录管理器准备了两个漂亮的主题,第一个使用黑色背景和灰色/白色字体。

要配置此黑色XDM主题,您将需要修改两个文件的内容,如下所示。

这样,我们将在:0 X11服务器的登录屏幕上设置黑色背景,这是默认背景。

#cat /usr/local/etc/X11/xdm/Xresourcesxlogin.Login.greeting:xlogin.Login.unsecureGreeting:xlogin.Login.fail:Fail.xlogin.Login.changePasswdMessage:Change.xlogin.Login.namePrompt:用户名:xlogin .login.passwd提示:密码:xlogin.Login.echoPasswd:truexlogin.Login。背景:blackxlogin.Login.foreground:whitexlogin.Login.failColor:#ccccccxlogin.Login.inpColor:blackxlogin.Login.promptColor:#aaaaaaxlogin.Login。 :courier:size = 13:style = Boldxlogin.Login.failFace:courier:size = 13:style = Boldxlogin.Login.promptFace:courier:size = 13:style = Normalxlogin.Login.greetFace:courier:size = 13xlogin.Login。 。宽度:400

…其余的XDM登录管理器配置保存在Xresources文件中,至少是外观部分😉

想知道当我们在* face选项中放置“ courier”时会选择哪种字体吗?让我们使用fc-match(1)命令进行检查。

您有答案,您不必总是在配置文件中键入整个字体名称。

如果您不喜欢黑色XDM主题,那么灰色主题可能会更适合您的口味。

#cat /usr/local/etc/X11/xdm/Xresourcesxlogin.Login.greeting:xlogin.Login.unsecureGreeting:xlogin.Login.fail:Fail.xlogin.Login.changePasswdMessage:Change.xlogin.Login.namePrompt:用户名:xlogin .login.passwd提示:密码:xlogin.Login.echoPasswd:truexlogin.Login。背景:gray50xlogin.Login。前景:whitexlogin.Login.failColor:#ddddddxlogin.Login.inpColor:gray50xlogin.Login.Login.promptColor:#ccccccxlogin。 :gray50xlogin.Login.promptColor gray50xlogin.Login.hiColor gray50xlogin.Login.shdColor gray50xlogin.Login.face:courier:size = 13:style = Boldxlogin.Login.failFace:courier:size = 13:style = Boldxlogin.Login.promptFace: courier:size = 13:style = Boldxlogin.Login.greet面孔:courier:size = 13:style = Boldxlogin.Login.frameWidth:0xlogin.Login.innerFramesWidth:0xlogin.Login.sepWidth:0xlogin.Login.width:32768xlogin.Login。高度:32768xlogin.Login.x:0xlogin.Login.y:0

…并了解XDM主题限制,我们将自定义模拟全屏灰色。这种方法的唯一缺点是,“用户名”和“密码:”字段将放置在屏幕的顶部/左侧。

最后但并非最不重要的一点,我们将使用Openbox窗口管理器,预启动的xterm终端和黑色背景为我们的简单会话配置简单的〜/ .xinitrc文件。

%cat〜/ .xinitrc#使用LC_ALL VARIABLE设置正确的语言环境(1)。导出LC_ALL = zh_CN.UTF-8#预启动的应用程序xterm和xsetroot-纯黑&#WINDOW MANAGER openbox

尽管还不是很漂亮,但是我们将在本系列的后面部分进行介绍。

“ Xorg现在有一个devd(8)后端,它可以用来获取有关热插拔设备的信息,而不是hald(8):https://lists.freebsd.org/pipermail/freebsd-x11/2017-March/018978.html即使没有moused(8),对我来说也能正常工作。”

感谢您提供该信息,也可以通过检查X11日志/var/log/Xorg.0.log文件来验证这一点。

#grep devd /var/log/Xorg.0.log [96890.425](II)服务器依靠devd提供输入设备的列表。如果没有可用的设备,则重新配置devd或禁用AutoAddDevices。[96890.955](II)config / devd:探测输入设备... [96890.955](II)config / devd:添加输入设备(空)(/ dev / kbdmux) [96890.956](**)选项“ config_info”“ devd:kbdmux” [96890.960](II)config / devd:启用kbdmux,忽略设备ukbd0 [96890.960](II)config / devd:启用kbdmux,忽略设备atkbd0 [96890.960](II)config / devd:添加输入设备(空)(/ dev / sysmouse)[96890.961](**)选项“ config_info”“ devd:sysmouse” [96890.962](II)config / devd:设备/ dev / ums0已打开[96890.962](II)config / devd:设备/ dev / psm0已打开

“如果您使用i915kms内核模块,则无需安装xf86-video-intel,这是X服务器中内置的具有模式设置功能的通用DDX驱动程序,可以很好地完成工作。正如您提到的,xf86-video-intel甚至可能会给您造成麻烦,例如,当我安装xf86-video-intel时,我的x230正在重新启动而不是挂起(我安装了它是为了使用xf86解决xfwm4的撕裂问题-video-intel的SNA加速)。现在卸下后,我的x230不会出现任何问题。”

我已经尝试过使用“ modesetting”驱动程序进行以下配置,并且可以正常使用。我对“英特尔”驱动程序也没有任何问题,但是我会坚持使用“模式设置”驱动程序一段时间,以查看其在我的计算机上的运行情况。

#grep -c英特尔/var/log/Xorg.0.log98# grep -c模式集/var/log/Xorg.0.log8# grep DRI /var/log/Xorg.0.log [95305.483](II)英特尔(0):[DRI2]设置完成[95305.483](II)intel(0):[DRI2] DRI驱动程序:i965 [95305.483](II)intel(0):[DRI2] VDPAU驱动程序:va_gl [95305.484](II )intel(0):DRI2:启用[95305.484](II)intel(0):DRI3:禁用[95305.549](II)GLX:屏幕0的初始化DRI2 GL提供程序

#grep -c intel /var/log/Xorg.0.log0# grep -c modeset /var/log/Xorg.0.log80# grep DRI /var/log/Xorg.0.log [95556.446](II)魅力:EGL版本1.4(DRI2):[95556.671](II)模式集(0):[DRI2]设置完成[95556.671](II)模式集(0):[DRI2] DRI驱动程序:i965 [95556.671](II)模式集( 0):[DRI2] VDPAU驱动程序:i965 [95556.714](II)GLX:屏幕0的已初始化DRI2 GL提供程序

“如果修改/etc/login.conf,则将修改所有用户所属的默认登录类的系统范围语言环境(例如,对于Apache也使用用户www)。”

当然,我们可以为X11 Window System创建专用的登录类,因为我们已经使用了组视频,所以我们将为X11 Window System创建video:登录类。

我假设未更改default:登录类–如果您已经使用lang和charset选项对其进行了修改,请将其删除。

将FreeBSD从12.1-RELEASE升级到12.2-RELEASE后,点击以单击(不仅是ThinkPad W520机器上的我的触摸板停止工作。

#pkg install xf86-input-synaptics#cat /usr/local/etc/X11/xorg.conf.d/touchpad.confSection“ InputClass”标识符“ touchpad” MatchIsTouchpad“ on”驱动程序“ libinput”选项“ Tapping “” on“ EndSectionBSD

完成这些步骤后,请重新启动X11服务器,然后单击以再次单击即可正常工作。