source: x/installing/xorg.xml@ 6029a44

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.0 6.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 6029a44 was 6029a44, checked in by Igor Živković <igor@…>, 19 years ago

Added a sed command to suppress Xorg messing with /etc, contributed by Anderson Lizardo.

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

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