source: x/installing/xorg.xml@ 10bffdc8

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 10bffdc8 was 10bffdc8, checked in by Randy McMurchy <randy@…>, 19 years ago

Added a GCC-4 patch to the Xorg instructions

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

  • Property mode set to 100644
File size: 22.1 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 " ">
8 <!ENTITY xorg-download-ftp "ftp://ftp.opengroup.org/pub/x.org/pub/X11R&xorg-version;/src-single/X11R&xorg-version;-src.tar.bz2">
9 <!ENTITY xorg-md5sum "8131cd7ea1e4566e6e05c438a93fcfe1">
10 <!ENTITY xorg-size "43 MB">
11 <!ENTITY xorg-buildsize "839 MB">
12 <!ENTITY xorg-time "10.34 SBU">
13]>
14
15<sect1 id="xorg" xreflabel="X.org-&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 two packages in BLFS that implement the <application>X
34 Window System</application>: <application>Xorg</application> and
35 <application>XFree86</application>. These packages are quite similar.
36 In fact, the base system of <application>Xorg</application> is
37 <application>XFree86</application>-4.4.0RC2. The primary difference as
38 of this writing is the license provisions of the packages. For someone
39 building a package for their own use, these issues are not significant.
40 Most large commercial distributions have decided to use the
41 <application>Xorg</application> package, but several still use
42 <application>XFree86</application>.</para>
43
44 <para>A second reason for the forking of <application>X</application>
45 packages is the stated goals of the developers. Some developers were
46 unhappy with the administration and progress of
47 <application>XFree86</application>. X.org's future plans include
48 significant improvements to the internals of the system and more frequent
49 releases.</para>
50
51 <para><application>XFree86</application> continues to be a solid,
52 conservative application with excellent driver support.</para>
53
54 <para>Both <application>Xorg</application> and
55 <application>XFree86</application> can be installed in the same way,
56 but this section will provide a slightly different and more current
57 variation for installation.</para>
58 </note>
59
60 <para><application>Xorg</application> is a freely redistributable open-source
61 implementation of the <application>X</application> Window System. This
62 application provides a client/server interface between display hardware (the
63 mouse, keyboard, and video displays) and the desktop environment, while also
64 providing both the windowing infrastructure and a standardized application
65 interface (API).</para>
66
67 <bridgehead renderas="sect3">Package Information</bridgehead>
68 <itemizedlist spacing="compact">
69 <listitem>
70 <para>Download (HTTP): <ulink url="&xorg-download-http;"/></para>
71 </listitem>
72 <listitem>
73 <para>Download (FTP): <ulink url="&xorg-download-ftp;"/></para>
74 </listitem>
75 <listitem>
76 <para>Download MD5 sum: &xorg-md5sum;</para>
77 </listitem>
78 <listitem>
79 <para>Download size: &xorg-size;</para>
80 </listitem>
81 <listitem>
82 <para>Estimated disk space required: &xorg-buildsize;</para>
83 </listitem>
84 <listitem>
85 <para>Estimated build time: &xorg-time;</para>
86 </listitem>
87 </itemizedlist>
88
89 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
90 <itemizedlist spacing="compact">
91 <listitem>
92 <para>Required patch: <ulink
93 url="&patch-root;/X11R&xorg-version;-src-gcc4-1.patch"/></para>
94 </listitem>
95 </itemizedlist>
96
97 <bridgehead renderas="sect3">Xorg Dependencies</bridgehead>
98
99 <bridgehead renderas="sect4">Required</bridgehead>
100 <para><xref linkend="libpng"/> and
101 <xref linkend="fontconfig"/></para>
102
103 <bridgehead renderas="sect4">Optional</bridgehead>
104 <para><xref linkend="Linux_PAM"/></para>
105
106 <bridgehead renderas="sect3">Download Instructions</bridgehead>
107
108 <para>As an alternative to downloading the entire source tree in a single
109 file, there are several files that need to be fetched from the download
110 location (directory /pub/x.org/pub/X11R&xorg-version;/src/):</para>
111
112 <itemizedlist spacing='compact'>
113 <listitem>
114 <para><filename>X11R&xorg-version;-src1.tar.gz</filename></para>
115 </listitem>
116 <listitem>
117 <para><filename>X11R&xorg-version;-src2.tar.gz</filename></para>
118 </listitem>
119 <listitem>
120 <para><filename>X11R&xorg-version;-src3.tar.gz</filename></para>
121 </listitem>
122 <listitem>
123 <para><filename>X11R&xorg-version;-src4.tar.gz</filename></para>
124 </listitem>
125 <listitem>
126 <para><filename>X11R&xorg-version;-src5.tar.gz</filename></para>
127 </listitem>
128 <listitem>
129 <para><filename>X11R&xorg-version;-src6.tar.gz</filename></para>
130 </listitem>
131 <listitem>
132 <para><filename>X11R&xorg-version;-src7.tar.gz</filename></para>
133 </listitem>
134 </itemizedlist>
135
136 <para>The first package contains the <application>Xorg</application>
137 libraries and support programs, the second contains standard
138 <application>X</application> programs, the third contains the
139 <application>X</application> server, the fourth and fifth are fonts,
140 the sixth is normal documentation, and the seventh is hardcopy
141 documentation.</para>
142
143 <para>To check your file for integrity, download the
144 <filename>md5sums</filename> file. Then:</para>
145
146<screen><userinput>md5sum -c md5sums</userinput></screen>
147
148 <para>The package (or all seven packages) should give an OK status.</para>
149
150 </sect2>
151
152 <sect2 role="kernel" id='xorg-kernel'>
153 <title>Kernel Configuration</title>
154
155 <indexterm zone="xorg xorg-kernel">
156 <primary sortas="d-Xorg">Xorg</primary>
157 </indexterm>
158
159 <para>If you have an Intel P6 (Pentium Pro, Pentium II and later), it is
160 recommended that you compile MTRR (Memory Type Range Registers) support
161 into the kernel. The kernel can map Cyrix and AMD CPUs to the MTRR
162 interface, so selecting this option is useful for those processors also.
163 This option is found in the "Processor type and features" menu. It can
164 increase performance of image write operations 2.5 times or more on PCI or
165 AGP video cards.</para>
166
167 <para>In the "Character Devices" section of the "Device Drivers" menu,
168 enable AGP Support and select the chipset support on your motherboard. If
169 you do not know the chipset, you may select all the chip types at the
170 expense of extra kernel size. You can usually determine your motherboard's
171 chipset by running the command <command>lspci</command>, a program from the
172 <xref linkend="pciutils"/> package.</para>
173
174 <para>In the "Character Devices" section, <emphasis>disable</emphasis>
175 Direct Rendering Manager unless you have a Direct Rendering Infrastructure
176 (DRI) supported video card. A complete list of DRI supported video cards
177 can be found at <ulink url="http://dri.sourceforge.net" /> in the "Status"
178 section. Currently, supported cards include those from 3dfx (Voodoo,
179 Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel
180 (i810, i815), and Matrox (G200, G400, G450).</para>
181
182 <para>Additionally NVidia provides their own closed source binary drivers,
183 which do not make use of DRI. If you intend to use these drivers, do not
184 enable DRI.</para>
185
186 <para>If you made any changes to the kernel configuration, recompile and
187 install the new kernel.</para>
188
189 </sect2>
190
191 <sect2 role="installation">
192 <title>Installation of Xorg</title>
193
194 <sect3>
195 <title>Patching to be Compatible with GCC-4.x</title>
196
197 <para>The <application>Xorg</application> sources must be patched in
198 order to be compiled using <application>GCC</application>-4.x. Install
199 the following patch:</para>
200
201<screen><userinput>patch -Np1 -i ../X11R&xorg-version;-src-gcc4-1.patch</userinput></screen>
202
203 </sect3>
204
205 <sect3>
206 <title>Suppressing Xprint-related Modification to '/etc'</title>
207
208 <para><application>Xorg</application> insists on putting
209 its boot and profile scripts into the <filename
210 class="directory">/etc</filename> directory even if specifically told
211 not to compile anything Xprint server or client related (see
212 <filename>host.def</filename> below). The following command will
213 suppress any such modifications:</para>
214
215<screen><userinput>sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile</userinput></screen>
216
217 </sect3>
218
219 <sect3>
220 <title>Setting Up a Shadow Directory</title>
221
222 <para>When building <application>Xorg</application>, you should create
223 a shadow directory of symbolic links for the compiled code. To do that,
224 first make <command>lndir</command>. Starting from the
225 <filename class='directory'>xc</filename> directory:</para>
226
227<screen><userinput>pushd config/util &amp;&amp;
228make -f Makefile.ini lndir</userinput></screen>
229
230 <para>Now, as the <systemitem class="username">root</systemitem>
231 user:</para>
232
233<screen role="root"><userinput>cp -v lndir /usr/bin/</userinput></screen>
234
235 <para>And back as an unprivileged user:</para>
236
237<screen><userinput>popd</userinput></screen>
238
239 <para>Now create the shadow tree:</para>
240
241<screen><userinput>mkdir ../xcbuild &amp;&amp;
242cd ../xcbuild &amp;&amp;
243lndir ../xc</userinput></screen>
244
245 </sect3>
246
247 <sect3>
248 <title>Creating 'host.def'</title>
249
250 <para>The next step is to create the
251 <filename>config/cf/host.def</filename> file. The documentation for
252 <application>Xorg</application> indicates that the application will
253 build without a <filename>host.def</filename> file, but the included
254 libraries for <application>Fontconfig</application> and
255 <application>FreeType2</application> do not build properly on a base
256 LFS system. Therefore, you must specify that these libraries, as well
257 as others, should be imported from the system.</para>
258
259 <note>
260 <para><filename>config/cf/host.def</filename> is a C file, not a
261 shell script. Ensure the comments delimited by /* ... */ are balanced
262 when modifying the file.</para>
263 </note>
264
265<screen><userinput>cat &gt; config/cf/host.def &lt;&lt; "EOF"
266<literal>/* Begin Xorg host.def file */
267
268/* System Related Information. If you read and configure only one
269 * section then it should be this one. The Intel architecture defaults
270 * are set for a i686 and higher. Axp is for the Alpha architecture
271 * and Ppc is for the Power PC. AMD64 is for the Opteron processor.
272 * Note that there have been reports that the Ppc optimization line
273 * causes segmentation faults during build. If that happens, try
274 * building without the DefaultGcc2PpcOpt line. ***********/
275
276/* #define DefaultGcc2i386Opt -O2 -fno-strength-reduce \
277 -fno-strict-aliasing -march=i686 */
278/* #define DefaultGcc2AMD64Opt -O2 -fno-strength-reduce \
279 -fno-strict-aliasing */
280/* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */
281/* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */
282
283#define HasFreetype2 YES
284#define HasFontconfig YES
285#define HasExpat YES
286#define HasLibpng YES
287#define HasZlib YES
288
289/*
290 * Which drivers to build. When building a static server, each of
291 * these will be included in it. When building the loadable server
292 * each of these modules will be built.
293 *
294#define XF86CardDrivers mga glint nv tga s3virge sis rendition \
295 neomagic i740 tdfx savage \
296 cirrus vmware tseng trident chips apm \
297 GlideDriver fbdev i128 \
298 ati DevelDrivers ark \
299 cyrix siliconmotion vesa vga \
300 XF86OSCardDrivers XF86ExtraCardDrivers
301*/
302
303/*
304 * Select the XInput devices you want by uncommenting this.
305 *
306#define XInputDrivers mouse keyboard acecad calcomp citron \
307 digitaledge dmc dynapro elographics \
308 microtouch mutouch penmount spaceorb \
309 summa wacom void magictouch aiptek
310 */
311
312/* Most installs will only need this */
313
314#define XInputDrivers mouse keyboard
315
316/* Disable building Xprint server and clients until we get them figured
317 * out but build Xprint libraries to allow precompiled binaries such as
318 * Acrobat Reader to run.
319 */
320
321#define XprtServer NO
322#define BuildXprintClients NO
323
324/* Uncomment the following define if you would prefer to install X into
325 * /usr or change it to any other location that you prefer.
326 * The GL related defines disable compatibility symlinks (the links are not needed
327 * when X is installed in /usr).
328#define ProjectRoot /usr
329#define LinkGLToUsrInclude NO
330#define LinkGLToUsrLib NO
331 */
332
333/* Uncomment the following define if you would prefer to install the
334 * fonts into /usr/share/fonts, a directory that is fontconfig's default
335 * font search path.
336#define FontDir /usr/share/fonts
337 */
338
339/* End Xorg host.def file */</literal>
340EOF</userinput></screen>
341
342 <para>There are several other options that you may want to consider.
343 A well documented example file is
344 <filename>config/cf/xorgsite.def</filename>.</para>
345
346 </sect3>
347
348 <sect3>
349 <title>Build Commands</title>
350
351 <para>Install <application>Xorg</application> by running the
352 following commands:</para>
353
354<screen><userinput>sed -i -e "s@^#include &lt;linux/config.h&gt;@/* &amp; */@" \
355 `grep -lr linux/config.h *` &amp;&amp;
356( make World 2&gt;&amp;1 | tee xorg-compile.log &amp;&amp; exit $PIPESTATUS )</userinput></screen>
357
358 <para>Again as the <systemitem class="username">root</systemitem>
359 user:</para>
360
361<screen role="root"><userinput>make install &amp;&amp;
362make install.man &amp;&amp;
363ln -v -sf ../X11R6/bin /usr/bin/X11 &amp;&amp;
364ln -v -sf ../X11R6/lib/X11 /usr/lib/X11 &amp;&amp;
365ln -v -sf ../X11R6/include/X11 /usr/include/X11</userinput></screen>
366
367 </sect3>
368
369 </sect2>
370
371 <sect2 role="commands">
372 <title>Command Explanations</title>
373
374 <para><command>sed -i -e "s@^#include &lt;linux/config.h&gt;@...</command>:
375 The <application>Linux-Libc-Headers</application> package installed in
376 LFS installs a <filename>/usr/include/linux/config.h</filename> file
377 which is not compatible with userspace applications. The recommended fix
378 for applications including this file is to remove it (see <ulink
379 url="http://ep09.pld-linux.org/~mmazur/linux-libc-headers/doc/FAQ">
380 linux-libc-headers FAQ</ulink>). The <command>sed</command> uses
381 <command>grep -lr</command> to replace all occurrences. If you desire, just
382 remove (comment) the line in the appropriate video driver file if you
383 customized <filename>host.def</filename>.</para>
384
385 <para><command>( make World 2&gt;&amp;1 | tee xorg-compile.log
386 &amp;&amp; exit $PIPESTATUS )</command>: This command runs multiple
387 <filename>Makefile</filename>s to completely rebuild the system.
388 <parameter>2&gt;&amp;1</parameter> redirects error messages to the
389 same location as standard output. The <command>tee</command> command
390 allows viewing of the output while logging the results to a file. The
391 parentheses around the command runs the entire command in a subshell
392 and finally the <command>exit $PIPESTATUS</command> ensures the result
393 of the <command>make</command> is returned as the result and not the
394 result of the <command>tee</command> command.</para>
395
396 <note>
397 <para>When rebuilding <application>Xorg</application>, a separate
398 command that may be used if only minor changes are made to the sources
399 is <command>make Everything</command>. This does not automatically
400 remove generated files and only rebuilds those files or programs that
401 are out of date.</para>
402 </note>
403
404 <para><command>ln -v -sf ...</command>: These commands are present to
405 enable other (broken) packages to build against
406 <application>Xorg</application>, even though the Filesystem Hierarchy
407 Standard says: <quote>In general, software must not be installed or
408 managed via the above symbolic links. They are intended for utilization
409 by users only.</quote></para>
410
411 </sect2>
412
413 <sect2 role="configuration" id='xorg-config'>
414 <title>Configuring Xorg</title>
415
416 <para>Edit <filename>/etc/ld.so.conf</filename> and add
417 <filename class="directory">/usr/X11R6/lib</filename>. Run:</para>
418
419 <indexterm zone="xorg xorg-config">
420 <primary sortas="e-etc-ld.so.conf">/etc/ld.so.conf</primary>
421 </indexterm>
422
423<screen role="root"><userinput>ldconfig</userinput></screen>
424
425 <para>Ensure <filename class="directory">/usr/X11R6/bin</filename>
426 and <filename class="directory">/usr/X11R6/lib/pkgconfig</filename>
427 are added to your <envar>PATH</envar> and <envar>PKG_CONFIG_PATH</envar>
428 environment variables, respectively. Instructions for doing this are
429 described in the section <xref linkend='postlfs-config-profile'/>.</para>
430
431 <para>Create the <filename>xorg.conf</filename> file with:</para>
432
433<screen><userinput>cd ~ &amp;&amp;
434Xorg -configure</userinput></screen>
435
436 <para>The screen will go black and you may hear some clicking of the monitor.
437 This command will create a file, <filename>xorg.conf.new</filename> in your
438 home directory.</para>
439
440 <indexterm zone="xorg xorg-config">
441 <primary sortas="e-etc-X11-xorg-conf">/etc/X11/xorg.conf</primary>
442 </indexterm>
443
444 <para>Edit <filename>xorg.conf.new</filename> to suit your system. The
445 details of the file are located in the xorg.conf man page. Some things
446 you may want to do are:</para>
447
448 <itemizedlist>
449 <listitem>
450 <para>Section "Files". Change the order of the font paths searched.
451 You may want to put 100dpi fonts ahead of 75dpi fonts if your system
452 normally comes up closer to 100 dots per inch. You may want to remove
453 some font directories completely.</para>
454 </listitem>
455 <listitem>
456 <para>Section "Module". If you are going to install NVidia
457 drivers, remove the "dri" line.</para>
458 </listitem>
459 <listitem>
460 <para>Sections "InputDevice". You may want to change the
461 keyboard autorepeat rate by adding
462 <option>Option "Autorepeat" "250 30"</option>.</para>
463 </listitem>
464 <listitem>
465 <para>Section "Monitor". Specify the <option>VertRefresh</option>
466 and <option>HorizSync</option> values if the system does not
467 automatically detect the monitor and its values.</para>
468 </listitem>
469 <listitem>
470 <para>Section "Device". You may want to set some of the options
471 available for your selected video driver. A description of the driver
472 parameters is in the man page for your driver.</para>
473 </listitem>
474 <listitem><para>Section "Screen". Add a DefaultDepth statement such as:
475 <option>DefaultDepth 24</option>. In the SubSection for your
476 default depth, add a modes line such as:
477 <option>Modes "1600x1200" "1280x1024" "1024x768"</option>. The first
478 mode listed will normally be the starting resolution.</para>
479 </listitem>
480 </itemizedlist>
481
482 <para>Test the system with:</para>
483
484<screen><userinput>X -config ~/xorg.conf.new</userinput></screen>
485
486 <para>You will only get a gray background with an X-shaped mouse cursor,
487 but it confirms the system is working. Exit with
488 <keycap>Control+Alt+Backspace</keycap>. If the system does not work, take
489 a look at <filename>/var/log/Xorg.0.log</filename> to see what went
490 wrong.</para>
491
492 <para>Move the configuration file to its final location:</para>
493
494<screen role="root"><userinput>mv ~/xorg.conf.new /etc/X11/xorg.conf</userinput></screen>
495
496 <para>Create <filename>.xinitrc</filename>:</para>
497
498<screen><userinput>cat &gt; ~/.xinitrc &lt;&lt; "EOF"
499<literal># Begin .xinitrc file
500xterm -g 80x40+0+0 &amp;
501xclock -g 100x100-0+0 &amp;
502twm</literal>
503EOF</userinput></screen>
504
505 <para>This provides an initial screen with an xterm and a clock that is
506 managed by a simple window manager, Tab Window Manager. For details of
507 <command>twm</command>, see the man page.</para>
508
509 <indexterm zone="xorg xorg-config">
510 <primary sortas="e-AA.xinitrc">~/.xinitrc</primary>
511 </indexterm>
512
513 <note>
514 <para>When needed, <application>Xorg</application> creates the directory
515 <filename>/tmp/.ICE-unix</filename> if it does not exist. If this
516 directory is not owned by <systemitem class="username">root</systemitem>,
517 <application>Xorg</application> delays startup by a few seconds and also
518 appends a warning to the logfile. This also affects startup of other
519 applications. To improve performance, it is advisable to manually create
520 the directory before <application>Xorg</application> uses it. Add the
521 file creation to <filename>/etc/sysconfig/createfiles</filename> that is
522 sourced by the <filename>/etc/rc.d/init.d/cleanfs</filename> startup
523 script.</para>
524
525<screen role="root"><userinput>cat &gt;&gt; /etc/sysconfig/createfiles &lt;&lt; "EOF"
526<literal>/tmp/.ICE-unix dir 1777 root root</literal>
527EOF</userinput></screen>
528
529 </note>
530
531 <indexterm zone="xorg xorg-config">
532 <primary
533 sortas="e-etc-sysconfig-createfiles">/etc/sysconfig/createfiles</primary>
534 </indexterm>
535
536 <para>Start <application>X</application> with:</para>
537
538<screen><userinput>startx</userinput></screen>
539
540 <para>to get a basic functional <application>X Window
541 System</application>.</para>
542
543 <para>At this point, you should check out <xref linkend='x-setup'/> for
544 the necessary configuration to make <application>X</application> fully
545 functional. Additionally, you can have a look at <xref linkend='x-config'/>
546 for information on fine tuning your <application>X</application>
547 configuration.</para>
548
549 <para>For a list of the package contents and a description of the commands,
550 see the sections in the <xref linkend='xfree86-contents'/>.</para>
551
552 </sect2>
553
554</sect1>
Note: See TracBrowser for help on using the repository browser.