source: x/installing/xorg.xml@ b6d80e9

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since b6d80e9 was b6d80e9, checked in by Dan Nichilson <dnicholson@…>, 18 years ago

Fixed vulnerability and removed Glibc hack in Xorg-6.9.0.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@6280 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 18.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY xorg-download-http "http://xorg.freedesktop.org/releases/X11R&xorg-version;/src-single/X11R&xorg-version;-src.tar.bz2 ">
8 <!ENTITY xorg-download-ftp "ftp://expo.x.org/pub/X11R&xorg-version;/src-single/X11R&xorg-version;-src.tar.bz2">
9 <!ENTITY xorg-md5sum "52ad69832db5c36c7041f90625ed4598">
10 <!ENTITY xorg-size "45 MB">
11 <!ENTITY xorg-buildsize "864 MB">
12 <!ENTITY xorg-time "11.68 SBU">
13]>
14
15<sect1 id="xorg" xreflabel="Xorg-&xorg-version;">
16 <?dbhtml filename="xorg.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>Xorg-&xorg-version;</title>
24
25 <indexterm zone="xorg">
26 <primary sortas="a-xorg">Xorg</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to Xorg</title>
31
32 <!-- <note>
33 <para>There are three packages in BLFS that implement the <application>X
34 Window System</application>: <application>Xorg</application>
35 (X11R6 and X11R7) and <application>XFree86</application>. These
36 packages are all quite similar. In fact, the base system of
37 <application>Xorg</application> is
38 <application>XFree86</application>-4.4.0RC2. Licensing was the original
39 reason for the split. <application>Xorg-&xorg7-version;</application>
40 introduces a completely autotooled build system, but is otherwise the
41 same codebase as <application>Xorg-&xorg-version;</application>.
42 Most large commercial distributions have decided to use the
43 <application>Xorg</application> package, but several still provide
44 <application>XFree86</application>.</para>
45
46 <para>A second reason for the forking of <application>X</application>
47 packages is the stated goals of the developers. Some developers were
48 unhappy with the administration and progress of
49 <application>XFree86</application>. X.org's future plans include
50 significant improvements to the internals of the system and more
51 frequent releases.</para>
52
53 <para><application>XFree86</application> continues to be a solid,
54 conservative application with excellent driver support.</para>
55 </note> -->
56
57 <para><application>Xorg</application> is a freely redistributable open-source
58 implementation of the <application>X</application> Window System. This
59 system provides a client/server interface between display hardware (the
60 mouse, keyboard, and video displays) and the desktop environment, while also
61 providing both the windowing infrastructure and a standardized application
62 interface (API).</para>
63
64 <bridgehead renderas="sect3">Package Information</bridgehead>
65 <itemizedlist spacing="compact">
66 <listitem>
67 <para>Download (HTTP): <ulink url="&xorg-download-http;"/></para>
68 </listitem>
69 <listitem>
70 <para>Download (FTP): <ulink url="&xorg-download-ftp;"/></para>
71 </listitem>
72 <listitem>
73 <para>Download MD5 sum: &xorg-md5sum;</para>
74 </listitem>
75 <listitem>
76 <para>Download size: &xorg-size;</para>
77 </listitem>
78 <listitem>
79 <para>Estimated disk space required: &xorg-buildsize;</para>
80 </listitem>
81 <listitem>
82 <para>Estimated build time: &xorg-time;</para>
83 </listitem>
84 </itemizedlist>
85
86 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
87 <itemizedlist spacing="compact">
88 <listitem>
89 <para>Required patch: <ulink
90 url="&patch-root;/xorg-&xorg-version;-luit_race-1.patch"/></para>
91 </listitem>
92 <listitem>
93 <para>Required patch: <ulink
94 url="&patch-root;/xorg-&xorg-version;-security-2.patch"/></para>
95 </listitem>
96 </itemizedlist>
97
98 <bridgehead renderas="sect3">Xorg Dependencies</bridgehead>
99
100 <bridgehead renderas="sect4">Required</bridgehead>
101 <para role="required"><xref linkend="libpng"/> and
102 <xref linkend="fontconfig"/></para>
103
104 <bridgehead renderas="sect4">Optional</bridgehead>
105 <para role="optional"><xref linkend="linux-pam"/></para>
106
107 <para condition="html" role="usernotes">User Notes:
108 <ulink url='&blfs-wiki;/Xorg'/></para>
109
110 <bridgehead renderas="sect3">Download Instructions</bridgehead>
111
112 <para>As an alternative to downloading the entire source tree in a single
113 file, there are several smaller files that can be fetched from the
114 download location (directory /pub/X11R&xorg-version;/src/):</para>
115
116 <itemizedlist spacing='compact'>
117 <listitem>
118 <para><filename>X11R&xorg-version;-src1.tar.gz</filename></para>
119 </listitem>
120 <listitem>
121 <para><filename>X11R&xorg-version;-src2.tar.gz</filename></para>
122 </listitem>
123 <listitem>
124 <para><filename>X11R&xorg-version;-src3.tar.gz</filename></para>
125 </listitem>
126 <listitem>
127 <para><filename>X11R&xorg-version;-src4.tar.gz</filename></para>
128 </listitem>
129 <listitem>
130 <para><filename>X11R&xorg-version;-src5.tar.gz</filename></para>
131 </listitem>
132 <listitem>
133 <para><filename>X11R&xorg-version;-src6.tar.gz</filename></para>
134 </listitem>
135 <listitem>
136 <para><filename>X11R&xorg-version;-src7.tar.gz</filename></para>
137 </listitem>
138 </itemizedlist>
139
140 <para>The first package contains the <application>Xorg</application>
141 libraries and support programs, the second contains standard
142 <application>X</application> programs, the third contains the
143 <application>X</application> server, the fourth and fifth are fonts,
144 the sixth is normal documentation, and the seventh is hardcopy
145 documentation.</para>
146
147 <para>To check the files for integrity, download the
148 <filename>md5sums</filename> file. Then:</para>
149
150<screen><userinput>md5sum -c md5sums</userinput></screen>
151
152 <para>For each file you downloaded, an
153 <computeroutput>OK</computeroutput> status should be displayed.</para>
154
155 </sect2>
156
157 <sect2 role="kernel" id='xorg-kernel'>
158 <title>Kernel Configuration</title>
159
160 <indexterm zone="xorg xorg-kernel">
161 <primary sortas="d-Xorg">Xorg</primary>
162 </indexterm>
163
164 <para>If you have an Intel P6 (Pentium Pro, Pentium II and later), it is
165 recommended that you compile MTRR (Memory Type Range Registers) support
166 into the kernel. The kernel can map Cyrix and AMD CPUs to the MTRR
167 interface, so selecting this option is useful for those processors also.
168 This option is found in the "Processor type and features" menu. It can
169 increase performance of image write operations 2.5 times or more on PCI or
170 AGP video cards.</para>
171
172 <para>In the "Character Devices" section of the "Device Drivers" menu,
173 enable AGP Support and select the chipset support on your motherboard. If
174 you do not know the chipset, you may select all the chip types at the
175 expense of extra kernel size. You can usually determine your motherboard's
176 chipset by running the command <command>lspci</command>, a program from the
177 <xref linkend="pciutils"/> package.</para>
178
179 <para>In the "Character Devices" section, <emphasis>disable</emphasis>
180 Direct Rendering Manager unless you have a Direct Rendering Infrastructure
181 (DRI) supported video card. A complete list of DRI supported video cards
182 can be found at <ulink url="http://dri.sourceforge.net" /> in the "Status"
183 section. Currently, supported cards include those from 3dfx (Voodoo,
184 Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel
185 (i810, i815), and Matrox (G200, G400, G450).</para>
186
187 <para>Additionally, NVidia provides their own closed source binary drivers,
188 which do not make use of DRI. If you intend to use these drivers, do not
189 enable DRI.</para>
190
191 <para>If you made any changes to the kernel configuration, recompile and
192 install the new kernel.</para>
193
194 </sect2>
195
196 <sect2 role="installation">
197 <title>Installation of Xorg</title>
198
199 <sect3>
200 <title>Various build fixes</title>
201
202 <para>The <application>Xorg</application> sources must be patched in
203 order to avoid a race condition with the <application>luit</application>
204 program. Additionally, <application>Xorg</application> contains 3
205 <ulink url="http://wiki.x.org/wiki/SecurityPage">security vulnerabilities</ulink>.
206 Fix these issues with the following commands:</para>
207
208<screen><userinput>patch -Np1 -i ../xorg-&xorg-version;-luit_race-1.patch &amp;&amp;
209patch -Np1 -i ../xorg-&xorg-version;-security-2.patch</userinput></screen>
210
211 <para>Additionally, if you choose to install
212 <application>Xorg</application> to any prefix other than
213 <filename class="directory">/usr/X11R6</filename>, the
214 <application>luit</application> package
215 needs another correction to fix a hard coded path. Execute the
216 following command:</para>
217
218<screen><userinput>sed -i 's@/usr/X11R6@<replaceable>&lt;/usr&gt;</replaceable>@' programs/luit/parser.h</userinput></screen>
219
220 </sect3>
221
222 <sect3>
223 <title>Suppressing Xprint-related Modification to '/etc'</title>
224
225 <para><application>Xorg</application> insists on putting
226 its boot and profile scripts into the <filename
227 class="directory">/etc</filename> directory even if specifically told
228 not to compile anything Xprint server or client related (see
229 <filename>host.def</filename> below). The following command will
230 suppress any such modifications:</para>
231
232<screen><userinput>sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile</userinput></screen>
233
234 </sect3>
235
236 <sect3>
237 <title>Setting Up a Shadow Directory</title>
238
239 <para>When building <application>Xorg</application>, you should create
240 a shadow directory of symbolic links for the compiled code. To do that,
241 first make <command>lndir</command>. Starting from the
242 <filename class='directory'>xc</filename> directory:</para>
243
244<screen><userinput>pushd config/util &amp;&amp;
245make -f Makefile.ini lndir
246popd</userinput></screen>
247
248 <para>Now create the shadow tree:</para>
249
250<screen><userinput>mkdir ../xcbuild &amp;&amp;
251cd ../xcbuild &amp;&amp;
252../xc/config/util/lndir ../xc</userinput></screen>
253
254 </sect3>
255
256 <sect3>
257 <title>Creating 'host.def'</title>
258
259 <para>The next step is to create the
260 <filename>config/cf/host.def</filename> file. The documentation for
261 <application>Xorg</application> indicates that the application will
262 build without a <filename>host.def</filename> file, but the included
263 libraries for <application>Fontconfig</application> and
264 <application>FreeType2</application> do not build properly on a base
265 LFS system. Therefore, you must specify that these libraries, as well
266 as others, should be imported from the system.</para>
267
268 <note>
269 <para><filename>config/cf/host.def</filename> is a C file, not a
270 shell script. Ensure the comments delimited by /* ... */ are balanced
271 when modifying the file.</para>
272 </note>
273
274<screen><userinput>cat &gt; config/cf/host.def &lt;&lt; "EOF"
275<literal>/* Begin Xorg host.def file */
276
277/* System Related Information. If you read and configure only one
278 * section then it should be this one. The Intel architecture defaults
279 * are set for a i686 and higher. Axp is for the Alpha architecture
280 * and Ppc is for the Power PC. AMD64 is for the Opteron processor.
281 * Note that there have been reports that the Ppc optimization line
282 * causes segmentation faults during build. If that happens, try
283 * building without the DefaultGcc2PpcOpt line. ***********/
284
285/* #define DefaultGcc2i386Opt -O2 -fno-strength-reduce \
286 -fno-strict-aliasing -march=i686 */
287/* #define DefaultGcc2AMD64Opt -O2 -fno-strength-reduce \
288 -fno-strict-aliasing */
289/* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */
290/* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */
291
292#define HasFreetype2 YES
293#define HasFontconfig YES
294#define HasExpat YES
295#define HasLibpng YES
296#define HasZlib YES
297
298/*
299 * Which drivers to build. When building a static server, each of
300 * these will be included in it. When building the loadable server
301 * each of these modules will be built.
302 *
303#define XF86CardDrivers mga glint nv tga s3virge sis rendition \
304 neomagic i740 tdfx savage \
305 cirrus vmware tseng trident chips apm \
306 GlideDriver fbdev i128 \
307 ati DevelDrivers ark \
308 cyrix siliconmotion vesa vga \
309 XF86OSCardDrivers XF86ExtraCardDrivers
310*/
311
312/*
313 * Select the XInput devices you want by uncommenting this.
314 *
315#define XInputDrivers mouse keyboard acecad calcomp citron \
316 digitaledge dmc dynapro elographics \
317 microtouch mutouch penmount spaceorb \
318 summa wacom void magictouch aiptek
319 */
320
321/* Most installs will only need this */
322
323#define XInputDrivers mouse keyboard
324
325/* Xterm is no longer built by default */
326#define BuildXterm YES
327
328/* Disable building Xprint server and clients until we get them figured
329 * out but build Xprint libraries to allow precompiled binaries such as
330 * Acrobat Reader to run.
331 */
332
333#define XprtServer NO
334#define BuildXprintClients NO
335
336/* Uncomment the following define if you would prefer to install X into
337 * /usr or change it to any other location that you prefer.
338 * The GL related defines disable compatibility symlinks (the links
339 * are not needed when X is installed in /usr).
340#define ProjectRoot /usr
341#define LinkGLToUsrInclude NO
342#define LinkGLToUsrLib NO
343 */
344
345/* End Xorg host.def file */</literal>
346EOF</userinput></screen>
347
348 <para>There are several other options that you may want to consider.
349 A well documented example file is
350 <filename>config/cf/xorgsite.def</filename>.</para>
351
352 </sect3>
353
354 <sect3>
355 <title>Build Commands</title>
356
357 <para>Install <application>Xorg</application> by running the
358 following commands:</para>
359
360<screen><userinput>sed -i -e "s@^#include &lt;linux/config.h&gt;@/* &amp; */@" \
361 `grep -lr linux/config.h *` &amp;&amp;
362( make World 2&gt;&amp;1 | tee xorg-compile.log &amp;&amp; exit $PIPESTATUS )</userinput></screen>
363
364 <para>This package does not come with a test suite.</para>
365
366 <para>Now, as the <systemitem class="username">root</systemitem>
367 user:</para>
368
369<screen role="root"><userinput>make install &amp;&amp;
370make install.man</userinput></screen>
371
372 <para>If you've installed <application>Xorg</application> in the default
373 prefix listed above, run the following commands as the
374 <systemitem class="username">root</systemitem> user:</para>
375
376<screen role="root"><userinput>ln -v -s ../X11R6/bin /usr/bin/X11 &amp;&amp;
377ln -v -s ../X11R6/lib/X11 /usr/lib/X11 &amp;&amp;
378ln -v -s ../X11R6/include/X11 /usr/include/X11</userinput></screen>
379
380 <para>The <application>Xorg</application> fonts have been installed
381 outside of <application>Fontconfig</application>'s default search path
382 of <filename class="directory">/usr/share/fonts</filename>. In order
383 for <application>Fontconfig</application> to find the installed TrueType
384 fonts, you should make symlinks to their directories. Assuming you've
385 installed <application>Xorg</application> in the default prefix, run the
386 following commands as the <systemitem class="username">root</systemitem>
387 user:</para>
388
389<screen role="root"><userinput>install -v -d -m755 /usr/share/fonts &amp;&amp;
390ln -svn /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF</userinput></screen>
391
392 <para>You should now continue on to the <xref linkend="x-setup"/> section
393 to complete the configuration of
394 <application>Xorg</application>.</para>
395
396 </sect3>
397
398 </sect2>
399
400 <sect2 role="commands">
401 <title>Command Explanations</title>
402
403 <para><command>sed -i -e "s@^#include &lt;linux/config.h&gt;@...</command>:
404 The <application>Linux-Libc-Headers</application> package installed in
405 LFS installs a <filename>/usr/include/linux/config.h</filename> file
406 which is not compatible with userspace applications. The recommended fix
407 for applications including this file is to remove it (see <ulink
408 url="http://ep09.pld-linux.org/~mmazur/linux-libc-headers/doc/FAQ">
409 linux-libc-headers FAQ</ulink>). The <command>sed</command> uses
410 <command>grep -lr</command> to replace all occurrences. If you desire, just
411 remove (comment) the line in the appropriate video driver file if you
412 customized <filename>host.def</filename>.</para>
413
414 <para><command>( make World 2&gt;&amp;1 | tee xorg-compile.log
415 &amp;&amp; exit $PIPESTATUS )</command>: This command runs multiple
416 <filename>Makefile</filename>s to completely rebuild the system.
417 <parameter>2&gt;&amp;1</parameter> redirects error messages to the
418 same location as standard output. The <command>tee</command> command
419 allows viewing of the output while logging the results to a file. The
420 parentheses around the command runs the entire command in a subshell
421 and finally the <command>exit $PIPESTATUS</command> ensures the result
422 of the <command>make</command> is returned as the result and not the
423 result of the <command>tee</command> command.</para>
424
425 <note>
426 <para>When rebuilding <application>Xorg</application>, a separate
427 command that may be used if only minor changes are made to the sources
428 is <command>make Everything</command>. This does not automatically
429 remove generated files and only rebuilds those files or programs that
430 are out of date.</para>
431 </note>
432
433 <para><command>ln -v -s ...</command>: These commands are present to
434 enable other (broken) packages to build against
435 <application>Xorg</application>, even though the Filesystem Hierarchy
436 Standard says: <quote>In general, software must not be installed or
437 managed via the above symbolic links. They are intended for utilization
438 by users only.</quote></para>
439
440 <para>For a list of the package contents, see the sections in the
441 <xref linkend='xfree86-contents'/>.</para>
442
443 </sect2>
444
445</sect1>
Note: See TracBrowser for help on using the repository browser.