mirror of
https://github.com/Zeckmathederg/glfs.git
synced 2025-01-27 18:02:12 +08:00
604355989a
The kernel-config.py script takes a toml file containing a set of kernel configuration key-value pairs. Then it parses the Kconfig files in a kernel source tree and render the given configuration as a LFS-style <screen> in a separate XML file. The XML file can be used in the book with xinclude. Some "features": 1. The lines are limited to 80 columns. If the text of the configuration option is too long, it will be trimmed; if the symbolic name of the option cannot fit in this line, a separate line will be used for it. 2. If a configuration option is given but it does not exist in Kconfig files, the script will abort immediately. This helps catching removed options. 3. The script also aborts immediately if a configuration option is illegal, for example setting an option to 'M' while it cannot be a module. 4. The infrastructure is not wired into the main Makefile. It's because not all editors have the latest kernel tree, and even if they do the locations of the kernel tree are still different. To update the generated XML files, use "make -C kernel-config KERNEL_TREE=/sources/linux-x.y.z". Backword incompatible change: The script no longer outputs "CONFIG_" prefix for the symbolic name. It really does not make too much sense to waste 7 characters here because it's a common prefix for all options! A limitation: The script does not really validate the configuration. Generally validating the configuration requires to solve the 3-CNF-SAT problem, which is NP-complete.
413 lines
14 KiB
XML
413 lines
14 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY % general-entities SYSTEM "../../general.ent">
|
|
%general-entities;
|
|
|
|
<!ENTITY xorg-server-download-http "&xorg-download-http;/xserver/xorg-server-&xorg-server-version;.tar.xz">
|
|
<!ENTITY xorg-server-download-ftp "&xorg-download-ftp;/xserver/xorg-server-&xorg-server-version;.tar.xz">
|
|
<!ENTITY xorg-server-md5sum "79a6eb04b1b17ad6c7aab46da73944e8">
|
|
<!ENTITY xorg-server-size "4.8 MB">
|
|
<!ENTITY xorg-server-buildsize "188 MB (with tests)">
|
|
<!ENTITY xorg-server-time "0.6 SBU (using parallelism=4; with tests)">
|
|
<!ENTITY modesetting_drv
|
|
"<filename class='libraryfile'>modesetting_drv</filename>">
|
|
<!ENTITY BLFS113 "https://www.linuxfromscratch.org/blfs/view/11.3/x/x7driver.html">
|
|
<!ENTITY BLFS76 "https://www.linuxfromscratch.org/blfs/view/7.6/x/x7driver.html">
|
|
]>
|
|
|
|
<sect1 id="xorg-server" xreflabel="Xorg-Server-&xorg-server-version;">
|
|
<?dbhtml filename="xorg-server.html"?>
|
|
|
|
|
|
<title>Xorg-Server-&xorg-server-version;</title>
|
|
|
|
<indexterm zone="xorg-server">
|
|
<primary sortas="a-xorg-server">xorg-server</primary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title>Introduction to Xorg Server</title>
|
|
|
|
<para>
|
|
The <application>Xorg</application> Server is the core
|
|
of the X Window system.
|
|
</para>
|
|
|
|
&lfs113_checked;
|
|
|
|
<bridgehead renderas="sect3">Package Information</bridgehead>
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&xorg-server-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download (FTP): <ulink url="&xorg-server-download-ftp;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download MD5 sum: &xorg-server-md5sum;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download size: &xorg-server-size;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated disk space required: &xorg-server-buildsize;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated build time: &xorg-server-time;
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
With the removal of the xf86-video-* drivers, the TearFree option
|
|
is no longer functional. To work around this, upstream has added the
|
|
TearFree option to the default modesetting driver. This patch
|
|
backports this feature. Apply this patch if you are going to use Xorg
|
|
in an environment without a compositor (such as TWM, IceWM, Openbox,
|
|
Fluxbox, or Sawfish).
|
|
</para>
|
|
<para>
|
|
Optional patch:
|
|
<ulink url="&patch-root;/xorg-server-&xorg-server-version;-tearfree_backport-1.patch"/>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">Xorg Server Dependencies</bridgehead>
|
|
|
|
<bridgehead renderas="sect4">Required</bridgehead>
|
|
<para role="required">
|
|
<xref linkend="libxcvt"/>,
|
|
<xref linkend="pixman"/>,
|
|
<xref linkend="xorg7-font"/> (only font-util), and at runtime:
|
|
<xref role="runtime" linkend="xkeyboard-config"/>
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Recommended</bridgehead>
|
|
<para role="recommended">
|
|
<phrase revision="sysv"><xref role="runtime"
|
|
linkend="elogind"/> (runtime),</phrase>
|
|
<xref linkend="libepoxy"/> (needed for glamor),
|
|
<xref linkend="libtirpc"/>,
|
|
<phrase revision="systemd"><xref role="runtime"
|
|
linkend="systemd"/> (runtime),</phrase>
|
|
and <xref role='runtime' linkend='xorg-libinput-driver'/> (runtime)
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Optional</bridgehead>
|
|
<para role="optional">
|
|
<xref role="runtime" linkend="acpid"/> (runtime),
|
|
<xref linkend="doxygen"/> (to build API documentation),
|
|
<xref linkend="fop"/> (to build documentation),
|
|
<xref linkend="libunwind"/>,
|
|
<xref linkend="nettle"/>,
|
|
<xref linkend="libgcrypt"/>,
|
|
<xref linkend="xcb-util-keysyms"/>,
|
|
<xref linkend="xcb-util-image"/>,
|
|
<xref linkend="xcb-util-renderutil"/>,
|
|
<xref linkend="xcb-util-wm"/> (all four to build Xephyr),
|
|
<xref linkend="xmlto"/> (to build documentation),
|
|
<xref linkend="xkeyboard-config"/> (for tests),
|
|
<ulink url="https://gitlab.freedesktop.org/xorg/test/rendercheck">rendercheck</ulink> (for tests), and
|
|
<ulink url="https://www.x.org/archive/individual/doc/">xorg-sgml-doctools</ulink> (to build documentation)
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 role="kernel" id="xorg-server-kernel">
|
|
<title>Kernel Configuration</title>
|
|
|
|
<para>
|
|
The traditional Device Dependant X (DDX) drivers have been removed
|
|
from BLFS in favor of the &modesetting_drv; driver which will be
|
|
built as a part of this package. To use the &modesetting_drv; driver,
|
|
the kernel must provide a Direct Rendering Manager (DRM) driver for
|
|
your GPU.
|
|
</para>
|
|
|
|
<para>
|
|
If your GPU supports 3D acceleration and <xref linkend='mesa'/>
|
|
provides a Gallium3D driver for utilizing its 3D capability, you
|
|
should have already enabled the necessary kernel configuration options
|
|
in <xref linkend='mesa-kernel'/>. Otherwise, you need to find the
|
|
kernel configuration option of the DRM driver for the GPU and enable
|
|
it. Notably, the virtual GPUs provided by some virtual machine
|
|
managers:
|
|
</para>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
href="xorg-server-kernel.xml"/>
|
|
|
|
<para>
|
|
If the kernel does not provide a DRM driver for your GPU, on most x86
|
|
systems the <quote>simple frame buffer</quote> DRM driver running on
|
|
VESA or UEFI frame buffer can be used as a fallback. Enable the
|
|
following options in the kernel configurations if you don't have a
|
|
dedicated DRM driver for the GPU, or you want to keep the simple
|
|
frame buffer driver as a fallback in case the dedicated driver fails:
|
|
</para>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
href="xorg-server-simpledrm-kernel.xml"/>
|
|
|
|
<para>
|
|
To allow the kernel to print debug messages at an early boot stage,
|
|
<option>CONFIG_DRM</option> and <option>CONFIG_DRM_SIMPLEDRM</option>
|
|
should not be built as kernel modules unless an initramfs will be
|
|
used.
|
|
</para>
|
|
|
|
<para>
|
|
If you want to use the simple frame buffer driver on a system booted
|
|
via BIOS (instead of UEFI), add the following line before the first
|
|
<literal>menuentry</literal> block in the
|
|
<filename>/boot/grub/grub.cfg</filename> file to initialize the VESA
|
|
frame buffer:
|
|
</para>
|
|
|
|
<screen><literal>set gfxpayload=<replaceable>1024x768x32</replaceable></literal></screen>
|
|
|
|
<para>
|
|
You may replace <literal>1024</literal>, <literal>768</literal>, and
|
|
<literal>32</literal> with a resolution and color depth setting
|
|
suitable for your monitor.
|
|
</para>
|
|
|
|
<para>
|
|
If all of these DRM drivers do not work for you and you need to use
|
|
a DDX driver with a non-DRM kernel GPU driver (usually named
|
|
<option>CONFIG_FB_*</option> in the kernel configuration, or existing
|
|
as out-tree kernel modules), or you need an device specific
|
|
functionality requiring a DDX driver, consult
|
|
<ulink url="&BLFS113;">a prior version of BLFS</ulink>, or
|
|
<ulink url="&BLFS76;">an even prior version</ulink> for more DDX
|
|
drivers.
|
|
</para>
|
|
|
|
<indexterm zone="xorg-server xorg-server-kernel">
|
|
<primary sortas="d-xorg-server">xorg-server</primary>
|
|
</indexterm>
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of Xorg Server</title>
|
|
|
|
<para>
|
|
First, if you need the TearFree option to work around screen tearing,
|
|
apply the backported patch:
|
|
</para>
|
|
|
|
<screen><userinput remap="pre">patch -Np1 -i ../xorg-server-&xorg-server-version;-tearfree_backport-1.patch</userinput></screen>
|
|
|
|
<para>
|
|
Install the server by running the following commands:
|
|
</para>
|
|
|
|
<screen><userinput>mkdir build &&
|
|
cd build &&
|
|
|
|
meson setup .. \
|
|
--prefix=$XORG_PREFIX \
|
|
--localstatedir=/var \
|
|
-Dglamor=true \
|
|
-Dxkb_output_dir=/var/lib/xkb &&
|
|
ninja</userinput></screen>
|
|
|
|
<para>
|
|
To test the results, issue: <command>ninja test</command>. You
|
|
will need to run <command>ldconfig</command> as the <systemitem
|
|
class="username">root</systemitem> user first or some tests may fail.
|
|
</para>
|
|
|
|
<para>
|
|
Now as the <systemitem class="username">root</systemitem>
|
|
user:
|
|
</para>
|
|
|
|
<screen role="root" revision="sysv"><userinput>ninja install &&
|
|
mkdir -pv /etc/X11/xorg.conf.d &&
|
|
install -v -d -m1777 /tmp/.{ICE,X11}-unix &&
|
|
cat >> /etc/sysconfig/createfiles << "EOF"
|
|
<literal>/tmp/.ICE-unix dir 1777 root root
|
|
/tmp/.X11-unix dir 1777 root root</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<screen role="root" revision="systemd"><userinput>ninja install &&
|
|
mkdir -pv /etc/X11/xorg.conf.d</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="commands">
|
|
<title>Command Explanations</title>
|
|
|
|
<para>
|
|
<parameter>-Dglamor=true</parameter>: Ensure building the Glamor
|
|
module. It's needed to build the &modesetting_drv; driver
|
|
which replaces the traditional Device Dependant X (DDX) drivers.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-Dsuid_wrapper=true</option>: Builds the suid-root
|
|
wrapper for legacy DDX driver support on rootless xserver systems.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-Dsystemd_logind=false</option>:
|
|
This switch disables <phrase revision="systemd">systemd-logind</phrase>
|
|
<phrase revision="sysv">elogind</phrase> integration, allowing Xorg Server
|
|
to work without having the <phrase revision="systemd">systemd</phrase>
|
|
<phrase revision="elogind">elogind</phrase> PAM module configured.
|
|
</para>
|
|
|
|
<para revision="sysv">
|
|
<command>cat >> /etc/sysconfig/createfiles...</command>: This
|
|
command creates the <filename class="directory">/tmp/.ICE-unix</filename>
|
|
and <filename class="directory">/tmp/.X11-unix</filename> directories at
|
|
startup, and ensures that the permissions and ownership are correct as
|
|
required by the server.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-Dxephyr=true</option>: This option allows building Xephyr if its
|
|
dependencies are met.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="content">
|
|
<title>Contents</title>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Installed Programs</segtitle>
|
|
<segtitle>Installed Libraries</segtitle>
|
|
<segtitle>Installed Directories</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>
|
|
gtf, X, Xnest, Xorg, Xvfb, and optionally Xephyr
|
|
</seg>
|
|
<seg>
|
|
several under $XORG_PREFIX/lib/xorg/modules/ including the
|
|
&modesetting_drv; driver
|
|
</seg>
|
|
<seg>
|
|
/etc/X11/xorg.conf.d,
|
|
$XORG_PREFIX/include/xorg,
|
|
$XORG_PREFIX/lib/xorg, and
|
|
$XORG_PREFIX/share/X11/xorg.conf.d
|
|
</seg>
|
|
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
<variablelist>
|
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
|
<?dbfo list-presentation="list"?>
|
|
<?dbhtml list-presentation="table"?>
|
|
|
|
<varlistentry id="gtf-x7">
|
|
<term><command>gtf</command></term>
|
|
<listitem>
|
|
<para>
|
|
calculates VESA GTF mode lines
|
|
</para>
|
|
<indexterm zone="xorg-server gtf-x7">
|
|
<primary sortas="b-gtf">gtf</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="X-x7">
|
|
<term><command>X</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a symbolic link to Xorg
|
|
</para>
|
|
<indexterm zone="xorg-server X-x7">
|
|
<primary sortas="b-X">X</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="Xephyr-x7">
|
|
<term><command>Xephyr</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a nested X server which supports modern X extensions
|
|
</para>
|
|
<indexterm zone="xorg-server Xephyr-x7">
|
|
<primary sortas="b-Xephyr">Xephyr</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="Xnest-x7">
|
|
<term><command>Xnest</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a nested X server
|
|
</para>
|
|
<indexterm zone="xorg-server Xnest-x7">
|
|
<primary sortas="b-Xnest">Xnest</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="Xorg-x7">
|
|
<term><command>Xorg</command></term>
|
|
<listitem>
|
|
<para>
|
|
is the X11R7 X Server
|
|
</para>
|
|
<indexterm zone="xorg-server Xorg-x7">
|
|
<primary sortas="b-Xorg">Xorg</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="Xvfb-x7">
|
|
<term><command>Xvfb</command></term>
|
|
<listitem>
|
|
<para>
|
|
is the virtual framebuffer X server for X Version 11
|
|
</para>
|
|
<indexterm zone="xorg-server Xvfb-x7">
|
|
<primary sortas="b-Xvfb">Xvfb</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="modesetting_drv-x7">
|
|
<term><filename class="libraryfile">modesetting_drv.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides a video driver for machines using Kernel Mode Setting (KMS).
|
|
This will use glamor if that has been enabled and the hardware offers
|
|
acceleration
|
|
</para>
|
|
<indexterm zone="xorg-server modesetting_drv-x7">
|
|
<primary sortas="c-modesetting_drv">modesetting_drv.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|