source: x/installing/xorg.xml@ d5d9ceb

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

Added instructions to comment out linux/config.h from the source video driver files and made various fixes to Xorg

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

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