source: x/installing/xorg.xml@ df4e00d

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

Added pkgconfig as an optional dependency of XFree86 and Xorg

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