Index: bootscripts/alpha-chapter.xml
===================================================================
--- bootscripts/alpha-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/alpha-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/common/network.xml
===================================================================
--- bootscripts/common/network.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/common/network.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -25,4 +25,90 @@
 
   <sect2>
+    <title>Creating stable names for network interfaces</title>
+
+    <para>Instructions in this section are optional if you have only one
+    network card.</para>
+
+    <para>With Udev and modular network drivers, the network interface numbering
+    is not persistent across reboots by default, because the drivers are loaded
+    in parallel and, thus, in random order. For example, on a computer having
+    two network cards made by Intel and Realtek, the network card manufactured
+    by Intel may become <filename class="devicefile">eth0</filename> and the
+    Realtek card becomes  <filename class="devicefile">eth1</filename>. In some
+    cases, after a reboot the cards get renumbered the other way around. To
+    avoid this, create Udev rules that assign stable names to network cards
+    based on their MAC addresses or bus positions.</para>
+
+    <para>If you are going to use MAC addresses to identify your network
+    cards, find the addresses with the following command:</para>
+
+<screen role="nodump"><userinput>grep -H . /sys/class/net/*/address</userinput></screen>
+
+    <para>For each network card (but not for the loopback interface),
+    invent a descriptive name, such as <quote>realtek</quote>, and create
+    Udev rules similar to the following:</para>
+
+<screen role="nodump"><userinput>cat &gt; /etc/udev/rules.d/26-network.rules &lt;&lt; EOF
+<literal>ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="<replaceable>00:e0:4c:12:34:56</replaceable>", \
+    NAME="<replaceable>realtek</replaceable>"
+ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="<replaceable>00:a0:c9:78:9a:bc</replaceable>", \
+    NAME="<replaceable>intel</replaceable>"</literal>
+EOF</userinput></screen>
+
+<!-- Yes, I know that VLANs are beyond BLFS. This is not the reason to get them
+     incorrect by default when every distro does this right. -->
+
+    <note>
+      <para>Although the examples in this book work properly, be aware
+      that Udev does not recognize the backslash for line continuation.
+      If modifying Udev rules with an editor, be sure to leave each rule
+      on one physical line.</para>
+    </note>
+
+    <para>If you are going to use the bus position as a key, create
+    Udev rules similar to the following:</para>
+
+<screen role="nodump"><userinput>cat &gt; /etc/udev/rules.d/26-network.rules &lt;&lt; EOF
+<literal>ACTION=="add", SUBSYSTEM=="net", BUS=="<replaceable>pci</replaceable>", ID=="<replaceable>0000:00:0c.0</replaceable>", \
+    NAME="<replaceable>realtek</replaceable>"
+ACTION=="add", SUBSYSTEM=="net", BUS=="<replaceable>pci</replaceable>", ID=="<replaceable>0000:00:0d.0</replaceable>", \
+    NAME="<replaceable>intel</replaceable>"</literal>
+EOF</userinput></screen>
+
+    <para>These rules will always rename the network cards to
+    <quote>realtek</quote> and <quote>intel</quote>, independently
+    of the original numbering provided by the kernel (i.e.: the original
+    <quote>eth0</quote> and <quote>eth1</quote> interfaces will no longer
+    exist, unless you put such <quote>descriptive</quote> names in the NAME
+    key). Use the descriptive names from the Udev rules instead
+    of <quote>eth0</quote> in the network interface configuration files
+    below.</para>
+
+    <para>Note that the rules above don't work for every setup. For example,
+    MAC-based rules break when bridges or VLANs are used, because bridges and
+    VLANs have the same MAC address as the network card. One wants to rename
+    only the network card interface, not the bridge or VLAN interface, but the
+    example rule matches both. If you use such virtual interfaces, you have two
+    potential solutions. One is to add the DRIVER=="?*" key after
+    SUBSYSTEM=="net" in MAC-based rules which will stop matching the virtual
+    interfaces.  This is known to fail with some older Ethernet cards because
+    they don't have the DRIVER variable in the uevent and thus the rule does
+    not match with such cards. Another solution is to switch to rules that use
+    the bus position as a key.</para>
+
+    <para>The second known non-working case is with wireless cards using the
+    MadWifi or HostAP drivers, because they create at least two interfaces with
+    the same MAC address and bus position. For example, the Madwifi driver
+    creates both an athX and a wifiX interface where X is a digit.  To
+    differentiate these interfaces, add an appropriate KERNEL parameter such as
+    KERNEL=="ath*" after SUBSYSTEM=="net".</para>
+
+    <para>There may be other cases where the rules above don't work. Currently,
+    bugs on this topic are still being reported to Linux distributions, and no
+    solution that covers every case is available.</para>
+
+  </sect2>
+
+  <sect2>
     <title>Creating Network Interface Configuration Files</title>
 
@@ -33,9 +119,9 @@
     configured, such as <filename>ifconfig.xyz</filename>, where
     <quote>xyz</quote> is a network interface name. Inside this directory
-    would be files defining the attributes to this interface, such as its
-    IP address(es), subnet masks, and so forth.</para>
+    would be files defining the attributes to this interface, such as its IP
+    address(es), subnet masks, and so forth.</para>
 
     <para>The following command creates a sample <filename>ipv4</filename>
-    file for the <filename class="devicefile">eth0</filename> device:</para>
+    file for the <emphasis>eth0</emphasis> device:</para>
 
 <screen><userinput>cd /etc/sysconfig/network-devices &amp;&amp;
@@ -50,10 +136,10 @@
 EOF</userinput></screen>
 
-    <para>The values of these variables must be changed in every file to
-    match the proper setup. If the <envar>ONBOOT</envar> variable is
-    set to <quote>yes</quote> the network script will bring up the
-    Network Interface Card (NIC) during booting of the system. If set
-    to anything but <quote>yes</quote> the NIC will be ignored by the
-    network script and not brought up.</para>
+    <para>The values of these variables must be changed in every file to match
+    the proper setup. If the <envar>ONBOOT</envar> variable is set to
+    <quote>yes</quote> the network script will bring up the Network Interface
+    Card (NIC) during booting of the system. If set to anything but
+    <quote>yes</quote> the NIC will be ignored by the network script and not
+    be brought up.</para>
 
     <para>The <envar>SERVICE</envar> variable defines the method used for
@@ -61,7 +147,7 @@
     assignment format, and creating additional files in the <filename
     class="directory">/etc/sysconfig/network-devices/services</filename>
-    directory allows other IP assignment methods. This is commonly used
-    for Dynamic Host Configuration Protocol (DHCP), which is addressed in
-    the BLFS book.</para>
+    directory allows other IP assignment methods. This is commonly used for
+    Dynamic Host Configuration Protocol (DHCP), which is addressed in the
+    BLFS book.</para>
 
     <para>The <envar>GATEWAY</envar> variable should contain the default
@@ -69,13 +155,12 @@
     variable entirely.</para>
 
-    <para>The <envar>PREFIX</envar> variable needs to contain the number
-    of bits used in the subnet. Each octet in an IP address is 8 bits.
-    If the subnet's netmask is 255.255.255.0, then it is using the first
-    three octets (24 bits) to specify the network number. If the netmask
-    is 255.255.255.240, it would be using the first 28 bits. Prefixes
-    longer than 24 bits are commonly used by DSL and cable-based Internet
-    Service Providers (ISPs). In this example (PREFIX=24), the netmask is
-    255.255.255.0. Adjust the <envar>PREFIX</envar> variable according to
-    your specific subnet.</para>
+    <para>The <envar>PREFIX</envar> variable needs to contain the number of
+    bits used in the subnet. Each octet in an IP address is 8 bits. If the
+    subnet's netmask is 255.255.255.0, then it is using the first three octets
+    (24 bits) to specify the network number. If the netmask is 255.255.255.240,
+    it would be using the first 28 bits.  Prefixes longer than 24 bits are
+    commonly used by DSL and cable-based Internet Service Providers (ISPs).
+    In this example (PREFIX=24), the netmask is 255.255.255.0. Adjust the
+    <envar>PREFIX</envar> variable according to your specific subnet.</para>
 
   </sect2>
@@ -89,9 +174,10 @@
 
     <para>If the system is going to be connected to the Internet, it will
-    need some means of Domain Name Service (DNS) name resolution to resolve
-    Internet domain names to IP addresses, and vice versa. This is best
-    achieved by placing the IP address of the DNS server, available from
-    the ISP or network administrator, into <filename>/etc/resolv.conf</filename>.
-    Create the file by running the following:</para>
+    need some means of Domain Name Service (DNS) name resolution to
+    resolve Internet domain names to IP addresses, and vice versa. This is
+    best achieved by placing the IP address of the DNS server, available
+    from the ISP or network administrator, into
+    <filename>/etc/resolv.conf</filename>. Create the file by running the
+    following:</para>
 
 <screen><userinput>cat &gt; /etc/resolv.conf &lt;&lt; "EOF"
Index: bootscripts/common/symlinks.xml
===================================================================
--- bootscripts/common/symlinks.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
+++ bootscripts/common/symlinks.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-symlinks">
+  <?dbhtml filename="symlinks.html"?>
+
+  <title>Creating custom symlinks to devices</title>
+
+  <sect2>
+
+    <title>CD-ROM symlinks</title>
+
+    <para>Some software that you may want to install later (e.g., various
+    media players) expect the /dev/cdrom and /dev/dvd symlinks to exist.
+    Also, it may be convenient to put references to those symlinks into
+    <filename>/etc/fstab</filename>. For each of your CD-ROM devices,
+    find the corresponding directory under
+    <filename class="directory">/sys</filename> (e.g., this can be
+    <filename class="directory">/sys/block/hdd</filename>) and
+    run a command similar to the following:</para>
+
+<screen role="nodump"><userinput>udevtest /block/hdd</userinput></screen>
+
+    <para>Look at the lines containing the output of various *_id programs.</para>
+
+    <para>There are two approaches to creating symlinks. The first one is to
+    use the model name and the serial number, the second one is based on the
+    location of the device on the bus. If you are going to use the first
+    approach, create a file similar to the following:</para>
+
+<screen role="nodump"><userinput>cat &gt;/etc/udev/rules.d/82-cdrom.rules &lt;&lt; EOF
+<literal>
+# Custom CD-ROM symlinks
+SUBSYSTEM=="block", ENV{ID_MODEL}=="SAMSUNG_CD-ROM_SC-148F", \
+    ENV{ID_REVISION}=="PS05", SYMLINK+="cdrom"
+SUBSYSTEM=="block", ENV{ID_MODEL}=="PHILIPS_CDD5301", \
+    ENV{ID_SERIAL}=="5VO1306DM00190", SYMLINK+="cdrom1 dvd"
+</literal>
+EOF</userinput></screen>
+
+    <note>
+      <para>Although the examples in this book work properly, be aware
+      that Udev does not recognize the backslash for line continuation.
+      If modifying Udev rules with an editor, be sure to leave each rule
+      on one physical line.</para>
+    </note>
+
+    <para>This way, the symlinks will stay correct even if you move the drives
+    to different positions on the IDE bus, but the
+    <filename>/dev/cdrom</filename> symlink won't be created if you replace
+    the old SAMSUNG CD-ROM with a new drive.</para>
+<!-- The symlinks in the first approach survive even the transition
+     to libata for IDE drives, but that is not for the book. -->
+
+    <para>The SUBSYSTEM==&quot;block&quot; key is needed in order to avoid
+    matching SCSI generic devices. Without it, in the case with SCSI
+    CD-ROMs, the symlinks will sometimes point to the correct
+    <filename>/dev/srX</filename> devices, and sometimes to
+    <filename>/dev/sgX</filename>, which is wrong.</para>
+
+    <para>The second approach yields:</para>
+
+<screen role="nodump"><userinput>cat &gt;/etc/udev/rules.d/82-cdrom.rules &lt;&lt; EOF
+<literal>
+# Custom CD-ROM symlinks
+SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", \
+    ENV{ID_PATH}=="pci-0000:00:07.1-ide-0:1", SYMLINK+="cdrom"
+SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", \
+    ENV{ID_PATH}=="pci-0000:00:07.1-ide-1:1", SYMLINK+="cdrom1 dvd"
+</literal>
+EOF</userinput></screen>
+
+    <para>This way, the symlinks will stay correct even if you replace drives
+    with different models, but place them to the old positions on the IDE
+    bus. The ENV{ID_TYPE}==&quot;cd&quot; key makes sure that the symlink
+    disappears if you put something other than a CD-ROM in that position on
+    the bus.</para>
+
+    <para>Of course, it is possible to mix the two approaches.</para>
+
+  </sect2>
+
+  <sect2>
+
+    <title>Dealing with duplicate devices</title>
+
+    <para>As explained in <xref linkend="ch-scripts-udev"/>, the order in
+    which devices with the same function appear in
+    <filename class="directory">/dev</filename> is essentially random.
+    E.g., if you have a USB web camera and a TV tuner, sometimes
+    <filename>/dev/video0</filename> refers to the camera and
+    <filename>/dev/video1</filename> refers to the tuner, and sometimes
+    after a reboot the order changes to the opposite one.
+    For all classes of hardware except sound cards and network cards, this is
+    fixable by creating udev rules for custom persistent symlinks.
+    The case of network cards is covered separately in
+    <xref linkend="ch-scripts-network"/>, and sound card configuration can
+    be found in <ulink url="&blfs-root;">BLFS</ulink>.</para>
+
+    <para>For each of your devices that is likely to have this problem
+    (even if the problem doesn't exist in your current Linux distribution),
+    find the corresponding directory under
+    <filename class="directory">/sys/class</filename> or
+    <filename class="directory">/sys/block</filename>.
+    For video devices, this may be
+    <filename
+    class="directory">/sys/class/video4linux/video<replaceable>X</replaceable></filename>.
+    Figure out the attributes that identify the device uniquely (usually,
+    vendor and product IDs and/or serial numbers work):</para>
+
+<screen role="nodump"><userinput>udevinfo -a -p /sys/class/video4linux/video0</userinput></screen>
+
+    <para>Then write rules that create the symlinks, e.g.:</para>
+
+<screen role="nodump"><userinput>cat &gt;/etc/udev/rules.d/83-duplicate_devs.rules &lt;&lt; EOF
+<literal>
+# Persistent symlinks for webcam and tuner
+KERNEL=="video*", SYSFS{idProduct}=="1910", SYSFS{idVendor}=="0d81", \
+    SYMLINK+="webcam"
+KERNEL=="video*", SYSFS{device}=="0x036f", SYSFS{vendor}=="0x109e", \
+    SYMLINK+="tvtuner"
+</literal>
+EOF</userinput></screen>
+
+    <para>The result is that <filename>/dev/video0</filename> and
+    <filename>/dev/video1</filename> devices still refer randomly to the tuner
+    and the web camera (and thus should never be used directly), but there are
+    symlinks <filename>/dev/tvtuner</filename> and
+    <filename>/dev/webcam</filename> that always point to the correct
+    device.</para>
+
+    <para>More information on writing Udev rules can be found in
+    <filename>/usr/share/doc/udev-&udev-version;/index.html</filename>.</para>
+
+ </sect2>
+
+</sect1>
Index: bootscripts/common/udev.xml
===================================================================
--- bootscripts/common/udev.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/common/udev.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -2,5 +2,5 @@
 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
   "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
-  <!ENTITY % general-entities SYSTEM "../general.ent">
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
   %general-entities;
 ]>
@@ -9,5 +9,5 @@
   <?dbhtml filename="udev.html"?>
 
-  <title>Device and Module Handling on an LFS System</title>
+  <title>Device and Module Handling on a CLFS System</title>
 
   <indexterm zone="ch-scripts-udev">
@@ -131,5 +131,5 @@
       determined by rules specified in the files within the <filename
       class="directory">/etc/udev/rules.d/</filename> directory. These are
-      numbered in a similar fashion to the LFS-Bootscripts package. If
+      numbered in a similar fashion to the CLFS-Bootscripts package. If
       <command>udevd</command> can't find a rule for the device it is creating,
       it will default permissions to <emphasis>660</emphasis> and ownership to
@@ -155,5 +155,5 @@
       might contain the string
       <quote>pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</quote>.
-      The rules that LFS installs will cause <command>udevd</command> to call
+      The rules that CLFS installs will cause <command>udevd</command> to call
       out to <command>/sbin/modprobe</command> with the contents of the
       <envar>MODALIAS</envar> uevent environment variable (that should be the
@@ -281,5 +281,5 @@
       <systemitem class="filesystem">sysfs</systemitem> attribute and appending
       it to the <filename>/etc/udev/rules.d/10-wait_for_sysfs.rules</filename>
-      file. Please notify the LFS Development list if you do so and it
+      file. Please notify the CLFS Development list if you do so and it
       helps.</para>
 
Index: bootscripts/mips-chapter.xml
===================================================================
--- bootscripts/mips-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/mips-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/mips64-chapter.xml
===================================================================
--- bootscripts/mips64-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/mips64-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/ppc-chapter.xml
===================================================================
--- bootscripts/ppc-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/ppc-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/ppc64-chapter.xml
===================================================================
--- bootscripts/ppc64-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/ppc64-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/sparc-chapter.xml
===================================================================
--- bootscripts/sparc-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/sparc-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/sparc64-chapter.xml
===================================================================
--- bootscripts/sparc64-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/sparc64-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/x86-chapter.xml
===================================================================
--- bootscripts/x86-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/x86-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: bootscripts/x86_64-chapter.xml
===================================================================
--- bootscripts/x86_64-chapter.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ bootscripts/x86_64-chapter.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -24,4 +24,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hostname.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hosts.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/symlinks.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/network.xml"/>
 
Index: introduction/common/changelog.xml
===================================================================
--- introduction/common/changelog.xml	(revision d0ed88e86bfbd100c07d9eaea41d09c09a686dcf)
+++ introduction/common/changelog.xml	(revision 948056c1c8eb4e3455929ee21e4165f1f58ccfe5)
@@ -38,4 +38,15 @@
 
     <listitem>
+      <para>August 7, 2006</para>
+      <itemizedlist>
+        <listitem>
+          <para>[Chris] - Updated udev explanatory text in the book and added
+          "Custom Symlinks" page, taken from LFS. Thanks to Alexander Patrakov
+          for the updated text (fixes ticket #75).</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
       <para>August 3, 2006</para>
       <itemizedlist>
