source: x/installing/xorg-server.xml@ 7a5f864

12.2 lazarus trunk
Last change on this file since 7a5f864 was d4dc5bae, checked in by Bruce Dubbs <bdubbs@…>, 5 weeks ago

Tag Chapter 24 - Graphical Environments and related packages.

  • Property mode set to 100644
File size: 15.9 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY xorg-server-download-http "&xorg-download-http;/xserver/xorg-server-&xorg-server-version;.tar.xz">
8 <!ENTITY xorg-server-download-ftp " ">
9 <!ENTITY xorg-server-md5sum "69dbed93746d0af6b46de76d711614e4">
10 <!ENTITY xorg-server-size "4.7 MB">
11 <!ENTITY xorg-server-buildsize "147 MB (with tests)">
12 <!ENTITY xorg-server-time "0.3 SBU (using parallelism=4; with tests)">
13 <!ENTITY modesetting_drv
14 "<filename class='libraryfile'>modesetting_drv</filename>">
15 <!ENTITY BLFS113 "https://www.linuxfromscratch.org/blfs/view/11.3/x/x7driver.html">
16 <!ENTITY BLFS76 "https://www.linuxfromscratch.org/blfs/view/7.6/x/x7driver.html">
17]>
18
19<sect1 id="xorg-server" xreflabel="Xorg-Server-&xorg-server-version;">
20 <?dbhtml filename="xorg-server.html"?>
21
22
23 <title>Xorg-Server-&xorg-server-version;</title>
24
25 <indexterm zone="xorg-server">
26 <primary sortas="a-xorg-server">xorg-server</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to Xorg Server</title>
31
32 <para>
33 The <application>Xorg</application> Server is the core
34 of the X Window system.
35 </para>
36
37 &lfs122_checked;
38
39 <bridgehead renderas="sect3">Package Information</bridgehead>
40 <itemizedlist spacing="compact">
41 <listitem>
42 <para>
43 Download (HTTP): <ulink url="&xorg-server-download-http;"/>
44 </para>
45 </listitem>
46 <listitem>
47 <para>
48 Download (FTP): <ulink url="&xorg-server-download-ftp;"/>
49 </para>
50 </listitem>
51 <listitem>
52 <para>
53 Download MD5 sum: &xorg-server-md5sum;
54 </para>
55 </listitem>
56 <listitem>
57 <para>
58 Download size: &xorg-server-size;
59 </para>
60 </listitem>
61 <listitem>
62 <para>
63 Estimated disk space required: &xorg-server-buildsize;
64 </para>
65 </listitem>
66 <listitem>
67 <para>
68 Estimated build time: &xorg-server-time;
69 </para>
70 </listitem>
71 </itemizedlist>
72
73 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
74 <itemizedlist spacing="compact">
75 <listitem>
76 <para>
77 With the removal of the xf86-video-* drivers, the TearFree option
78 is no longer functional. To work around this, upstream has added the
79 TearFree option to the default modesetting driver. This patch
80 backports this feature. Apply this patch if you are going to use Xorg
81 in an environment without a compositor (such as TWM, IceWM, Openbox,
82 or Fluxbox).
83 </para>
84 <para>
85 Optional patch:
86 <ulink url="&patch-root;/xorg-server-&xorg-server-version;-tearfree_backport-2.patch"/>
87 </para>
88 </listitem>
89 </itemizedlist>
90
91 <bridgehead renderas="sect3">Xorg Server Dependencies</bridgehead>
92
93 <bridgehead renderas="sect4">Required</bridgehead>
94 <para role="required">
95 <xref linkend="libxcvt"/>,
96 <xref linkend="pixman"/>,
97 <xref linkend="xorg7-font"/> (only font-util), and at runtime:
98 <xref role="runtime" linkend="xkeyboard-config"/>
99 </para>
100
101 <bridgehead renderas="sect4">Recommended</bridgehead>
102 <para role="recommended">
103 <phrase revision="sysv"><xref linkend='dbus'/>,
104 <xref role="runtime" linkend="elogind"/> (runtime;
105 <systemitem class='library'>libelogind</systemitem> also referred
106 at build time but it's not really useful),</phrase>
107 <xref linkend="libepoxy"/> (needed for glamor),
108 <xref linkend="libtirpc"/>,
109 <phrase revision="systemd"><xref role="runtime"
110 linkend="systemd"/> (runtime),</phrase>
111 and <xref role='runtime' linkend='xorg-libinput-driver'/> (runtime)
112 </para>
113
114 <!-- TODO: Add -D systemd_logind=yes explicitly (like -D glamor=true) to
115 make this more clear for BLFS 12.2. Now (Feb 16 2024) this package
116 is already under 12.1 freeze. -->
117 <note>
118 <para>
119 Although it's possible to<phrase revision='sysv'> build this package
120 without <xref linkend='dbus'/> installed or</phrase> run the Xorg
121 server without
122 <phrase revision='sysv'><xref linkend='elogind'/></phrase><phrase
123 revision='systemd'><xref linkend='systemd'/>
124 (rebuilt with PAM)</phrase> functioning, it would require running
125 the Xorg server as the &root; user or Xorg server will malfunction
126 or even fail to start. The BLFS editors strongly discourage
127 skipping <phrase revision='sysv'>these two
128 dependencies</phrase><phrase revision='systemd'>this
129 dependency</phrase>. Do not attempt to do so unless you really know
130 what you are doing.
131 </para>
132 </note>
133
134 <bridgehead renderas="sect4">Optional</bridgehead>
135 <para role="optional">
136 <xref role="runtime" linkend="acpid"/> (runtime),
137 <xref linkend="doxygen"/> (to build API documentation),
138 <xref linkend="fop"/> (to build documentation),
139 <xref linkend="libunwind"/>,
140 <xref linkend="nettle"/>,
141 <xref linkend="libgcrypt"/>,
142 <xref linkend="xcb-util-keysyms"/>,
143 <xref linkend="xcb-util-image"/>,
144 <xref linkend="xcb-util-renderutil"/>,
145 <xref linkend="xcb-util-wm"/> (all four to build Xephyr),
146 <xref linkend="xmlto"/> (to build documentation),
147 <xref linkend="xkeyboard-config"/> (for tests),
148 <ulink url="https://gitlab.freedesktop.org/xorg/test/rendercheck">rendercheck</ulink> (for tests), and
149 <ulink url="https://www.x.org/archive/individual/doc/">xorg-sgml-doctools</ulink> (to build documentation)
150 </para>
151 </sect2>
152
153 <sect2 role="kernel" id="xorg-server-kernel">
154 <title>Kernel Configuration</title>
155
156 <para>
157 The traditional Device Dependent X (DDX) drivers have been removed
158 from BLFS in favor of the &modesetting_drv; driver which will be
159 built as a part of this package. To use the &modesetting_drv; driver,
160 the kernel must provide a Direct Rendering Manager (DRM) driver for
161 your GPU.
162 </para>
163
164 <para>
165 If your GPU supports 3D acceleration and <xref linkend='mesa'/>
166 provides a Gallium3D driver for utilizing its 3D capability, you
167 should have already enabled the necessary kernel configuration options
168 in <xref linkend='mesa-kernel'/>. Otherwise, you need to find the
169 kernel configuration option of the DRM driver for the GPU and enable
170 it. Notably, the virtual GPUs provided by some virtual machine
171 managers:
172 </para>
173
174 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
175 href="xorg-server-kernel.xml"/>
176
177 <para>
178 If the kernel does not provide a DRM driver for your GPU, on most x86
179 systems the <quote>simple frame buffer</quote> DRM driver running on
180 VESA or UEFI frame buffer can be used as a fallback. Enable the
181 following options in the kernel configurations if you don't have a
182 dedicated DRM driver for the GPU, or you want to keep the simple
183 frame buffer driver as a fallback in case the dedicated driver fails:
184 </para>
185
186 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
187 href="xorg-server-simpledrm-kernel.xml"/>
188
189 <para>
190 To allow the kernel to print debug messages at an early boot stage,
191 <option>CONFIG_DRM</option> and <option>CONFIG_DRM_SIMPLEDRM</option>
192 should not be built as kernel modules unless an initramfs will be
193 used.
194 </para>
195
196 <para>
197 If you want to use the simple frame buffer driver on a system booted
198 via BIOS (instead of UEFI), add the following line before the first
199 <literal>menuentry</literal> block in the
200 <filename>/boot/grub/grub.cfg</filename> file to initialize the VESA
201 frame buffer:
202 </para>
203
204<screen><literal>set gfxpayload=<replaceable>1024x768x32</replaceable></literal></screen>
205
206 <para>
207 You may replace <literal>1024</literal>, <literal>768</literal>, and
208 <literal>32</literal> with a resolution and color depth setting
209 suitable for your monitor.
210 </para>
211
212 <para>
213 If all of these DRM drivers do not work for you and you need to use
214 a DDX driver with a non-DRM kernel GPU driver (usually named
215 <option>CONFIG_FB_*</option> in the kernel configuration, or existing
216 as out-tree kernel modules), or you need an device specific
217 functionality requiring a DDX driver, consult
218 <ulink url="&BLFS113;">a prior version of BLFS</ulink>, or
219 <ulink url="&BLFS76;">an even earlier prior version</ulink> for more DDX
220 drivers.
221 </para>
222
223 <indexterm zone="xorg-server xorg-server-kernel">
224 <primary sortas="d-xorg-server">xorg-server</primary>
225 </indexterm>
226 </sect2>
227
228 <sect2 role="installation">
229 <title>Installation of Xorg Server</title>
230
231 <para>
232 First, if you need the TearFree option to work around screen tearing,
233 apply the backported patch:
234 </para>
235
236<screen><userinput remap="pre">patch -Np1 -i ../xorg-server-&xorg-server-version;-tearfree_backport-2.patch</userinput></screen>
237
238 <para>
239 Install the server by running the following commands:
240 </para>
241
242 <!-- To editors: Ironically -D systemd_logind=true shows up only for
243 **sysv** revision. No it's not a bug. It's used to make the
244 building system error out when dbus is not installed and emphasis
245 that we don't support a configuration lacking a recommended
246 dependency. On systemd dbus is installed in LFS. Despite the
247 naming, it controls elogind support as well.
248
249 It's harmless to have this option for systemd revision as well
250 but I cannot figure out how to write it up in the Explanations
251 section for systemd revision, so just omit it for systemd
252 revision. -->
253
254<screen revision='sysv'><userinput>mkdir build &amp;&amp;
255cd build &amp;&amp;
256
257meson setup .. \
258 --prefix=$XORG_PREFIX \
259 --localstatedir=/var \
260 -D glamor=true \
261 -D systemd_logind=true \
262 -D xkb_output_dir=/var/lib/xkb &amp;&amp;
263ninja</userinput></screen>
264
265<screen revision='systemd'><userinput>mkdir build &amp;&amp;
266cd build &amp;&amp;
267
268meson setup .. \
269 --prefix=$XORG_PREFIX \
270 --localstatedir=/var \
271 -D glamor=true \
272 -D xkb_output_dir=/var/lib/xkb &amp;&amp;
273ninja</userinput></screen>
274
275 <para>
276 To test the results, issue: <command>ninja test</command>. You
277 will need to run <command>ldconfig</command> as the <systemitem
278 class="username">root</systemitem> user first or some tests may fail.
279 </para>
280
281 <para>
282 Now as the <systemitem class="username">root</systemitem>
283 user:
284 </para>
285
286<screen role="root" revision="sysv"><userinput>ninja install &amp;&amp;
287mkdir -pv /etc/X11/xorg.conf.d &amp;&amp;
288install -v -d -m1777 /tmp/.{ICE,X11}-unix &amp;&amp;
289cat &gt;&gt; /etc/sysconfig/createfiles &lt;&lt; "EOF"
290<literal>/tmp/.ICE-unix dir 1777 root root
291/tmp/.X11-unix dir 1777 root root</literal>
292EOF</userinput></screen>
293
294<screen role="root" revision="systemd"><userinput>ninja install &amp;&amp;
295mkdir -pv /etc/X11/xorg.conf.d</userinput></screen>
296
297 </sect2>
298
299 <sect2 role="commands">
300 <title>Command Explanations</title>
301
302 <para>
303 <parameter>-D glamor=true</parameter>: Ensure building the Glamor
304 module. It's needed to build the &modesetting_drv; driver
305 which replaces the traditional Device Dependent X (DDX) drivers.
306 </para>
307
308 <para revision='sysv'>
309 <option>-D systemd_logind=true</option>:
310 This switch makes the building system error out if
311 <xref linkend='dbus'/> is not installed. The BLFS editors discourage
312 building this package without <xref linkend='dbus'/> installed.
313 </para>
314
315 <para>
316 <option>-D suid_wrapper=true</option>: Builds the suid-root
317 wrapper for legacy DDX driver support on rootless xserver systems.
318 </para>
319
320 <para revision="sysv">
321 <command>cat &gt;&gt; /etc/sysconfig/createfiles...</command>: This
322 command creates the <filename class="directory">/tmp/.ICE-unix</filename>
323 and <filename class="directory">/tmp/.X11-unix</filename> directories at
324 startup, and ensures that the permissions and ownership are correct as
325 required by the server.
326 </para>
327
328 <para>
329 <option>-D xephyr=true</option>: This option allows building Xephyr if its
330 dependencies are met.
331 </para>
332
333 </sect2>
334
335 <sect2 role="content">
336 <title>Contents</title>
337
338 <segmentedlist>
339 <segtitle>Installed Programs</segtitle>
340 <segtitle>Installed Libraries</segtitle>
341 <segtitle>Installed Directories</segtitle>
342
343 <seglistitem>
344 <seg>
345 gtf, X, Xnest, Xorg, Xvfb, and optionally Xephyr
346 </seg>
347 <seg>
348 several under $XORG_PREFIX/lib/xorg/modules/ including the
349 &modesetting_drv; driver
350 </seg>
351 <seg>
352 /etc/X11/xorg.conf.d,
353 $XORG_PREFIX/include/xorg,
354 $XORG_PREFIX/lib/xorg, and
355 $XORG_PREFIX/share/X11/xorg.conf.d
356 </seg>
357
358 </seglistitem>
359 </segmentedlist>
360
361 <variablelist>
362 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
363 <?dbfo list-presentation="list"?>
364 <?dbhtml list-presentation="table"?>
365
366 <varlistentry id="gtf-x7">
367 <term><command>gtf</command></term>
368 <listitem>
369 <para>
370 calculates VESA GTF mode lines
371 </para>
372 <indexterm zone="xorg-server gtf-x7">
373 <primary sortas="b-gtf">gtf</primary>
374 </indexterm>
375 </listitem>
376 </varlistentry>
377
378 <varlistentry id="X-x7">
379 <term><command>X</command></term>
380 <listitem>
381 <para>
382 is a symbolic link to Xorg
383 </para>
384 <indexterm zone="xorg-server X-x7">
385 <primary sortas="b-X">X</primary>
386 </indexterm>
387 </listitem>
388 </varlistentry>
389
390 <varlistentry id="Xephyr-x7">
391 <term><command>Xephyr</command></term>
392 <listitem>
393 <para>
394 is a nested X server which supports modern X extensions
395 </para>
396 <indexterm zone="xorg-server Xephyr-x7">
397 <primary sortas="b-Xephyr">Xephyr</primary>
398 </indexterm>
399 </listitem>
400 </varlistentry>
401
402 <varlistentry id="Xnest-x7">
403 <term><command>Xnest</command></term>
404 <listitem>
405 <para>
406 is a nested X server
407 </para>
408 <indexterm zone="xorg-server Xnest-x7">
409 <primary sortas="b-Xnest">Xnest</primary>
410 </indexterm>
411 </listitem>
412 </varlistentry>
413
414 <varlistentry id="Xorg-x7">
415 <term><command>Xorg</command></term>
416 <listitem>
417 <para>
418 is the X11R7 X Server
419 </para>
420 <indexterm zone="xorg-server Xorg-x7">
421 <primary sortas="b-Xorg">Xorg</primary>
422 </indexterm>
423 </listitem>
424 </varlistentry>
425
426 <varlistentry id="Xvfb-x7">
427 <term><command>Xvfb</command></term>
428 <listitem>
429 <para>
430 is the virtual framebuffer X server for X Version 11
431 </para>
432 <indexterm zone="xorg-server Xvfb-x7">
433 <primary sortas="b-Xvfb">Xvfb</primary>
434 </indexterm>
435 </listitem>
436 </varlistentry>
437
438 <varlistentry id="modesetting_drv-x7">
439 <term><filename class="libraryfile">modesetting_drv.so</filename></term>
440 <listitem>
441 <para>
442 provides a video driver for machines using Kernel Mode Setting (KMS).
443 This will use glamor if that has been enabled and the hardware offers
444 acceleration
445 </para>
446 <indexterm zone="xorg-server modesetting_drv-x7">
447 <primary sortas="c-modesetting_drv">modesetting_drv.so</primary>
448 </indexterm>
449 </listitem>
450 </varlistentry>
451
452 </variablelist>
453
454 </sect2>
455
456</sect1>
Note: See TracBrowser for help on using the repository browser.